Initial load
diff --git a/jdk/make/ASSEMBLY_EXCEPTION b/jdk/make/ASSEMBLY_EXCEPTION
new file mode 100644
index 0000000..8b7ac1d
--- /dev/null
+++ b/jdk/make/ASSEMBLY_EXCEPTION
@@ -0,0 +1,27 @@
+
+OPENJDK ASSEMBLY EXCEPTION
+
+The OpenJDK source code made available by Sun at openjdk.java.net and
+openjdk.dev.java.net ("OpenJDK Code") is distributed under the terms of the
+GNU General Public License <http://www.gnu.org/copyleft/gpl.html> version 2
+only ("GPL2"), with the following clarification and special exception.
+
+ Linking this OpenJDK Code statically or dynamically with other code
+ is making a combined work based on this library. Thus, the terms
+ and conditions of GPL2 cover the whole combination.
+
+ As a special exception, Sun gives you permission to link this
+ OpenJDK Code with certain code licensed by Sun as indicated at
+ http://openjdk.java.net/legal/exception-modules-2007-05-08.html
+ ("Designated Exception Modules") to produce an executable,
+ regardless of the license terms of the Designated Exception Modules,
+ and to copy and distribute the resulting executable under GPL2,
+ provided that the Designated Exception Modules continue to be
+ governed by the licenses under which they were offered by Sun.
+
+As such, it allows licensees and sublicensees of Sun's GPL2 OpenJDK Code to
+build an executable that includes those portions of necessary code that Sun
+could not provide under GPL2 (or that Sun has provided under GPL2 with the
+Classpath exception). If you modify or add to the OpenJDK code, that new
+GPL2 code may still be combined with Designated Exception Modules if the
+new code is made subject to this exception by its copyright holder.
diff --git a/jdk/make/LICENSE b/jdk/make/LICENSE
new file mode 100644
index 0000000..eeab58c
--- /dev/null
+++ b/jdk/make/LICENSE
@@ -0,0 +1,347 @@
+The GNU General Public License (GPL)
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it. By contrast, the GNU General Public License is intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users. This General Public License applies to
+most of the Free Software Foundation's software and to any other program whose
+authors commit to using it. (Some other Free Software Foundation software is
+covered by the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom to
+distribute copies of free software (and charge for this service if you wish),
+that you receive source code or can get it if you want it, that you can change
+the software or use pieces of it in new free programs; and that you know you
+can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny
+you these rights or to ask you to surrender the rights. These restrictions
+translate to certain responsibilities for you if you distribute copies of the
+software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for
+a fee, you must give the recipients all the rights that you have. You must
+make sure that they, too, receive or can get the source code. And you must
+show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2)
+offer you this license which gives you legal permission to copy, distribute
+and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software. If the
+software is modified by someone else and passed on, we want its recipients to
+know that what they have is not the original, so that any problems introduced
+by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We
+wish to avoid the danger that redistributors of a free program will
+individually obtain patent licenses, in effect making the program proprietary.
+To prevent this, we have made it clear that any patent must be licensed for
+everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice
+placed by the copyright holder saying it may be distributed under the terms of
+this General Public License. The "Program", below, refers to any such program
+or work, and a "work based on the Program" means either the Program or any
+derivative work under copyright law: that is to say, a work containing the
+Program or a portion of it, either verbatim or with modifications and/or
+translated into another language. (Hereinafter, translation is included
+without limitation in the term "modification".) Each licensee is addressed as
+"you".
+
+Activities other than copying, distribution and modification are not covered by
+this License; they are outside its scope. The act of running the Program is
+not restricted, and the output from the Program is covered only if its contents
+constitute a work based on the Program (independent of having been made by
+running the Program). Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as
+you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this License
+and to the absence of any warranty; and give any other recipients of the
+Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may
+at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus
+forming a work based on the Program, and copy and distribute such modifications
+or work under the terms of Section 1 above, provided that you also meet all of
+these conditions:
+
+ a) You must cause the modified files to carry prominent notices stating
+ that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in whole or
+ in part contains or is derived from the Program or any part thereof, to be
+ licensed as a whole at no charge to all third parties under the terms of
+ this License.
+
+ c) If the modified program normally reads commands interactively when run,
+ you must cause it, when started running for such interactive use in the
+ most ordinary way, to print or display an announcement including an
+ appropriate copyright notice and a notice that there is no warranty (or
+ else, saying that you provide a warranty) and that users may redistribute
+ the program under these conditions, and telling the user how to view a copy
+ of this License. (Exception: if the Program itself is interactive but does
+ not normally print such an announcement, your work based on the Program is
+ not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Program, and can be reasonably
+considered independent and separate works in themselves, then this License, and
+its terms, do not apply to those sections when you distribute them as separate
+works. But when you distribute the same sections as part of a whole which is a
+work based on the Program, the distribution of the whole must be on the terms
+of this License, whose permissions for other licensees extend to the entire
+whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise the
+right to control the distribution of derivative or collective works based on
+the Program.
+
+In addition, mere aggregation of another work not based on the Program with the
+Program (or with a work based on the Program) on a volume of a storage or
+distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may copy and distribute the Program (or a work based on it, under
+Section 2) in object code or executable form under the terms of Sections 1 and
+2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable source
+ code, which must be distributed under the terms of Sections 1 and 2 above
+ on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three years, to
+ give any third party, for a charge no more than your cost of physically
+ performing source distribution, a complete machine-readable copy of the
+ corresponding source code, to be distributed under the terms of Sections 1
+ and 2 above on a medium customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer to
+ distribute corresponding source code. (This alternative is allowed only
+ for noncommercial distribution and only if you received the program in
+ object code or executable form with such an offer, in accord with
+ Subsection b above.)
+
+The source code for a work means the preferred form of the work for making
+modifications to it. For an executable work, complete source code means all
+the source code for all modules it contains, plus any associated interface
+definition files, plus the scripts used to control compilation and installation
+of the executable. However, as a special exception, the source code
+distributed need not include anything that is normally distributed (in either
+source or binary form) with the major components (compiler, kernel, and so on)
+of the operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the source
+code from the same place counts as distribution of the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as
+expressly provided under this License. Any attempt otherwise to copy, modify,
+sublicense or distribute the Program is void, and will automatically terminate
+your rights under this License. However, parties who have received copies, or
+rights, from you under this License will not have their licenses terminated so
+long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it.
+However, nothing else grants you permission to modify or distribute the Program
+or its derivative works. These actions are prohibited by law if you do not
+accept this License. Therefore, by modifying or distributing the Program (or
+any work based on the Program), you indicate your acceptance of this License to
+do so, and all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program),
+the recipient automatically receives a license from the original licensor to
+copy, distribute or modify the Program subject to these terms and conditions.
+You may not impose any further restrictions on the recipients' exercise of the
+rights granted herein. You are not responsible for enforcing compliance by
+third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues), conditions
+are imposed on you (whether by court order, agreement or otherwise) that
+contradict the conditions of this License, they do not excuse you from the
+conditions of this License. If you cannot distribute so as to satisfy
+simultaneously your obligations under this License and any other pertinent
+obligations, then as a consequence you may not distribute the Program at all.
+For example, if a patent license would not permit royalty-free redistribution
+of the Program by all those who receive copies directly or indirectly through
+you, then the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply and
+the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or
+other property right claims or to contest validity of any such claims; this
+section has the sole purpose of protecting the integrity of the free software
+distribution system, which is implemented by public license practices. Many
+people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose that
+choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain
+countries either by patents or by copyrighted interfaces, the original
+copyright holder who places the Program under this License may add an explicit
+geographical distribution limitation excluding those countries, so that
+distribution is permitted only in or among countries not thus excluded. In
+such case, this License incorporates the limitation as if written in the body
+of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the
+General Public License from time to time. Such new versions will be similar in
+spirit to the present version, but may differ in detail to address new problems
+or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any later
+version", you have the option of following the terms and conditions either of
+that version or of any later version published by the Free Software Foundation.
+If the Program does not specify a version number of this License, you may
+choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission. For software which is copyrighted by the Free Software Foundation,
+write to the Free Software Foundation; we sometimes make exceptions for this.
+Our decision will be guided by the two goals of preserving the free status of
+all derivatives of our free software and of promoting the sharing and reuse of
+software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
+PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
+YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
+PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
+BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
+OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible
+use to the public, the best way to achieve this is to make it free software
+which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to attach
+them to the start of each source file to most effectively convey the exclusion
+of warranty; and each file should have at least the "copyright" line and a
+pointer to where the full notice is found.
+
+ One line to give the program's name and a brief idea of what it does.
+
+ Copyright (C) <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 2 of the License, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc., 59
+ Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it
+starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
+ with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free
+ software, and you are welcome to redistribute it under certain conditions;
+ type 'show c' for details.
+
+The hypothetical commands 'show w' and 'show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may be
+called something other than 'show w' and 'show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the program, if necessary. Here
+is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ 'Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ signature of Ty Coon, 1 April 1989
+
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General Public
+License instead of this License.
+
+
+"CLASSPATH" EXCEPTION TO THE GPL
+
+Certain source files distributed by Sun Microsystems, Inc. are subject to
+the following clarification and special exception to the GPL, but only where
+Sun has expressly included in the particular source file's header the words
+"Sun designates this particular file as subject to the "Classpath" exception
+as provided by Sun in the LICENSE file that accompanied this code."
+
+ Linking this library statically or dynamically with other modules is making
+ a combined work based on this library. Thus, the terms and conditions of
+ the GNU General Public License cover the whole combination.
+
+ As a special exception, the copyright holders of this library give you
+ permission to link this library with independent modules to produce an
+ executable, regardless of the license terms of these independent modules,
+ and to copy and distribute the resulting executable under terms of your
+ choice, provided that you also meet, for each linked independent module,
+ the terms and conditions of the license of that module. An independent
+ module is a module which is not derived from or based on this library. If
+ you modify this library, you may extend this exception to your version of
+ the library, but you are not obligated to do so. If you do not wish to do
+ so, delete this exception statement from your version.
diff --git a/jdk/make/Makefile b/jdk/make/Makefile
new file mode 100644
index 0000000..c78e4c2
--- /dev/null
+++ b/jdk/make/Makefile
@@ -0,0 +1,349 @@
+#
+# Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building and packaging all of the JDK and the JRE. See
+# also included files.
+#
+
+BUILDDIR=.
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Make sure we are clear what the default target is
+#
+default_target: all
+
+#
+# Check target
+#
+
+check: variable_check
+
+#
+# Help target
+#
+help: intro_help target_help variable_help notes_help examples_help
+
+# Intro help message
+intro_help:
+ @$(ECHO) "\
+Makefile for the main JDK workspace. \n\
+Default behavior is to use the BOOTDIR javac to bootstrap the build and \n\
+import in pre-built components like the VM from the JDK_IMPORT_PATH. \n\
+"
+
+# Target help
+target_help:
+ @$(ECHO) "\
+--- Common Targets --- \n\
+all -- build the core JDK (default target) \n\
+help -- Print out help information \n\
+check -- Check make variable values for correctness \n\
+sanity -- Perform detailed sanity checks on system and settings \n\
+openjdk -- synonym for 'OPENJDK=true all' \n\
+fastdebug -- build the core JDK in 'fastdebug' mode (-g -O) \n\
+debug -- build the core JDK in 'debug' mode (-g) \n\
+clean -- remove all built and imported files \n\
+clobber -- same as clean \n\
+docs -- run javadoc to generate the JDK documentation \n\
+images -- build the jdk and jre image directories \n\
+import -- copy in the pre-built components (e.g. VM) \n\
+import_product -- copy in the product components \n\
+import_fastdebug -- copy in the fastdebug components \n\
+import_debug -- copy in the debug components \n\
+sccs_get -- make sure all SCCS files are up-to-date (need SCCS) \n\
+create_links -- create softlinks in Solaris 32bit build to 64bit dirs \n\
+"
+
+# Variable help (only common ones used by this workspace)
+variable_help: variable_help_intro variable_list variable_help_end
+variable_help_intro:
+ @$(ECHO) "--- Common Variables ---"
+variable_help_end:
+ @$(ECHO) " "
+
+# One line descriptions for the variables
+OUTPUTDIR.desc = Output directory
+PARALLEL_COMPILE_JOBS.desc = Solaris/Linux parallel compile run count
+SLASH_JAVA.desc = Root of all build tools, e.g. /java or J:
+BOOTDIR.desc = JDK used to boot the build
+LANGTOOLS_DIST.desc = langtools dist area used to build
+CORBA_DIST.desc = corba dist area
+JAXP_DIST.desc = jaxp dist area
+JAXWS_DIST.desc = jaxws dist area
+JDK_IMPORT_PATH.desc = JDK used to import components of the build
+COMPILER_PATH.desc = Compiler install directory
+CACERTS_FILE.desc = Location of certificates file
+DEVTOOLS_PATH.desc = Directory containing zip and unzip
+CUPS_HEADERS_PATH.desc = Include directory location for CUPS header files
+DXSDK_PATH.desc = Root directory of DirectX SDK
+MSDEVTOOLS_PATH.desc = Root directory of VC++ tools (e.g. rc.exe)
+MSVCRT_DLL_PATH.desc = Directory containing mscvrt.dll
+
+# Make variables to print out (description and value)
+VARIABLE_PRINTVAL_LIST += \
+ OUTPUTDIR \
+ PARALLEL_COMPILE_JOBS \
+ SLASH_JAVA \
+ BOOTDIR \
+ LANGTOOLS_DIST \
+ JAXWS_DIST \
+ CORBA_DIST \
+ JAXP_DIST \
+ JDK_IMPORT_PATH \
+ COMPILER_PATH \
+ CACERTS_FILE \
+ DEVTOOLS_PATH
+
+# Make variables that should refer to directories that exist
+VARIABLE_CHECKDIR_LIST += \
+ SLASH_JAVA \
+ BOOTDIR \
+ JDK_IMPORT_PATH \
+ COMPILER_PATH \
+ DEVTOOLS_PATH
+
+# Make variables that should refer to files that exist
+VARIABLE_CHECKFIL_LIST += \
+ CACERTS_FILE
+
+# Some are windows specific
+ifeq ($(PLATFORM), windows)
+
+VARIABLE_PRINTVAL_LIST += \
+ DXSDK_PATH \
+ MSDEVTOOLS_PATH \
+ MSVCRT_DLL_PATH
+
+VARIABLE_CHECKDIR_LIST += \
+ DXSDK_PATH \
+ MSDEVTOOLS_PATH \
+ MSVCRT_DLL_PATH
+
+endif
+
+# For pattern rules below, so all are treated the same
+DO_PRINTVAL_LIST=$(VARIABLE_PRINTVAL_LIST:%=%.printval)
+DO_CHECKDIR_LIST=$(VARIABLE_CHECKDIR_LIST:%=%.checkdir)
+DO_CHECKFIL_LIST=$(VARIABLE_CHECKFIL_LIST:%=%.checkfil)
+
+# Complete variable check
+variable_check: $(DO_CHECKDIR_LIST) $(DO_CHECKFIL_LIST)
+variable_list: $(DO_PRINTVAL_LIST) variable_check
+
+# Pattern rule for printing out a variable
+%.printval:
+ @$(ECHO) " ALT_$* - $($*.desc)"
+ @$(ECHO) " \t $*=$($*)"
+
+# Pattern rule for checking to see if a variable with a directory exists
+%.checkdir:
+ @if [ ! -d $($*) ] ; then \
+ $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \
+ fi
+
+# Pattern rule for checking to see if a variable with a file exists
+%.checkfil:
+ @if [ ! -f $($*) ] ; then \
+ $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \
+ fi
+
+# Misc notes on help
+notes_help:
+ @$(ECHO) "\
+--- Notes --- \n\
+- All builds use same output directory unless overridden with \n\
+ \t ALT_OUTPUTDIR=<dir>, changing from product to fastdebug you may want \n\
+ \t to use the clean target first. \n\
+- LANGTOOLS_DIST must refer to a langtools dist area, used to build. \n\
+- CORBA_DIST must refer to a corba dist area. \n\
+- JAXP_DIST must refer to a jaxp dist area. \n\
+- JAXWS_DIST must refer to a jaxws dist area. \n\
+- JDK_IMPORT_PATH must refer to a compatible build, not all past promoted \n\
+ \t builds or previous release JDK builds will work. \n\
+- The 'debug' target and 'import_debug' only works when a debug promoted \n\
+ \t build is available, and they currently are not. \n\
+- The fastest builds have been when the workspace and the BOOTDIR are on \n\
+ \t local disk. \n\
+"
+
+examples_help:
+ @$(ECHO) "\
+--- Examples --- \n\
+ $(MAKE) fastdebug \n\
+ $(MAKE) ALT_OUTPUTDIR=/tmp/foobar all \n\
+ $(MAKE) ALT_OUTPUTDIR=/tmp/foobar fastdebug images \n\
+ $(MAKE) ALT_OUTPUTDIR=/tmp/foobar all docs images \n\
+ $(MAKE) ALT_BOOTDIR=/opt/java/jdk1.6.0 \n\
+ $(MAKE) ALT_JDK_IMPORT_PATH=/opt/java/jdk1.7.0 \n\
+"
+
+#
+# 'all' target intro
+#
+all::
+ @$(ECHO) $(PLATFORM) $(ARCH) $(RELEASE) build started: $(shell $(DATE) '+%y-%m-%d %H:%M')
+
+# Just in case anyone uses this old name, same as 'build'
+optimized: build
+
+openjdk:
+ $(MAKE) OPENJDK=true all
+
+#
+# Special debug rules (You may also want to set ALT_OUTPUTDIR)
+#
+debug:
+ $(MAKE) VARIANT=DBG all
+fastdebug:
+ $(MAKE) VARIANT=DBG FASTDEBUG=true all
+
+#
+# Rules to re-import VM and other JDK files
+#
+import:
+ $(CD) java/redist; $(MAKE) clean all
+
+import_fastdebug:
+ $(MAKE) VARIANT=DBG FASTDEBUG=true import
+
+import_product:
+ $(MAKE) VARIANT=OPT FASTDEBUG=false import
+
+#
+# Core.
+#
+
+all build:: sanity-all post-sanity-all
+
+SUBDIRS = tools java javax org sun sunw com jpda mkdemo mksample launchers
+all build::
+ $(SUBDIRS-loop)
+
+clean clobber::
+ $(RM) -r $(OUTPUTDIR)
+
+#
+# Docs
+#
+OTHERSUBDIRS = docs
+docs:: sanity-docs post-sanity-docs
+ $(OTHERSUBDIRS-loop)
+
+#
+# Release engineering targets.
+#
+include $(BUILDDIR)/common/Release.gmk
+
+#
+# Cscope targets.
+#
+include $(BUILDDIR)/common/Cscope.gmk
+
+#
+# Sanity checks.
+#
+include $(BUILDDIR)/common/Sanity.gmk
+
+$(OUTPUTDIR) $(TEMPDIR):
+ $(MKDIR) -p $@
+
+# cleanup everything. If the workspace is not being built by the control
+# workspace, and if it is a Teamware workspace, then see if there are
+# any files which are not under SCCS control.
+clean clobber::
+ifndef EXTERNALSANITYCONTROL
+ @if [ -d $(TOPDIR)/Codemgr_wsdata ]; then \
+ $(ECHO) '\nPerforming workspace scan for remnant files.\n' \
+ ' Any files listed below are not under SCCS control in the workspace\n' \
+ ' and you should review them and possibly remove them manually:' ; \
+ $(FIND) $(TOPDIR)/make $(TOPDIR)/src -type f | \
+ $(SED) 's+SCCS/[ps]\.++' | $(SORT) | $(UNIQ) -c | $(NAWK) '$$1<2 {print $$2;}' ; \
+ $(ECHO) 'End of workspace scan.' ; \
+ fi
+endif
+
+# this should be the last rule in this file:
+all::
+ @if [ -r $(WARNING_FILE) ]; then \
+ $(CAT) $(WARNING_FILE) ; \
+ fi
+ @$(ECHO) $(PLATFORM) $(ARCH) $(RELEASE) build finished: $(shell $(DATE) '+%y-%m-%d %H:%M')
+
+#
+# Developer rule that links 32 and 64 bit builds on Solaris by creating
+# softlinks in the 32bit outputdir to the 64bit outputdir.
+#
+ifeq ($(PLATFORM), solaris)
+ ifeq ($(ARCH_FAMILY), sparc)
+ ARCH32 = sparc
+ ARCH64 = sparcv9
+ else
+ ARCH32 = i586
+ ARCH64 = amd64
+ endif
+ OUTPUTDIR32 = $(ABS_OUTPUTDIR)/../$(PLATFORM)-$(ARCH32)
+ OUTPUTDIR64 = $(ABS_OUTPUTDIR)/../$(PLATFORM)-$(ARCH64)
+endif
+
+create_links:
+ifeq ($(PLATFORM), solaris)
+ @if [ -d $(OUTPUTDIR32) -a -d $(OUTPUTDIR64) ] ; then \
+ dirlist=`($(CD) $(OUTPUTDIR64); $(FIND) . -name $(ARCH64))`; \
+ for sd in $$dirlist ; do \
+ pdir=`$(DIRNAME) $$sd`; \
+ if [ -d $(OUTPUTDIR32)/$$pdir ] ; then \
+ echo "Creating link for $$sd"; \
+ (cd $(OUTPUTDIR32)/$$pdir; $(RM) $(ARCH64); \
+ $(LN) -s $(OUTPUTDIR64)/$$sd ); \
+ fi; \
+ done; \
+ else \
+ $(ECHO) "Build both 32 and 64 bit versions first"; \
+ fi
+else
+ $(ECHO) "Rule $@ does not apply on $(PLATFORM)-$(ARCH)"
+endif
+
+#
+# Binary Plug rules and macros
+#
+include $(BUILDDIR)/common/internal/BinaryPlugs.gmk
+
+#
+# Get top level sccs_get rule
+#
+include $(BUILDDIR)/common/Rules-SCCS.gmk
+
+# JPRT rules
+include jprt.gmk
+
+#
+# Phonies to avoid accidents.
+#
+.PHONY: all build clean clobber optimized debug fastdebug create_links \
+ import import_product import_fastdebug import_debug
+
diff --git a/jdk/make/PatchList.solaris b/jdk/make/PatchList.solaris
new file mode 100644
index 0000000..173881e
--- /dev/null
+++ b/jdk/make/PatchList.solaris
@@ -0,0 +1,31 @@
+BUILD,RUNTIME 5.8 Sparc 109147-24 x86 109148-24 REQ "Linker patch"
+BUILD,RUNTIME 5.8 Sparc 108652-66 x86 108653-55 REQ "Xserver patch"
+BUILD,RUNTIME 5.8 Sparc 108940-52 x86 108941-52 REQ "Motif 2.1 patch"
+BUILD,RUNTIME 5.8 Sparc 108989-02 x86 108990-02 REQ "Accounting patch"
+BUILD,RUNTIME 5.8 Sparc none x86 111307-04 REQ "boot.bin, bootconf.exe, bootenv.rc and nbp patch"
+BUILD,RUNTIME 5.8 Sparc 111310-01 x86 111311-01 REQ "libhcpagent.so.l patch"
+BUILD,RUNTIME 5.8 Sparc 112396-02 x86 112397-02 REQ "fgrep patch"
+BUILD,RUNTIME 5.8 Sparc 108987-13 x86 108988-13 REQ "patchadd, patchrm patch"
+BUILD,RUNTIME 5.8 Sparc 111111-03 x86 111112-03 REQ "nawk patch"
+BUILD,RUNTIME 5.8 Sparc 108528-20 x86 108529-20 REQ "Kernel update"
+BUILD,RUNTIME 5.8 Sparc 108993-18 x86 none REQ "LDAP2 Patch"
+BUILD,RUNTIME 5.8 Sparc none x86 110400-01 REQ "RBAC Feature patch"
+BUILD,RUNTIME 5.8 Sparc none x86 111024-02 REQ "/kernel/fs/mntfs patch"
+BUILD,RUNTIME 5.8 Sparc none x86 108994-18 REQ "LDAP2 patch"
+BUILD,RUNTIME 5.8 Sparc 109147-23 x86 109148-23 REQ "linker patch"
+BUILD,RUNTIME 5.8 Sparc 111308-03 x86 111309-03 REQ "Performance for apps using memory alloc"
+RUNTIME 5.8 Sparc 112003-03 x86 none REQ "Fontset patch for sparcv9"
+RUNTIME 5.8 Sparc 108921-16 x86 108922-16 REQ "CDE patch"
+RUNTIME 5.8 Sparc 108773-18 x86 108774-18 REQ "X input method patch"
+RUNTIME 5.8 Sparc 110386-03 x86 none REQ "RBAC Feature Patch"
+RUNTIME 5.8 Sparc 111023-02 x86 none REQ "/kernel/fs/mntfs and /kernel/fs/sparcv9/mntfs patch"
+RUNTIME 5.8 Sparc 112472-01 x86 112473-01 OPT "Font2DTest2 patch"
+RUNTIME 5.8 Sparc 112438-01 x86 112439-01 REQ "/kernel/drv/random patch"
+
+COMPILER 5.8 Sparc 109505-06 x86 109502-03 REQ "For C 5.0, C++ 5.0"
+COMPILER 5.8 Sparc 109513-05 x86 109514-03 REQ "For Forte Development 6 C compiler"
+COMPILER 5.8 Sparc 109508-03 x86 109509-03 REQ "For Forte Development 6 update 1 C++ compiler"
+COMPILER 5.8 Sparc 109510-03 x86 109511-03 REQ "For Forte 6.1 Debugger"
+COMPILER 5.8 Sparc 109516-02 x86 109517-02 REQ "For Forte 6.1 Performance Analyzer"
+COMPILER 5.8 Sparc 110480-01 x86 110481-01 REQ "For Forte TeamWare"
+
diff --git a/jdk/make/README b/jdk/make/README
new file mode 100644
index 0000000..d774ab8
--- /dev/null
+++ b/jdk/make/README
@@ -0,0 +1,34 @@
+README:
+ This file should be located at the top of the jdk Mercurial repository.
+
+ See http://openjdk.java.net/ for more information about the OpenJDK.
+
+Simple Build Instructions:
+
+ 1. Download and install a JDK 6 from
+ http://java.sun.com/javase/downloads/index.jsp
+ Set the environment variable ALT_BOOTDIR to the location of this JDK 6.
+
+ 2. Download and install the Binary Plugs for the most recent JDK7 from
+ http://download.java.net/openjdk/jdk7/
+ Set the environment variable ALT_BINARY_PLUGS_PATH to the location of
+ these binary plugs.
+
+ 3. Either download and install the latest JDK7 from
+ http://download.java.net/openjdk/jdk7/, or build your own complete
+ OpenJDK7 by using the top level Makefile in the OpenJDK Mercurial forest.
+ Set the environment variable ALT_JDK_IMPORT_PATH to the location of
+ this latest JDK7 or OpenJDK7 build.
+
+ 4. Check the sanity of doing a build with the current machine:
+ cd make && gnumake sanity
+ See README-builds.html if you run into problems.
+
+ 5. Do a partial build of the jdk:
+ cd make && gnumake all
+
+ 6. Construct the images:
+ cd make && gnumake images
+ The resulting JDK image should be found in build/*/j2sdk-image
+
+
diff --git a/jdk/make/README-builds.html b/jdk/make/README-builds.html
new file mode 100644
index 0000000..6530865
--- /dev/null
+++ b/jdk/make/README-builds.html
@@ -0,0 +1,1452 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+<head><title>OpenJDK Build README</title></head>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<center>
+ <h1>OpenJDK Build README</h1>
+</center>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<h2><a name="introduction">Introduction</a></h2>
+
+<blockquote>
+ <p>
+ This README file contains build instructions for the
+ <a href="http://openjdk.java.net">OpenJDK</a>.
+ Building the source code for the
+ OpenJDK
+ requires
+ a certain degree of technical expertise.
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<h2><a name="contents">Contents</a></h2>
+
+<blockquote>
+ <ul>
+ <li><a href="#introduction">Introduction</a></li>
+ <li><a href="#MBE">Minimum Build Environments</a></li>
+ <li><a href="#SDBE">Specific Developer Build Environments</a></li>
+ <li><a href="#directories">Source Directory Structure</a> </li>
+ <li><a href="#building">Build Information</a>
+ <ul type="disc">
+ <li><a href="#gmake">GNU Make (<tt><i>gmake</i></tt>)</a> </li>
+ <li><a href="#linux">Basic Linux System Setup</a> </li>
+ <li><a href="#solaris">Basic Solaris System Setup</a> </li>
+ <li><a href="#windows">Basic Windows System Setup</a> </li>
+ <li><a href="#dependencies">Build Dependencies</a> </li>
+ <ul type="disc">
+ <li><a href="#bootjdk">Bootstrap JDK</a> </li>
+ <li><a href="#binaryplugs">Binary Plugs</a> </li>
+ <li><a href="#cacerts">Certificate Authority File (cacert)</a> </li>
+ <li><a href="#compilers">Compilers</a>
+ <ul>
+ <li><a href="#msvc">Microsoft Visual Studio</a> </li>
+ <li><a href="#mssdk">Microsoft Platform SDK</a> </li>
+ <li><a href="#gcc">Linux gcc/binutils</a> </li>
+ <li><a href="#studio">Sun Studio</a> </li>
+ </ul>
+ </li>
+ <li>Linux and Solaris:
+ <ul>
+ <li><a href="#cups">CUPS Include files</a> </li>
+ </ul>
+ </li>
+ <li>Windows only:
+ <ul>
+ <li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>)</li>
+ <li><a href="#dxsdk">DirectX 9.0 SDK</a> </li>
+ </ul>
+ </li>
+ </ul>
+ </ul>
+ </li>
+ <li><a href="#creating">Creating the Build</a> </li>
+ <li><a href="#testing">Testing the Build</a> </li>
+ <li><a href="#variables">Environment/Make Variables</a></li>
+ <li><a href="#troubleshooting">Troubleshooting</a></li>
+ </ul>
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<h2><a name="MBE">Minimum Build Environments</a></h2>
+
+<blockquote>
+ <p>
+ This file often describes specific requirements for what we call the
+ "minimum build environments" (MBE) for the JDK.
+ Building with the MBE will generate the most compatible
+ bits that install on, and run correctly on, the most variations
+ of the same base OS and hardware architecture.
+ These usually represent what is often called the
+ least common denominator platforms.
+ It is understood that most developers will NOT be using these
+ specific platforms, and in fact creating these specific platforms
+ may be difficult due to the age of some of this software.
+ <p>
+
+ <p>
+ The minimum OS and C/C++ compiler versions needed for building the
+ OpenJDK:
+ <p>
+ <center>
+ <table border="1">
+ <thead>
+ <tr>
+ <th>Base OS and Architecture</th>
+ <th>OS</th>
+ <th>Compiler</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Linux X86 (32bit)</td>
+ <td>Red Hat Enterprise Linux 4 </td>
+ <td>gcc 4 </td>
+ </tr>
+ <tr>
+ <td>Linux X64 (64bit)</td>
+ <td>Red Hat Enterprise Linux 4 </td>
+ <td>gcc 4 </td>
+ </tr>
+ <tr>
+ <td>Solaris SPARC (32bit)</td>
+ <td>Solaris 10 + patches
+ <br>
+ See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE">SunSolve</a> for patch downloads.
+ </td>
+ <td>Sun Studio 11 </td>
+ </tr>
+ <tr>
+ <td>Solaris SPARCV9 (64bit)</td>
+ <td>Solaris 10 + patches
+ <br>
+ See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE">SunSolve</a> for patch downloads.
+ </td>
+ <td>Sun Studio 11</td>
+ </tr>
+ <tr>
+ <td>Solaris X86 (32bit)</td>
+ <td>Solaris 10 + patches
+ <br>
+ See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE">SunSolve</a> for patch downloads.
+ </td>
+ <td>Sun Studio 11</td>
+ </tr>
+ <tr>
+ <td>Solaris X64 (64bit)</td>
+ <td>Solaris 10 + patches
+ <br>
+ See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE">SunSolve</a> for patch downloads.
+ </td>
+ <td>Sun Studio 11</td>
+ </tr>
+ <tr>
+ <td>Windows X86 (32bit)</td>
+ <td>Windows XP</td>
+ <td>Microsoft Visual Studio .NET 2003 Professional</td>
+ </tr>
+ <tr>
+ <td>Windows X64 (64bit)</td>
+ <td>Windows Server 2003 - Enterprise x64 Edition</td>
+ <td>Microsoft Platform SDK - April 2005</td>
+ </tr>
+ </tbody>
+ </table>
+ </center>
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<h2><a name="SDBE">Specific Developer Build Environments</a></h2>
+
+<blockquote>
+ <p>
+ We won't be listing all the possible environments, but
+ we will try to provide what information we have available to us.
+</blockquote>
+
+<h3><a name="fedora">Fedora</a></h3>
+
+<blockquote>
+ TBD
+</blockquote>
+
+<h3><a name="debian">Debian</a></h3>
+
+<blockquote>
+ TBD
+</blockquote>
+
+<h3><a name="ubuntu">Ubuntu</a></h3>
+
+<blockquote>
+ <p>
+ In addition to needing the Bootstrap JDK and the Binary Plugs,
+ when building on Ubuntu you will need to
+ make sure certain packages are installed.
+ In particular, certain X11 packages, make, m4, gawk, gcc 4,
+ binutils, cups, freetype
+ and alsa.
+
+ <h4>Ubuntu 6.06</h4>
+
+ <p>
+ The following list of packages for Ubuntu 6.06 is a working set that
+ does appear to work.
+
+ <p>
+ <b>Note that it's quite possible that some of these
+ packages are not required, so anyone discovering that some of the
+ packages listed below are NOT required,
+ please let the
+ OpenJDK
+ team know.</b>
+ <p>
+ All the packages below can be installed with the
+ Synaptic Package manager provided with the base Ubuntu 6.06 release.
+
+ <blockquote>
+ <ul>
+ <li>binutils (2.16.1cvs20060117-1ubuntu2.1)</li>
+ <li>cpp (4:4.0.3-1)</li>
+ <li>cpp-4.0 (4.0.3-1ubuntu5)</li>
+ <li>libfreetype6-dev</li>
+ <li>g++ (4:4.0.3-1)</li>
+ <li>g++-4.0 (4.0.3-1ubuntu5)</li>
+ <li>gawk (1:3.1.5-2build1)</li>
+ <li>gcc (4:4.0.3-1)</li>
+ <li>gcc-4.0 (4.0.3-1ubuntu5)</li>
+ <li>libasound2-dev (1.0.10-2ubuntu4)</li>
+ <li>libc6 (2.3.6-0ubuntu20) to 2.3.6-0ubuntu20.4</li>
+ <li>libc6-dev (2.3.6-0ubuntu20.4)</li>
+ <li>libc6-i686 (2.3.6-0ubuntu20) to 2.3.6-0ubuntu20.4</li>
+ <li>libcupsys2-dev (1.2.2-0ubuntu0.6.06)</li>
+ <li>libgcrypt11-dev (1.2.2-1)</li>
+ <li>libgnutls-dev (1.2.9-2ubuntu1.1)</li>
+ <li>libgnutls12 (1.2.9-2ubuntu1) to 1.2.9-2ubuntu1.1</li>
+ <li>libgpg-error-dev (1.1-4)</li>
+ <li>libice-dev (2:1.0.0-0ubuntu2)</li>
+ <li>liblockfile1 (1.06.1)</li>
+ <li>libopencdk8-dev (0.5.7-2)</li>
+ <li>libpopt-dev (1.7-5)</li>
+ <li>libsm-dev (2:1.0.0-0ubuntu2)</li>
+ <li>libstdc++6-4.0-dev (4.0.3-1ubuntu5)</li>
+ <li>libtasn1-2-dev (0.2.17-1ubuntu1)</li>
+ <li>libx11-dev (2:1.0.0-0ubuntu9)</li>
+ <li>libxau-dev (1:1.0.0-0ubuntu4)</li>
+ <li>libxaw-headers (2:1.0.1-0ubuntu3)</li>
+ <li>libxaw7-dev (2:1.0.1-0ubuntu3)</li>
+ <li>libxdmcp-dev (1:1.0.0-0ubuntu2)</li>
+ <li>libxext-dev (2:1.0.0-0ubuntu4)</li>
+ <li>libxi-dev (2:1.0.0-0ubuntu3) </li>
+ <li>libxmu-dev (2:1.0.0-0ubuntu3)</li>
+ <li>libxmu-headers (2:1.0.0-0ubuntu3)</li>
+ <li>libxmuu-dev (2:1.0.0-0ubuntu3)</li>
+ <li>libxp-dev (6.8.2-11ubuntu2)</li>
+ <li>libxpm-dev (1:3.5.4.2-0ubuntu3)</li>
+ <li>libxrandr-dev (1:1.1.0.2-0ubuntu4)</li>
+ <li>libxt-dev (1:1.0.0-0ubuntu3)</li>
+ <li>libxtrap-dev (2:1.0.0-0ubuntu2)</li>
+ <li>libxtst-dev (2:1.0.1-0ubuntu2)</li>
+ <li>libxv-dev (2:1.0.1-0ubuntu3)</li>
+ <li>linux-kernel-headers (2.6.11.2-0ubuntu18)</li>
+ <li>m4 (1.4.4-1)</li>
+ <li>make (3.80+3.81.b4-1)</li>
+ <li>ssl-cert (1.0.13)</li>
+ <li>x-dev (7.0.4-0ubuntu2)</li>
+ <li>x11proto-core-dev (7.0.4-0ubuntu2)</li>
+ <li>x11proto-input-dev (1.3.2-0ubuntu2)</li>
+ <li>x11proto-kb-dev (1.0.2-0ubuntu2)</li>
+ <li>x11proto-randr-dev (1.1.2-0ubuntu2)</li>
+ <li>x11proto-record-dev (1.13.2-0ubuntu2)</li>
+ <li>x11proto-trap-dev (3.4.3-0ubuntu2)</li>
+ <li>x11proto-video-dev (2.2.2-0ubuntu2)</li>
+ <li>x11proto-xext-dev (7.0.2-0ubuntu2)</li>
+ <li>xlibs-dev (7.0.0-0ubuntu45)</li>
+ <li>zlib1g-dev (1:1.2.3-6ubuntu4)</li>
+ </ul>
+ </blockquote>
+
+ <h4>Ubuntu 7.04</h4>
+
+ <p>
+ Using the Synaptic Package Manager, download the following
+ packages (double indented packages are automatically aquired
+ due to package dependencies):
+
+ <blockquote>
+ <ul>
+ <li>build-essential</li>
+ <ul>
+ <li>dpkg-dev</li>
+ <li>g++</li>
+ <li>g++-4.1</li>
+ <li>libc6-dev</li>
+ <li>libstdc++6.4.1-dev</li>
+ <li>linux-libc-dev</li>
+ </ul>
+ <li>gawk</li>
+ <li>m4</li>
+ <li>libasound2-dev</li>
+ <li>libcupsys2-dev</li>
+ <ul>
+ <li>libgcrypt11-dev</li>
+ <li>lgnutls-dev</li>
+ <li>libgpg-error-dev</li>
+ <li>liblzo-dev</li>
+ <li>libopencdk8-dev</li>
+ <li>libpopt-dev</li>
+ <li>libtasn1-3-dev</li>
+ <li>zlib1g-dev</li>
+ </ul>
+ <li>sun-java6-jdk</li>
+ <ul>
+ <li>java-common</li>
+ <li>libltdl3</li>
+ <li>odbcinst1debian1</li>
+ <li>sun-java6-bin</li>
+ <li>sun-java6-jre</li>
+ <li>unixodbc</li>
+ </ul>
+ <li>xlibs-dev</li>
+ <ul>
+ <li>(many)</li>
+ </ul>
+ <li>x11proto-print-dev</li>
+ <li>libxaw7-dev</li>
+ <ul>
+ <li>libxaw-headers</li>
+ </ul>
+ <li>libxp-dev</li>
+ <li>libfreetype6-dev</li>
+ </ul>
+ </blockquote>
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<h2><a name="directories">Source Directory Structure</a></h2>
+
+<blockquote>
+ <p>
+ The source code for the
+ OpenJDK is
+ delivered in <i>3</i> sibling directories:
+ <tt>hotspot</tt>,
+ <tt>langtools</tt>,
+ <tt>corba</tt>,
+ <tt>jaxws</tt>,
+ <tt>jaxp</tt>,
+ <tt>jdk</tt>
+ and
+ The <tt>hotspot</tt> directory contains the source code and make
+ files for
+ building the
+ OpenJDK
+ Hotspot Virtual Machine.
+ The <tt>jdk</tt>
+ directory contains the source code and make files for
+ building the
+ OpenJDK
+ runtime libraries, tools and demos.
+ The top level Makefile is used to build the complete OpenJDK
+ release including building the hotspot
+ VM, staging the VM binaries, and building the
+ OpenJDK
+ runtime libraries,
+ tools and demos.
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<h2><a name="building">Build Information</a></h2>
+
+<blockquote>
+ <p>
+ Building the
+ OpenJDK
+ is done with a <tt><i>gmake</i></tt>
+ command line and various
+ environment or make variable settings that direct the make rules
+ to where various components have been installed.
+ Where possible the makefiles will attempt to located the various
+ components in the default locations or any component specific
+ variable settings.
+ When the normal defaults fail or components cannot be found,
+ the various
+ <tt>ALT_*</tt> variables (alternates)
+ can be used to help the makefiles locate components.
+ <p>
+ Refer to the bash/sh/ksh setup file
+ <tt>jdk/make/jdk_generic_profile.sh</tt>
+ if you need help in setting up your environment variables.
+ A build could be as simple as:
+ <blockquote>
+ <pre><tt>
+ bash
+ . jdk/make/jdk_generic_profile.sh
+ <i>gmake</i> sanity && <i>gmake</i>
+ </tt></pre>
+ </blockquote>
+ <p>
+ Of course ksh or sh would work too.
+ But some customization will probably be necessary.
+ The <tt>sanity</tt> rule will make some basic checks on build
+ dependencies and generate appropriate warning messages
+ regarding missing, out of date, or newer than expected components
+ found on your system.
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<h3><a name="gmake">GNU make (<tt><i>gmake</i></tt>)</a></h3>
+
+<blockquote>
+ <p>
+ The Makefiles in the
+ OpenJDK
+ are only valid when used with the
+ GNU version of the utility command <tt>make</tt>
+ (<tt><i>gmake</i></tt>).
+ A few notes about using GNU make:
+ <ul>
+ <li>
+ In general, you need GNU make version 3.78.1 or newer.
+ </li>
+ <li>
+ Place the location of the GNU make binary in the <tt>PATH</tt>.
+ </li>
+ <li>
+ <strong>Linux:</strong>
+ The <tt>/usr/bin/make</tt> command should work fine for you.
+ </li>
+ <li>
+ <strong>Solaris:</strong>
+ Do NOT use <tt>/usr/bin/make</tt> on Solaris.
+ If your Solaris system has the software
+ from the Solaris Companion CD installed,
+ you should use <tt>gmake</tt>
+ which will be located in either the <tt>/opt/sfw/bin</tt> or
+ <tt>/usr/sfw/bin</tt> directory.
+ </li>
+ <li>
+ <strong>Windows:</strong>
+ Make sure you start your build inside a bash/sh/ksh shell.
+ <br>
+ <b>WARNING:</b> Watch out for make version 3.81, it may
+ not work due to a lack of support for drive letter paths
+ like <tt>C:/</tt>. Use a 3.80 version, or find a newer
+ version that has this problem fixed.
+ </li>
+ </ul>
+ <p>
+ Information on GNU make, and access to ftp download sites, are
+ available on the
+ <a href="http://www.gnu.org/software/make/make.html">
+ GNU make web site
+ </a>.
+ The latest source to GNU make is available at
+ <a href="http://ftp.gnu.org/pub/gnu/make/">ftp.gnu.org/pub/gnu/make/</a>.
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<h3><a name="linux">Basic Linux System Setup</a></h3>
+
+<blockquote>
+ <p>
+ <strong>i586 only:</strong>
+ The minimum recommended hardware for building the Linux version
+ is a Pentium class processor or better, at least 256 MB of RAM, and
+ approximately 1.5 GB of free disk space.
+ <p>
+ <strong>X64 only:</strong>
+ The minimum recommended hardware for building the Linux
+ version is an AMD Opteron class processor, at least 512 MB of RAM, and
+ approximately 4 GB of free disk space.
+ <p>
+ The build will use the tools contained in
+ <tt>/bin</tt> and
+ <tt>/usr/bin</tt>
+ of a standard installation of the Linux operating environment.
+ You should ensure that these directories are in your
+ <tt>PATH</tt>.
+ <p>
+ Note that some Linux systems have a habit of pre-populating
+ your environment variables for you, for example <tt>JAVA_HOME</tt>
+ might get pre-defined for you to refer to the JDK installed on
+ your Linux system.
+ You will need to unset <tt>JAVA_HOME</tt>.
+ It's a good idea to run <tt>env</tt> and verify the
+ environment variables you are getting from the default system
+ settings make sense for building the
+ OpenJDK.
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+
+<h4><a name="linux_checklist">Basic Linux Check List</a></h4>
+
+<blockquote>
+ <ol>
+ <li>
+ Install the
+ <a href="#bootjdk">Bootstrap JDK</a>, set
+ <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
+ </li>
+ <li>
+ Install the
+ <a href="#binaryplugs">Binary Plugs</a>, set
+ <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>.
+ </li>
+ <li>
+ Install or upgrade the <a href="#freetype">FreeType development
+ package</a>.
+ </li>
+ </ol>
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<h3><a name="solaris">Basic Solaris System Setup</a></h3>
+
+<blockquote>
+ <p>
+ The minimum recommended hardware for building the
+ Solaris SPARC version is an UltraSPARC with 512 MB of RAM.
+ For building
+ the Solaris x86 version, a Pentium class processor or better and at
+ least 128 MB of RAM are recommended.
+ Approximately 1.4 GB of free disk
+ space is needed for a 32-bit build.
+ <p>
+ If you are building the 64bit version, you should
+ run the command "isainfo -v" to verify that you have a
+ 64-bit installation.
+ An additional 7 GB of free disk space is needed
+ for a 64-bit build.
+ <p>
+ The build uses the tools contained in <tt>/usr/ccs/bin</tt>
+ and <tt>/usr/bin</tt> of a standard developer or full installation of
+ the Solaris operating environment.
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+
+<h4><a name="solaris_checklist">Basic Solaris Check List</a></h4>
+
+<blockquote>
+ <ol>
+ <li>
+ Install the
+ <a href="#bootjdk">Bootstrap JDK</a>, set
+ <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
+ </li>
+ <li>
+ Install the
+ <a href="#binaryplugs">Binary Plugs</a>, set
+ <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>.
+ </li>
+ <li>
+ Install the
+ <a href="#studio">Sun Studio Compilers</a>, set
+ <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
+ </li>
+ <li>
+ Install the
+ <a href="#cups">CUPS Include files</a>, set
+ <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>.
+ </li>
+ </ol>
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<h3><a name="windows">Basic Windows System Setup</a></h3>
+
+<blockquote>
+ <p>
+ <strong>i586 only:</strong>
+ The minimum recommended hardware for building the 32bit or X86
+ Windows version is an Pentium class processor or better, at least
+ 512 MB of RAM, and approximately 600 MB of free disk space.
+ <strong>
+ NOTE: The Windows 2000 build machines need to use the
+ file system NTFS.
+ Build machines formatted to FAT32 will not work
+ because FAT32 doesn't support case-sensitivity in file names.
+ </strong>
+ <p>
+ <strong>X64 only:</strong>
+ The minimum recommended hardware for building
+ the Windows X64 version is an AMD Opteron class processor, at least 1
+ GB of RAM, and approximately 10 GB of free disk space.
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+
+<h4><a name="paths">Windows Paths</a></h4>
+
+<blockquote>
+ <p>
+ <strong>Windows:</strong>
+ Note that GNU make is a historic utility and is based very
+ heavily on shell scripting, so it does not tolerate the Windows habit
+ of having spaces in pathnames or the use of the <tt>\</tt>characters in pathnames.
+ Luckily on most Windows systems, you can use <tt>/</tt>instead of \, and
+ there is always a 'short' pathname without spaces for any path that
+ contains spaces.
+ Unfortunately, this short pathname can be somewhat dynamic and the
+ formula is difficult to explain.
+ You can use <tt>cygpath</tt> utility to map pathnames with spaces
+ or the <tt>\</tt>character into the <tt>C:/</tt> style of pathname
+ (called 'mixed'), e.g.
+ <tt>cygpath -s -m "<i>path</i>"</tt>.
+ <p>
+ The makefiles will try to translate any pathnames supplied
+ to it into the <tt>C:/</tt> style automatically.
+ <p>
+ Note that use of CYGWIN creates a unique problem with regards to
+ setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
+ the <tt>PATH</tt> variable contains directories
+ separated with the ";" character (Solaris and Linux uses ":").
+ With CYGWIN, it uses ":", but that means that paths like "C:/path"
+ cannot be placed in the CYGWIN version of <tt>PATH</tt> and
+ instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
+ which CYGWIN understands, but only CYGWIN understands.
+ So be careful with paths on Windows.
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+
+<h4><a name="windows_checklist">Basic Windows Check List</a></h4>
+
+<blockquote>
+ <ol>
+ <li>
+ Install the
+ <a href="#cygwin">CYGWIN product</a>.
+ </li>
+ <li>
+ Install the
+ <a href="#bootjdk">Bootstrap JDK</a>, set
+ <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
+ </li>
+ <li>
+ Install the
+ <a href="#binaryplugs">Binary Plugs</a>, set
+ <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>..
+ </li>
+ <li>
+ Install the
+ <a href="#msvc">Microsoft Visual Studio .NET 2003 Professional</a> or the
+ <a href="#mssdk">Microsoft Platform SDK</a>.
+ </li>
+ <li>
+ Setup all environment variables for compilers
+ (see <a href="#msvc">compilers</a>).
+ </li>
+ <li>
+ Install
+ <a href="#dxsdk">Microsoft DirectX SDK</a>.
+ </li>
+ </ol>
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<h3><a name="dependencies">Build Dependencies</a></h3>
+
+<blockquote>
+ <p>
+ Depending on the platform, the
+ OpenJDK
+ build process has some basic
+ dependencies on components not part of the
+ OpenJDK
+ sources.
+ Some of these are specific to a platform, some even specific to
+ an architecture.
+ Each dependency will have a set of ALT variables that can be set
+ to tell the makefiles where to locate the component.
+ In most cases setting these ALT variables may not be necessary
+ and the makefiles will find defaults on the system in standard
+ install locations or through component specific variables.
+
+ <h4><a name="bootjdk">Bootstrap JDK</a></h4>
+
+ <blockquote>
+ <p>
+ All
+ OpenJDK
+ builds require access to the previously released
+ JDK 6, this is often called a bootstrap JDK.
+ The JDK 6 binaries can be downloaded from Sun's
+ <a href="http://java.sun.com/javase/1.6.0/download.html">JDK 6 download site</a>.
+ For build performance reasons
+ is very important that this bootstrap JDK be made available on the
+ local disk of the machine doing the build.
+ You should always set
+ <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
+ to point to the location of
+ the bootstrap JDK installation, this is the directory pathname
+ that contains a <tt>bin, lib, and include</tt>
+ It's also a good idea to also place its <tt>bin</tt> directory
+ in the <tt>PATH</tt> environment variable, although it's
+ not required.
+ <p>
+ <strong>Solaris:</strong>
+ Some pre-installed JDK images may be available to you in the
+ directory <tt>/usr/jdk/instances</tt>.
+ If you don't set
+ <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
+ the makefiles will look in that location for a JDK it can use.
+ </blockquote>
+
+ <h4><a name="binaryplugs">Binary Plugs</a></h4>
+
+ <blockquote>
+ <p>
+ Not all of the source code that makes up the JDK is available
+ under an open-source license.
+ In order to build an OpenJDK binary from source code,
+ you must first download and install the appropriate
+ binary plug bundles from the OpenJDK Download area.
+ During the OpenJDK build process these "binary plugs"
+ for the encumbered components will be copied into your
+ resulting OpenJDK binary build image.
+ These binary plug files are only for the purpose of
+ building an OpenJDK binary.
+ Download the Binary Plugs by selecting the <b>Downloads</b>
+ link at
+ <a href="http://openjdk.java.net/">the OpenJDK site</a>,
+ install the bundle,
+ and make sure you set
+ <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>
+ to the root of this installation.
+ </blockquote>
+
+ <h4><a name="cacerts">Certificate Authority File (cacert)</a></h4>
+
+ <blockquote>
+ <p>
+ See <a href="http://en.wikipedia.org/wiki/CAcert">
+ www.wikipedia.org/wiki/CAcert</a>
+ for a better understanding of the Certificate Authority (CA).
+ A certificates file named "cacerts"
+ represents a system-wide keystore with CA certificates.
+ In JDK and JRE
+ binary bundles, the "cacerts" file contains root CA certificates from
+ several public CAs (e.g., VeriSign, Thawte, and Baltimore).
+ The source contain a cacerts file
+ without CA root certificates.
+ Formal JDK builders will need to secure
+ permission from each public CA and include the certificates into their
+ own custom cacerts file.
+ Failure to provide a populated cacerts file
+ will result in verification errors of a certificate chain during runtime.
+ The variable
+ <tt><a href="#ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt>
+ can be used to override the default location of the
+ cacerts file that will get placed in your build.
+ By default an empty cacerts file is provided and that should be
+ fine for most JDK developers.
+ </blockquote>
+
+ <h4><a name="compilers">Compilers</a></h4>
+
+ <blockquote>
+
+ <a name="gcc">
+ <strong>Linux gcc/binutils</strong>
+ </a>
+
+ <blockquote>
+ <p>
+ The GNU gcc compiler version should be 3.2.2 or newer.
+ The binutils package should be 2.11.93.0.2-11 or newer.
+ The compiler used should be the default compiler installed
+ in <tt>/usr/bin</tt>.
+ </blockquote>
+
+ <strong><a name="studio">Solaris: Sun Studio</a></strong>
+
+ <blockquote>
+ <p>
+ At a minimum, the
+ <a href="http://developers.sun.com/sunstudio/index.jsp">
+ Sun Studio 11 Compilers</a>
+ (containing version 5.8 of the C and C++ compilers) is required,
+ with patches from the
+ <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/patch-access">
+ SunSolve web site</a>.
+ <p>
+ Set
+ <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>
+ to point to the location of
+ the compiler binaries, and place this location in the <tt>PATH</tt>.
+ <p>
+ The Sun Studio Express compilers at:
+ <a href="http://developers.sun.com/sunstudio/downloads/express.jsp">
+ Sun Studio Express Download site</a>
+ are also an option, although these compilers have not
+ been extensively used yet.
+ </blockquote>
+
+ <a name="msvc">
+ <strong>Windows i586: Microsoft Visual Studio .NET 2003 Professional</strong>
+ </a>
+
+ <blockquote>
+ <p>
+ The 32-bit
+ OpenJDK
+ Windows build
+ requires Microsoft Visual Studio .NET 2003 (VS2003) Professional
+ Edition compiler.
+ The compiler and other tools are expected to reside
+ in the location defined by the variable <tt>VS71COMNTOOLS</tt> which
+ is set by the Microsoft Visual Studio .NET installer.
+ <p>
+ Once the compiler is installed,
+ it is recommended that you run <tt>VCVARS32.BAT</tt>
+ to set the compiler environment variables
+ <tt>MSVCDIR</tt>,
+ <tt>INCLUDE</tt>,
+ <tt>LIB</tt>, and
+ <tt>PATH</tt>
+ prior to building the
+ OpenJDK.
+ The above environment variables <b>MUST</b> be set.
+ <p>
+ The Microsoft Visual Studio .NET 2005 (VS2005) compiler
+ will not work at this time due to the new runtime dll
+ and the manifest requirements.
+ </blockquote>
+
+ <a name="mssdk">
+ <strong>Windows X64: Microsoft Platform SDK April 2005</strong>
+ </a>
+
+ <blockquote>
+ <p>
+ On <b>X64</b>,
+ the Microsoft Platform Software
+ Development Kit (SDK), April 2005 Edition compiler, is required for
+ building the
+ OpenJDK
+ because it contains the C/C++ compiler.
+ You will need to minimally install the Core SDK and
+ the MDAC SDK features of this compiler.
+ <p>
+ Once the Platform SDK is installed,
+ it is recommended that you run <tt>SetEnv.Cmd /X64</tt>
+ to set the compiler environment variables
+ <tt>MSSDK</tt>,
+ <tt>MSTOOLS</tt>,
+ <tt>INCLUDE</tt>,
+ <tt>LIB</tt>, and
+ <tt>PATH</tt>
+ prior to building the
+ OpenJDK.
+ The above environment variables <b>MUST</b> be set.
+ <p>
+ Note that this compiler may say it's version is a
+ Microsoft Visual Studio .NET 2005 (VS2005), but be careful,
+ it will not match the official VS2005 product.
+ This Platform SDK compiler is only used on X64 builds.
+ </blockquote>
+
+ </blockquote>
+
+ <h4><a name="cups">Common UNIX Printing System (CUPS) Headers (Solaris & Linux)</a></h4>
+
+ <blockquote>
+ <p>
+ <strong>Solaris:</strong>
+ CUPS header files are required for building the
+ OpenJDK on Solaris.
+ The Solaris header files can be obtained by installing
+ the package <strong>SFWcups</strong> from the Solaris Software
+ Companion CD/DVD, these often will be installed into
+ <tt>/opt/sfw/cups</tt>.
+ <p>
+ <strong>Linux:</strong>
+ CUPS header files are required for building the
+ OpenJDK on Linux.
+ The Linux header files are usually available from a "cups"
+ development package, it's recommended that you try and use
+ the package provided by the particular version of Linux that
+ you are using.
+ <p>
+ The CUPS header files can always be downloaded from
+ <a href="http://www.cups.org">www.cups.org</a>.
+ The variable
+ <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>
+ can be used to override the default location of the
+ CUPS Header files.
+ </blockquote>
+
+ <h4><a name="freetype">FreeType 2</a></h4>
+
+ <blockquote>
+ <p>
+ Version 2.3 or newer of FreeType is required for building the OpenJDK.
+ On Unix systems required files can be available as part of your
+ distribution (while you still may need to upgrade them).
+ Note that you need development version of package that
+ includes both FreeType library and header files.
+ </p>
+ <p>
+ You can always download latest FreeType version from the
+ <a href="http://www.freetype.org">FreeType website</a>.
+ </p>
+ <p>
+ Makefiles will try to pick FreeType from /usr/lib and /usr/include.
+ In case it is installed elsewhere you will need to set environment
+ variables
+ <tt><a href="#ALT_FREETYPE_LIB_PATH">ALT_FREETYPE_LIB_PATH</a></tt>
+ and
+ <tt><a href="#ALT_FREETYPE_HEADERS_PATH">ALT_FREETYPE_HEADERS_PATH</a></tt>
+ to refer to place where library and header files are installed.
+ </p>
+ </blockquote>
+
+ <h4><a name="alsa">Advanced Linux Sound Architecture (ALSA) (Linux only)</a></h4>
+
+ <blockquote>
+ <p>
+ <strong>Linux only:</strong>
+ Version 0.9.1 or newer of the ALSA files are
+ required for building the
+ OpenJDK on Linux.
+ These Linux files are usually available from an "alsa"
+ of "libasound"
+ development package, it's recommended that you try and use
+ the package provided by the particular version of Linux that
+ you are using.
+ The makefiles will check this emit a sanity error if it is
+ missing or the wrong version.
+ As a last resort you can go to the
+ <a href="http://www.alsa-project.org" target="_blank">
+ Advanced Linux Sound Architecture Site</a>.
+ </blockquote>
+
+ <h4>Windows Specific Dependencies</h4>
+
+ <blockquote>
+
+ <strong>Unix Command Tools (<a name="cygwin">CYGWIN</a>)</strong>
+
+ <blockquote>
+ <p>
+ The
+ OpenJDK
+ requires access to a set of unix command tools
+ on Windows which can be supplied by
+ <a href="http://www.cygwin.com">CYGWIN</a>.
+ <p>
+ The
+ OpenJDK
+ build
+ requires CYGWIN version 1.5.12 or newer.
+ Information about CYGWIN can
+ be obtained from the CYGWIN website at
+ <a href="http://www.cygwin.com">www.cygwin.com</a>.
+ <p>
+ By default CYGWIN doesn't install all the tools required for building
+ the OpenJDK.
+ Along with the default installation, you need to install
+ the following tools.
+ <blockquote>
+ <table border="1">
+ <thead>
+ <tr>
+ <td>Binary Name</td>
+ <td>Package</td>
+ <td>Description</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>ar.exe</td>
+ <td>Devel</td>
+ <td>binutils: The GNU assembler, linker and binary
+ utilities</td>
+ </tr>
+ <tr>
+ <td>make.exe</td>
+ <td>Devel</td>
+ <td>make: The GNU version of the 'make' utility</td>
+ </tr>
+ <tr>
+ <td>m4.exe</td>
+ <td>Interpreters</td>
+ <td>m4: GNU implementation of the traditional Unix macro
+ processor</td>
+ </tr>
+ <tr>
+ <td>cpio.exe</td>
+ <td>Utils</td>
+ <td>cpio: A program to manage archives of files</td>
+ </tr>
+ <tr>
+ <td>file.exe</td>
+ <td>Utils</td>
+ <td>file: Determines file type using 'magic' numbers</td>
+ </tr>
+ </tbody>
+ </table>
+ </blockquote>
+ </blockquote>
+
+ <a name="dxsdk">
+ <strong>Microsoft DirectX 9.0 SDK header files and libraries</strong>
+ </a>
+
+ <blockquote>
+ <p>
+ Microsoft DirectX 9.0 SDK (Summer 2004)
+ headers are required for building
+ OpenJDK.
+ This SDK can be downloaded from
+ <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&displaylang=en">
+ Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
+ If the link above becomes obsolete, the SDK can be found from
+ <a href="http://download.microsoft.com">the Microsoft Download Site</a>
+ (search with "DirectX 9.0 SDK Update Summer 2004").
+ The location of this SDK can be set with
+ <tt><a href="#ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt>
+ but it's normally found via the DirectX environment variable
+ <tt>DXSDK_DIR</tt>.
+ </blockquote>
+
+ <a name="msvcrt">
+ <strong><tt>MSVCRT.DLL</tt></strong>
+ </a>
+
+ <blockquote>
+ <p>
+ <strong>i586 only:</strong>
+ The
+ OpenJDK
+ 32bit build requires
+ access to <tt>MSVCRT.DLL</tt>
+ version 6.00.8337.0 or newer.
+ If the <tt>MSVCRT.DLL</tt> is not installed in
+ the system32 directory set the
+ <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
+ variable to the location.
+ <p>
+ <strong>X64 only:</strong>
+ The OpenJDK 64bit build requires access to
+ <tt>MSVCRT.DLL</tt> version 7.0.3790.0 or newer, which is
+ usually supplied by the
+ <a href="#mssdk">Platform SDK</a>.
+ If it is not available from the Platform SDK,
+ set the
+ <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
+ variable to the location.
+ </blockquote>
+
+ <a name="msvcr71">
+ <strong><tt>MSVCR71.DLL</tt></strong>
+ </a>
+
+ <blockquote>
+ <p>
+ <strong>i586 only:</strong>
+ The
+ OpenJDK
+ build requires access to
+ MSVCR71.DLL version 7.10.3052.4 or newer which should be
+ supplied by the
+ <a href="#msvc">Visual Studio product</a>
+ If the <tt>MSVCR71.DLL</tt> is not available from the
+ Visual Studio product
+ set the
+ <a href="#ALT_MSVCR71_DLL_PATH"><tt>ALT_MSVCR71_DLL_PATH</tt></a>
+ variable to the location.
+ </blockquote>
+
+ </blockquote>
+
+
+</blockquote>
+
+
+<hr noshade="noshade" size="3">
+
+<h2><a name="creating">Creating the Build</a></h2>
+
+<blockquote>
+ <p>
+ Once a machine is setup to build the
+ OpenJDK,
+ the steps to create the
+ build are fairly simple.
+ The various ALT settings can either be made into variables
+ or can be supplied on the
+ <a href="#gmake"><tt><i>gmake</i></tt></a>
+ command.
+ <p>
+ <ol>
+ <li>Use the sanity rule to double check all the ALT settings:
+ <blockquote>
+ <tt>
+ <i>gmake</i>
+ sanity
+ [ARCH_DATA_MODEL=<i>32 or 64</i>]
+ [other "ALT_" overrides]
+ </tt>
+ </blockquote>
+ </li>
+ <li>Start the build with the command:
+ <blockquote>
+ <tt>
+ <i>gmake</i>
+ [ARCH_DATA_MODEL=<i>32 or 64</i>]
+ [ALT_OUTPUTDIR=<i>output_directory</i>]
+ [other "ALT_" overrides]
+ </tt>
+ </blockquote>
+ </li>
+ </ol>
+ <p>
+ <strong>Solaris:</strong>
+ Note that ARCH_DATA_MODEL is really only needed on Solaris to
+ indicate you want to built the 64-bit version.
+ And before the Solaris 64-bit binaries can be used, they
+ must be merged with the binaries from a separate 32-bit build.
+ The merged binaries may then be used in either 32-bit or 64-bit mode, with
+ the selection occurring at runtime
+ with the <tt>-d32</tt> or <tt>-d64</tt> options.
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<h2><a name="testing">Testing the Build</a></h2>
+
+<blockquote>
+ <p>
+ When the build is completed, you should see the generated
+ binaries and associated files in the <tt>j2sdk-image</tt>
+ directory in the output directory.
+ The default output directory is
+ <tt>build/<i>platform</i></tt>,
+ where <tt><i>platform</i></tt> is one of
+ <tt><ul>
+ <li>solaris-sparc</li>
+ <li>solaris-sparcv9</li>
+ <li>solaris-i586</li>
+ <li>solaris-amd64</li>
+ <li>linux-i586</li>
+ <li>linux-amd64</li>
+ <li>windows-i586</li>
+ <li>windows-amd64</li>
+ </ul></tt>
+ In particular, the
+ <tt>build/<i>platform</i>/j2sdk-image/bin</tt>
+ directory should contain executables for the
+ OpenJDK
+ tools and utilities.
+ <p>
+ You can test that the build completed properly by using the build
+ to run the various demos that you will find in the
+ <tt>build/<i>platform</i>/j2sdk-image/demo</tt>
+ directory.
+ <p>
+ The provided regression tests can be run with the <tt>jtreg</tt>
+ utility from
+ <a href="http://openjdk.java.net/jtreg/">the jtreg site</a>.
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<h2><a name="variables">Environment/Make Variables</a></h2>
+
+<p>
+Some of the
+environment or make variables (just called <b>variables</b> in this
+document) that can impact the build are:
+
+<blockquote>
+
+ <dl>
+
+ <dt><a name="path"><tt>PATH</tt></a> </dt>
+ <dd>Typically you want to set the <tt>PATH</tt> to include:
+ <ul>
+ <li>The location of the GNU make binary</li>
+ <li>The location of the JDK 6 <tt>java</tt>
+ (see <a href="#bootjdk">Bootstrap JDK</a>)</li>
+ <li>The location of the C/C++ compilers
+ (see <a href="#compilers"><tt>compilers</tt></a>)</li>
+ <li>The location or locations for the Unix command utilities
+ (e.g. <tt>/usr/bin</tt>)</li>
+ </ul>
+ </dd>
+
+ <dt><a name="arch_data_model"><tt>ARCH_DATA_MODEL</tt></a></dt>
+ <dd>The <tt>ARCH_DATA_MODEL</tt> variable
+ is used to specify whether the build is to generate 32-bit or 64-bit
+ binaries.
+ The Solaris build supports either 32-bit or 64-bit builds, but
+ Windows and Linux will support only one, depending on the specific
+ OS being used.
+ Normally, setting this variable is only necessary on Solaris.
+ Set <tt>ARCH_DATA_MODEL</tt> to <tt>32</tt> for generating 32-bit binaries,
+ or to <tt>64</tt> for generating 64-bit binaries.
+ </dd>
+
+ <dt><a name="ALT_BOOTDIR"><tt>ALT_BOOTDIR</tt></a></dt>
+ <dd>
+ The location of the bootstrap JDK installation.
+ See <a href="#bootjdk">Bootstrap JDK</a> for more information.
+ You should always install your own local Bootstrap JDK and
+ always set <tt>ALT_BOOTDIR</tt> explicitly.
+ </dd>
+
+ <dt><a name="ALT_OUTPUTDIR"><tt>ALT_OUTPUTDIR</tt></a> </dt>
+ <dd>
+ An override for specifying the (absolute) path of where the
+ build output is to go.
+ The default output directory will be build/<i>platform</i>.
+ </dd>
+
+ <dt><a name="ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> </dt>
+ <dd>
+ The location of the C/C++ compiler.
+ The default varies depending on the platform.
+ </dd>
+
+ <dt><tt><a name="ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt></dt>
+ <dd>
+ The location of the <a href="#cacerts">cacerts</a> file.
+ The default will refer to
+ <tt>jdk/src/share/lib/security/cacerts</tt>.
+ </dd>
+
+ <dt><a name="ALT_BINARY_PLUGS_PATH"><tt>ALT_BINARY_PLUGS_PATH</tt></a></dt>
+ <dd>
+ The location of the binary plugs installation.
+ See <a href="#binaryplugs">Binary Plugs</a> for more information.
+ You should always have a local copy of a
+ recent Binary Plugs install image
+ and set this variable to that location.
+ </dd>
+
+ <dt><a name="ALT_CUPS_HEADERS_PATH"><tt>ALT_CUPS_HEADERS_PATH</tt></a> </dt>
+ <dd>
+ The location of the CUPS header files.
+ See <a href="#cups">CUPS information</a> for more information.
+ If this path does not exist the fallback path is
+ <tt>/usr/include</tt>.
+ </dd>
+
+
+ <dt><a name="ALT_FREETYPE_LIB_PATH"><tt>ALT_FREETYPE_LIB_PATH</tt></a></dt>
+ <dd>
+ The location of the FreeType shared library.
+ See <a href="#freetype">FreeType information</a> for details.
+ </dd>
+
+ <dt><a name="ALT_FREETYPE_HEADERS_PATH"><tt>ALT_FREETYPE_HEADERS_PATH</tt></a></dt>
+ <dd>
+ The location of the FreeType header files.
+ See <a href="#freetype">FreeType information</a> for details.
+ </dd>
+
+ <dt><strong>Windows specific:</strong></dt>
+ <dd>
+ <dl>
+ <dt><a name="ALT_MSDEVTOOLS_PATH"><tt>ALT_MSDEVTOOLS_PATH</tt></a> </dt>
+ <dd>
+ The location of the Microsoft Visual Studio .NET 2003
+ tools 'bin' directory.
+ The default is usually derived from
+ <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
+ </dd>
+
+ <dt><tt><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> </dt>
+ <dd>
+ The location of the
+ <a href="#dxsdk">Microsoft DirectX 9 SDK</a>.
+ The default will be to try and use the DirectX environment
+ variable <tt>DXSDK_DIR</tt>,
+ failing that, look in <tt>C:/DXSDK</tt>.
+ </dd>
+
+ <dt><tt><a name="ALT_MSVCRT_DLL_PATH">ALT_MSVCRT_DLL_PATH</a></tt> </dt>
+ <dd>
+ The location of the
+ <a href="#msvcrt"><tt>MSVCRT.DLL</tt></a>.
+ </dd>
+
+ <dt><tt><a name="ALT_MSVCR71_DLL_PATH">ALT_MSVCR71_DLL_PATH</a></tt> </dt>
+ <dd>
+ <strong>i586 only:</strong>
+ The location of the
+ <a href="#msvcr71"><tt>MSVCR71.DLL</tt></a>.
+ </dd>
+ </dl>
+ </dd>
+
+ </dl>
+</blockquote>
+
+<!-- ------------------------------------------------------ -->
+<hr noshade="noshade" size="3">
+
+<h2><a name="troubleshooting">Troubleshooting</a></h2>
+
+<blockquote>
+ <p>
+ A build can fail for any number of reasons.
+ Most failures
+ are a result of trying to build in an environment in which all the
+ pre-build requirements have not been met.
+ The first step in
+ troubleshooting a build failure is to recheck that you have satisfied
+ all the pre-build requirements for your platform.
+ Look for the check list of the platform you are building on in the
+ <a href="#contents">Table of Contents</a>.
+
+ <p>
+ You can validate your build environment by using the <tt>sanity</tt>
+ target.
+ Any errors listed
+ will stop the build from starting, and any warnings may result in
+ a flawed product build.
+ We strongly encourage you to evaluate every
+ sanity check warning and fix it if required, before you proceed
+ further with your build.
+
+ <p>
+ Some of the more common problems with builds are briefly described
+ below, with suggestions for remedies.
+
+ <ul>
+ <li>
+ <b>Slow Builds:</b>
+ <blockquote>
+ <p>
+ If your build machine seems to be overloaded from too many
+ simultaneous C++ compiles, try setting the <tt>HOTSPOT_BUILD_JOBS</tt>
+ variable to <tt>1</tt> (if you're using a multiple CPU
+ machine, setting it to more than the the number of CPUs is probably
+ not a good idea).
+ <p>
+ Creating the javadocs can be very slow, if you are running
+ javadoc, consider skipping that step.
+ <p>
+ Faster hardware and more RAM always helps too.
+ The VM build tends to be CPU intensive (many C++ compiles),
+ and the rest of the JDK will often be disk intensive.
+ <p>
+ Faster compiles are possible using a tool called
+ <a href="http://ccache.samba.org/">ccache</a>.
+ </blockquote>
+ </li>
+ <li>
+ <b>File time issues:</b>
+ <blockquote>
+ <p>
+ If you see warnings that refer to file time stamps, e.g.
+ <blockquote>
+ <i>Warning message:</i><tt> File `xxx' has modification time in
+ the future.</tt>
+ <br>
+ <i>Warning message:</i> <tt> Clock skew detected. Your build may
+ be incomplete.</tt>
+ </blockquote>
+ <p>
+ These warnings can occur when the clock on the build machine is out of
+ sync with the timestamps on the source files. Other errors, apparently
+ unrelated but in fact caused by the clock skew, can occur along with
+ the clock skew warnings. These secondary errors may tend to obscure the
+ fact that the true root cause of the problem is an out-of-sync clock.
+ For example, an out-of-sync clock has been known to cause an old
+ version of javac to be used to compile some files, resulting in errors
+ when the pre-1.4 compiler ran across the new <tt>assert</tt> keyword
+ in the 1.4 source code.
+ <p>
+ If you see these warnings, reset the clock on the build
+ machine, run "<tt><i>gmake</i> clobber</tt>" or delete the directory
+ containing the build output, and restart the build from the beginning.
+ </blockquote>
+ </li>
+ <li>
+ <b>Error message: <tt>Trouble writing out table to disk</tt></b>
+ <blockquote>
+ <p>
+ Increase the amount of swap space on your build machine.
+ </blockquote>
+ </li>
+ <li>
+ <b>Error Message: <tt>libstdc++ not found:</tt></b>
+ <blockquote>
+ This is caused by a missing libstdc++.a library.
+ This is installed as part of a specific package
+ (e.g. libstdc++.so.devel.386).
+ By default some 64bit Linux versions (e.g. Fedora)
+ only install the 64bit version of the libstdc++ package.
+ Various parts of the JDK build require a static
+ link of the C++ runtime libraries to allow for maximum
+ portability of the built images.
+ </blockquote>
+ </li>
+ <li>
+ <b>Error Message: <tt>cannot restore segment prot after reloc</tt></b>
+ <blockquote>
+ This is probably an issue with SELinux (See
+ <a href="http://en.wikipedia.org/wiki/SELinux">http://en.wikipedia.org/wiki/SELinux</a>).
+ Parts of the VM is built without the <tt>-fPIC</tt> for
+ performance reasons.
+ <p>
+ To completely disable SELinux:
+ <ol><tt>
+
+ <li>$ su root</li>
+ <li># system-config-securitylevel</li>
+ <li>In the window that appears, select the SELinux tab</li>
+ <li>Disable SELinux</li>
+ </ol></tt>
+ <p>
+ Alternatively, instead of completely disabling it you could
+ disable just this one check.
+ <ol><tt>
+ <li>Select System->Administration->SELinux Management</li>
+ <li>In the SELinux Management Tool which appears,
+ select "Boolean" from the menu on the left</li>
+ <li>Expand the "Memory Protection" group</li>
+ <li>Check the first item, labeled
+ "Allow all unconfined executables to use libraries requiring text relocation ..."</li>
+ </ol></tt>
+ </blockquote>
+ </li>
+ </ul>
+</blockquote>
+
+<hr noshade="noshade" size="3">
diff --git a/jdk/make/README.html b/jdk/make/README.html
new file mode 100644
index 0000000..ae415b1
--- /dev/null
+++ b/jdk/make/README.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+
+ <head> <title>OpenJDK README</title> </head>
+
+ <!-- ====================================================== -->
+ <hr noshade="noshade" size="3">
+ <center>
+ <h1>OpenJDK README</h1>
+ </center>
+
+ <!-- ------------------------------------------------------ -->
+ <hr noshade="noshade" size="3">
+
+ <h2>TBD</h2>
+
+ <h2>Building the OpenJDK</h2>
+
+ <p>
+ Refer to <a href="README-builds.html">the OpenJDK Build README</a>
+ for build instructions.
+
+ <!-- ====================================================== -->
+
+ <hr noshade="noshade" size="3">
+
+ </body>
+</html>
diff --git a/jdk/make/THIRD_PARTY_README b/jdk/make/THIRD_PARTY_README
new file mode 100644
index 0000000..9f4d7e5
--- /dev/null
+++ b/jdk/make/THIRD_PARTY_README
@@ -0,0 +1,1616 @@
+DO NOT TRANSLATE OR LOCALIZE.
+
+%% This notice is provided with respect to Thai dictionary for text breaking, which may be included with this software:
+
+--- begin of LICENSE file ---
+
+Copyright (C) 1982 The Royal Institute, Thai Royal Government.
+
+Copyright (C) 1998 National Electronics and Computer Technology Center,
+ National Science and Technology Development Agency,
+ Ministry of Science Technology and Environment,
+ Thai Royal Government.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without
+limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to
+whom the Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+--- end of LICENSE file ---
+%% This notice is provided with respect to ASM, which may be included with this software:
+Copyright (c) 2000-2005 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+%% This notice is provided with respect to zlib 1.1.3, which may be included with this software:
+
+Acknowledgments:
+
+ The deflate format used by zlib was defined by Phil Katz. The deflate
+ and zlib specifications were written by L. Peter Deutsch. Thanks to all the
+ people who reported problems and suggested various improvements in zlib;
+ they are too numerous to cite here.
+
+Copyright notice:
+
+ (C) 1995-1998 Jean-loup Gailly and Mark Adler
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ Jean-loup Gailly Mark Adler
+ jloup@gzip.org madler@alumni.caltech.edu
+
+If you use the zlib library in a product, we would appreciate *not*
+receiving lengthy legal documents to sign. The sources are provided
+for free but without warranty of any kind. The library has been
+entirely written by Jean-loup Gailly and Mark Adler; it does not
+include third-party code.
+
+If you redistribute modified sources, we would appreciate that you include
+in the file ChangeLog history information documenting your changes.
+
+%% This notice is provided with respect to W3C (DTD for XML Signatures), which may be included with this software:
+W3C® SOFTWARE NOTICE AND LICENSE
+Copyright © 1994-2002 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/
+This W3C work (including software, documents, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:
+Permission to use, copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make:
+1.The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
+2.Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/"
+3.Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)
+THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
+The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.
+____________________________________
+This formulation of W3C's notice and license became active on August 14 1998 so as to improve compatibility with GPL. This version ensures that W3C software licensing terms are no more restrictive than GPL and consequently W3C software may be distributed in GPL packages. See the older formulation for the policy prior to this date. Please see our Copyright FAQ for common questions about using materials from our site, including specific terms and conditions for packages like libwww, Amaya, and Jigsaw. Other questions about this notice can be directed to site-policy@w3.org.
+
+%% This notice is provided with respect to jscheme.jar, which may be included with this software:
+Software License Agreement
+Copyright © 1998-2002 by Peter Norvig.
+Permission is granted to anyone to use this software, in source or object code form, on any computer system, and to modify, compile, decompile, run, and redistribute it to anyone else, subject to the following restrictions:
+1.The author makes no warranty of any kind, either expressed or implied, about the suitability of this software for any purpose.
+2.The author accepts no liability of any kind for damages or other consequences of the use of this software, even if they arise from defects in the software.
+3.The origin of this software must not be misrepresented, either by explicit claim or by omission.
+4.Altered versions must be plainly marked as such, and must not be misrepresented as being the original software. Altered versions may be distributed in packages under other licenses (such as the GNU license).
+If you find this software useful, it would be nice if you let me (peter@norvig.com) know about it, and nicer still if you send me modifications that you are willing to share. However, you are not required to do so.
+
+
+%% This notice is provided with respect to PC/SC Lite for Suse Linux v. 1.1.1, which may be included with this software:
+
+Copyright (c) 1999-2004 David Corcoran
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+Changes to this license can be made only by the copyright author with
+explicit written consent.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+%% This notice is provided with respect to IAIK PKCS Wrapper, which may be included with this software:
+
+Copyright (c) 2002 Graz University of Technology. All rights reserved.
+Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met:
+
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment:
+
+ "This product includes software developed by IAIK of Graz University of Technology."
+
+ Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear.
+
+4. The names "Graz University of Technology" and "IAIK of Graz University of Technology" must not be used to endorse or promote products derived from this software without prior written permission.
+
+5. Products derived from this software may not be called "IAIK PKCS Wrapper", nor may "IAIK" appear in their name, without prior written permission of Graz University of Technology.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+%% This notice is provided with respect to Document Object Model (DOM) v. Level 3, which may be included with this software:
+
+W3Cýý SOFTWARE NOTICE AND LICENSE
+
+http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+This work (and included software, documentation such as READMEs, or other related items) is being
+provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you
+(the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
+
+Permission to copy, modify, and distribute this software and its documentation, with or without modification, for
+any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies
+of the software and documentation or portions thereof, including modifications:
+ 1.The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
+ 2.Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the
+ W3C Software Short Notice should be included (hypertext is preferred, text is permitted) within the body
+ of any redistributed or derivative code.
+ 3.Notice of any changes or modifications to the files, including the date changes were made. (We
+ recommend you provide URIs to the location from which the code is derived.)
+THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKENO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO,
+WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THEUSE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL ORCONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
+The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the
+software without specific, written prior permission. Title to copyright in this software and any associated
+documentation will at all times remain with copyright holders.
+
+____________________________________
+
+This formulation of W3C's notice and license became active on December 31 2002. This version removes the
+copyright ownership notice such that this license can be used with materials other than those owned by the
+W3C, reflects that ERCIM is now a host of the W3C, includes references to this specific dated version of the
+license, and removes the ambiguous grant of "use". Otherwise, this version is the same as the previous
+version and is written so as to preserve the Free Software Foundation's assessment of GPL compatibility and
+OSI's certification under the Open Source Definition. Please see our Copyright FAQ for common questions
+about using materials from our site, including specific terms and conditions for packages like libwww, Amaya,
+and Jigsaw. Other questions about this notice can be directed to
+site-policy@w3.org.
+
+%% This notice is provided with respect to Xalan, Xerces, which may be included with this software:
+
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999-2003 The Apache Software Foundation. All rights * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer. *
+ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. *
+ * 4. The names "Xerces" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ==================================================================== *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 1999, International
+ * Business Machines, Inc., http://www.ibm.com. For more
+ * information on the Apache Software Foundation, please see
+ *
+
+%% This notice is provided with respect to JavaScript, which may be included with this software:
+
+AMENDMENTS
+The Netscape Public License Version 1.1 ("NPL") consists of the Mozilla Public License Version 1.1 with the following Amendments, including Exhibit A-Netscape Public License. Files identified with "Exhibit A-Netscape Public License" are governed by the Netscape Public License Version 1.1.
+Additional Terms applicable to the Netscape Public License.
+I. Effect.
+These additional terms described in this Netscape Public License -- Amendments shall apply to the Mozilla Communicator client code and to all Covered Code under this License.
+II. ''Netscape's Branded Code'' means Covered Code that Netscape distributes and/or permits others to distribute under one or more trademark(s) which are controlled by Netscape but which are not licensed for use under this License.
+III. Netscape and logo.
+This License does not grant any rights to use the trademarks "Netscape'', the "Netscape N and horizon'' logo or the "Netscape lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript", "Smart Browsing" even if such marks are included in the Original Code or Modifications.
+IV. Inability to Comply Due to Contractual Obligation.
+Prior to licensing the Original Code under this License, Netscape has licensed third party code for use in Netscape's Branded Code. To the extent that Netscape is limited contractually from making such third party code available under this License, Netscape may choose to reintegrate such code into Covered Code without being required to distribute such code in Source Code form, even if such code would otherwise be considered ''Modifications'' under this License.
+V. Use of Modifications and Covered Code by Initial Developer.
+V.1. In General.
+The obligations of Section 3 apply to Netscape, except to the extent specified in this Amendment, Section V.2 and V.3.
+V.2. Other Products.
+Netscape may include Covered Code in products other than the Netscape's Branded Code which are released by Netscape during the two (2) years following the release date of the Original Code, without such additional products becoming subject to the terms of this License, and may license such additional products on different terms from those contained in this License.
+V.3. Alternative Licensing.
+Netscape may license the Source Code of Netscape's Branded Code, including Modifications incorporated therein, without such Netscape Branded Code becoming subject to the terms of this License, and may license such Netscape Branded Code on different terms from those contained in this License.
+
+VI. Litigation.
+Notwithstanding the limitations of Section 11 above, the provisions regarding litigation in Section 11(a), (b) and (c) of the License shall apply to all disputes relating to this License.
+
+EXHIBIT A-Netscape Public License.
+
+''The contents of this file are subject to the Netscape Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/NPL/
+Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
+The Original Code is Mozilla Communicator client code, released March 31, 1998.
+The Initial Developer of the Original Code is Netscape Communications Corporation. Portions created by Netscape are Copyright (C) 1998-1999 Netscape Communications Corporation. All Rights Reserved.
+Contributor(s): ______________________________________.
+
+Alternatively, the contents of this file may be used under the terms of the _____ license (the "[___] License"), in which case the provisions of [______] License are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the NPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the [___] License. If you do not delete the provisions above, a recipient may use your version of this file under either the NPL or the [___] License."
+
+MOZILLA PUBLIC LICENSE
+Version 1.1
+
+1. Definitions.
+1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party.
+1.1. ''Contributor'' means each entity that creates or contributes to the creation of Modifications.
+1.2. ''Contributor Version'' means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor.
+1.3. ''Covered Code'' means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof.
+1.4. ''Electronic Distribution Mechanism'' means a mechanism generally accepted in the software development community for the electronic transfer of data.
+1.5. ''Executable'' means Covered Code in any form other than Source Code.
+1.6. ''Initial Developer'' means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A.
+1.7. ''Larger Work'' means a work which combines Covered Code or portions thereof with code not governed by the terms of this License.
+1.8. ''License'' means this document.
+1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+1.9. ''Modifications'' means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is:
+A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications.
+B. Any new file that contains any part of the Original Code or previous Modifications.
+
+1.10. ''Original Code'' means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License.
+1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+1.11. ''Source Code'' means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge.
+1.12. "You'' (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You'' includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control'' means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+2. Source Code License.
+2.1. The Initial Developer Grant.
+The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and
+(b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof).
+
+(c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License.
+(d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices.
+
+2.2. Contributor Grant.
+Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license
+
+(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+(c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code.
+(d) Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+3.1. Application of License.
+The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5.
+3.2. Availability of Source Code.
+Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party.
+3.3. Description of Modifications.
+You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code.
+3.4. Intellectual Property Matters
+(a) Third Party Claims.
+If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL'' which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained.
+(b) Contributor APIs.
+If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file.
+
+ (c) Representations.
+Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License.
+
+3.5. Required Notices.
+You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+3.6. Distribution of Executable Versions.
+You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+3.7. Larger Works.
+You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.
+4. Inability to Comply Due to Statute or Regulation.
+If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
+5. Application of this License.
+This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code.
+6. Versions of the License.
+6.1. New Versions.
+Netscape Communications Corporation (''Netscape'') may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.
+6.2. Effect of New Versions.
+Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License.
+6.3. Derivative Works.
+If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'', ''Netscape'', "MPL", ''NPL'' or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.)
+7. DISCLAIMER OF WARRANTY.
+COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+8. TERMINATION.
+8.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+8.2. If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant") alleging that:
+(a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above.
+(b) any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant.
+8.3. If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.
+8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination.
+9. LIMITATION OF LIABILITY.
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+10. U.S. GOVERNMENT END USERS.
+The Covered Code is a ''commercial item,'' as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of ''commercial computer software'' and ''commercial computer software documentation,'' as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein.
+11. MISCELLANEOUS.
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
+12. RESPONSIBILITY FOR CLAIMS.
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+13. MULTIPLE-LICENSED CODE.
+Initial Developer may designate portions of the Covered Code as "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the NPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A -Mozilla Public License.
+``The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
+http://www.mozilla.org/MPL/
+Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
+ANY KIND, either express or implied. See the License for the specific language governing rights and
+limitations under the License.
+The Original Code is ______________________________________.
+The Initial Developer of the Original Code is ________________________. Portions created by
+ ______________________ are Copyright (C) ______ _______________________. All Rights
+Reserved.
+Contributor(s): ______________________________________.
+Alternatively, the contents of this file may be used under the terms of the _____ license (the "[___] License"), in which case the provisions of [______] License are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the MPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the [___] License. If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the [___] License."
+[NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.]
+
+%% This notice is provided with respect to Mesa 3-D graphics library v. 5, which may be included with this software:
+
+Copyright (c) 2007 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Materials.
+
+THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+
+%% This notice is provided with respect to Byte Code Engineering Library (BCEL), which may be included with this software:
+
+ Apache Software License
+
+ /*
+==================================================================== * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Apache Software Foundation. Allrights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, withor without
+ * modification, are permitted provided that the followingconditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the abovecopyright
+ * notice, this list of conditions and the followingdisclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce theabove copyright
+ * notice, this list of conditions and the followingdisclaimer in
+ * the documentation and/or other materials providedwith the
+ * distribution.
+ *
+ * 3. The end-user documentation included with theredistribution,
+ * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation
+(http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in thesoftware itself,
+ * if and wherever such third-party acknowledgmentsnormally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation"and
+ * "Apache BCEL" must not be used to endorse or promoteproducts
+ * derived from this software without prior writtenpermission. For
+ * written permission, please contact apache@apache.org. *
+ * 5. Products derived from this software may not be called"Apache",
+ * "Apache BCEL", nor may "Apache" appear in their name,without
+ * prior written permission of the Apache SoftwareFoundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED ORIMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSEARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWAREFOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVERCAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING INANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+==================================================================== *
+ * This software consists of voluntary contributions madeby many
+ * individuals on behalf of the Apache Software
+Foundation. For more
+ * information on the Apache Software Foundation, pleasesee
+ * .
+ */
+
+%% This notice is provided with respect to Regexp, Regular Expression Package, which may be included with this software:
+
+The Apache Software License, Version 1.1
+Copyright (c) 2001 The Apache Software Foundation. All rights
+reserved.
+Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the
+distribution.
+
+3. The end-user documentation included with the redistribution,
+if any, must include the following acknowledgment:
+"This product includes software developed by the
+Apache Software Foundation (http://www.apache.org/)."
+Alternately, this acknowledgment may appear in the software itself,
+if and wherever such third-party acknowledgments normally appear.
+
+4. The names "Apache" and "Apache Software Foundation" and
+"Apache Turbine" must not be used to endorse or promote products
+derived from this software without prior written permission. For
+written permission, please contact apache@apache.org.
+
+5. Products derived from this software may not be called "Apache",
+"Apache Turbine", nor may "Apache" appear in their name, without
+prior written permission of the Apache Software Foundation.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+====================================================================
+This software consists of voluntary contributions made by many
+individuals on behalf of the Apache Software Foundation. For more
+information on the Apache Software Foundation, please see
+
+http://www.apache.org.
+
+%% This notice is provided with respect to CUP Parser Generator for Java, which may be included with this software:
+
+CUP Parser Generator Copyright Notice, License, and Disclaimer
+
+Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott Ananian
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted, provided thatthe above copyright notice appear in all copies and that both the copyrightnotice and this permission notice and warranty disclaimer appear in
+supporting documentation, and that the names of the authors or their employersnot be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission.
+
+The authors and their employers disclaim all warranties with regard to thissoftware, including all implied warranties of merchantability and
+fitness. In no event shall the authors or their employers be liable for anyspecial, indirect or consequential damages or any damages whatsoever
+resulting from loss of use, data or profits, whether in an action of contract,negligence or other tortious action, arising out of or in connection withthe use or performance of this software.
+
+%% This notice is provided with respect to SAX v. 2.0.1, which may be included with this software:
+
+Copyright Status
+
+ SAX is free!
+
+ In fact, it's not possible to own a license to SAX, since it's been placed in the public
+ domain.
+
+ No Warranty
+
+ Because SAX is released to the public domain, there is no warranty for the design or for
+ the software implementation, to the extent permitted by applicable law. Except when
+ otherwise stated in writing the copyright holders and/or other parties provide SAX "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 SAX is with you. Should SAX prove defective, you
+ assume the cost of all necessary servicing, repair or correction.
+
+ In no event unless required by applicable law or agreed to in writing will any copyright
+ holder, or any other party who may modify and/or redistribute SAX, be liable to you for
+ damages, including any general, special, incidental or consequential damages arising out of
+ the use or inability to use SAX (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 SAX to
+ operate with any other programs), even if such holder or other party has been advised of
+ the possibility of such damages.
+
+ Copyright Disclaimers
+
+ This page includes statements to that effect by David Megginson, who would have been
+ able to claim copyright for the original work.
+ SAX 1.0
+
+ Version 1.0 of the Simple API for XML (SAX), created collectively by the membership of
+ the XML-DEV mailing list, is hereby released into the public domain.
+
+ No one owns SAX: you may use it freely in both commercial and non-commercial
+ applications, bundle it with your software distribution, include it on a CD-ROM, list the
+ source code in a book, mirror the documentation at your own web site, or use it in any
+ other way you see fit.
+
+ David Megginson, sax@megginson.com
+ 1998-05-11
+
+ SAX 2.0
+
+ I hereby abandon any property rights to SAX 2.0 (the Simple API for XML), and release
+ all of the SAX 2.0 source code, compiled code, and documentation contained in this
+ distribution into the Public Domain. SAX comes with NO WARRANTY or guarantee of
+ fitness for any purpose.
+
+ David Megginson, david@megginson.com
+ 2000-05-05
+
+%% This notice is provided with respect to Cryptix, which may be included with this software:
+
+Cryptix General License
+
+Copyright © 1995-2003 The Cryptix Foundation Limited. All rights reserved.
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions aremet:
+
+ 1.Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer. 2.Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+THIS SOFTWARE IS PROVIDED BY THE CRYPTIX FOUNDATION LIMITED AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS ORIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FORA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE CRYPTIX FOUNDATION LIMITED OR CONTRIBUTORS BELIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOTLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESSINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OFTHE POSSIBILITY OF SUCH DAMAGE.
+
+%% This notice is provided with respect to X Window System, which may be included with this software:
+
+Copyright The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and itsdocumentation for any purpose is hereby granted without fee, provided that theabove copyright notice appear in all copies and that both that copyright noticeand this permission notice appear in supporting documentation.
+
+The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUPBE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OFCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THESOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group.
+
+Portions also covered by other licenses as noted in the above URL.
+
+%% This notice is provided with respect to Retroweaver, which may be included with this software:
+
+Copyright (c) February 2004, Toby Reyelts
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+Neither the name of Toby Reyelts nor the names of his contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+%% This notice is provided with respect to stripper, which may be included with this software:
+
+Stripper : debug information stripper
+ Copyright (c) 2003 Kohsuke Kawaguchi
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holders nor the names of its
+ contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+%% This notice is provided with respect to libpng official PNG reference library, which may be included with this software:
+
+This copy of the libpng notices is provided for your convenience. In case ofany discrepancy between this copy and the notices in the file png.h that isincluded in the libpng distribution, the latter shall prevail.
+
+COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
+
+If you modify libpng you may insert additional notices immediately followingthis sentence.
+
+libpng version 1.2.6, December 3, 2004, is
+Copyright (c) 2004 Glenn Randers-Pehrson, and is
+distributed according to the same disclaimer and license as libpng-1.2.5with the following individual added to the list of Contributing Authors
+ Cosmin Truta
+
+libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, areCopyright (c) 2000-2002 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-1.0.6with the following individuals added to the list of Contributing Authors
+ Simon-Pierre Cadieux
+ Eric S. Raymond
+ Gilles Vollant
+
+and with the following additions to the disclaimer:
+
+ There is no warranty against interference with your enjoyment of the library or against infringement. There is no warranty that our
+ efforts or the library will fulfill any of your particular purposes or needs. This library is provided with all faults, and the entire risk of satisfactory quality, performance, accuracy, and effort is with the user.
+
+libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, areCopyright (c) 1998, 1999 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-0.96,with the following individuals added to the list of Contributing Authors:
+ Tom Lane
+ Glenn Randers-Pehrson
+ Willem van Schaik
+
+libpng versions 0.89, June 1996, through 0.96, May 1997, are
+Copyright (c) 1996, 1997 Andreas Dilger
+Distributed according to the same disclaimer and license as libpng-0.88,with the following individuals added to the list of Contributing Authors:
+ John Bowler
+ Kevin Bracey
+ Sam Bushell
+ Magnus Holmgren
+ Greg Roelofs
+ Tom Tanner
+
+libpng versions 0.5, May 1995, through 0.88, January 1996, are
+Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
+
+For the purposes of this copyright and license, "Contributing Authors"is defined as the following set of individuals:
+
+ Andreas Dilger
+ Dave Martindale
+ Guy Eric Schalnat
+ Paul Schmidt
+ Tim Wegner
+
+The PNG Reference Library is supplied "AS IS". The Contributing Authorsand Group 42, Inc. disclaim all warranties, expressed or implied,
+including, without limitation, the warranties of merchantability and offitness for any purpose. The Contributing Authors and Group 42, Inc.
+assume no liability for direct, indirect, incidental, special, exemplary,or consequential damages, which may result from the use of the PNG
+Reference Library, even if advised of the possibility of such damage.
+
+Permission is hereby granted to use, copy, modify, and distribute thissource code, or portions hereof, for any purpose, without fee, subjectto the following restrictions:
+
+1. The origin of this source code must not be misrepresented.
+
+2. Altered versions must be plainly marked as such and must not
+ be misrepresented as being the original source.
+
+3. This Copyright notice may not be removed or altered from any
+ source or altered source distribution.
+
+The Contributing Authors and Group 42, Inc. specifically permit, withoutfee, and encourage the use of this source code as a component to
+supporting the PNG file format in commercial products. If you use thissource code in a product, acknowledgment is not required but would be
+appreciated.
+
+
+A "png_get_copyright" function is available, for convenient use in "about"boxes and the like:
+
+ printf("%s",png_get_copyright(NULL));
+
+Also, the PNG logo (in PNG format, of course) is supplied in the
+files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
+
+Libpng is OSI Certified Open Source Software. OSI Certified Open Source is acertification mark of the Open Source Initiative.
+
+Glenn Randers-Pehrson
+glennrp at users.sourceforge.net
+December 3, 2004
+
+%% This notice is provided with respect to Libungif - An uncompressed GIF library, which may be included with this software:
+
+The GIFLIB distribution is Copyright (c) 1997 Eric S. Raymond
+
+Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to dealin the Software without restriction, including without limitation the rightsto use, copy, modify, merge, publish, distribute, sublicense, and/or sellcopies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included inall copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS INTHE SOFTWARE.
+
+%% This notice is provided with respect to XML Resolver library, Xalan J2, and StAX API, which may be included with this software:
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+ "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+ "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+
+%% Some Portions licensed from IBM are available at:
+http://www.ibm.com/software/globalization/icu/
+
+%% This notice is provided with respect to ICU4J, ICU 1.8.1 and later, which may be included with this software:
+
+ICU License - ICU 1.8.1 and later COPYRIGHT AND PERMISSION NOTICE Cop
+yright (c)
+1995-2003 International Business Machines Corporation and others All rightsreserved. Permission is hereby granted, free of charge, to any person obtaininga copy of this software and associated documentation files (the "Software"), todeal in the Software without restriction, including without limitation therights to use, copy, modify, merge, publish, distribute, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,provided that the above copyright notice(s) and this permission notice appear inall copies of the Software and that both the above copyright notice(s) and thispermission notice appear in supporting documentation. THE SOFTWARE IS PROVIDED"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOTLIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSEAND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHTHOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY C
+ LAIM, OR ANYSPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTINGFROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCEOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE ORPERFORMANCE OF THIS SOFTWARE. Except as contained in this notice, the name of acopyright holder shall not be used in advertising or otherwise to promote thesale, use or other dealings in this Software without prior written authorizationof the copyright holder.
+
+%% This notice is provided with respect to Jing, which may be included with this software:
+
+Jing Copying Conditions
+
+Copyright (c) 2001-2003 Thai Open Source Software Center Ltd
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,this list of conditions and the following disclaimer in the documentation and/orother materials provided with the distribution.
+ * Neither the name of the Thai Open Source Software Center Ltd nor the namesof its contributors may be used to endorse or promote products derived from thissoftware without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AREDISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ONANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THISSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+%% This notice is provided with respect to RELAX NG Object Model/Parser, which may be included with this software:
+
+
+The MIT License
+
+Copyright (c)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal inthe Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS ORCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR INCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+%% This notice is provided with respect to XFree86-VidMode Extension, which may be included with this software:
+
+Version 1.1 of XFree86 ProjectLicence.
+
+ Copyright (C) 1994-2004 The XFree86 Project, Inc. All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to deal inthe Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicence, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,subject to the following conditions:
+
+ 1. Redistributions of source code must retain the above copyright notice,this list of conditions, and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyrightnotice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution, and in thesame place and form as other copyright, license and disclaimer information. 3. The end-user documentation included with the redistribution, if any,must include the following acknowledgment: "This product includes softwaredeveloped by The XFree86 Project, Inc (http://www.xfree86.org/) and itscontributors", in the same place and form as other third-party acknowledgments.Alternately, this acknowledgment may appear in the software itself, in the sameform and location as other such third-party acknowledgments.
+ 4. Except as contained in this notice, the name of The XFree86 Project,Inc shall not be used in advertising or otherwise to promote the sale, use orother dealings in this Software without prior written authorization from TheXFree86 Project, Inc.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ANDFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE XFREE86PROJECT, INC OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ORBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER INCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISINGIN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITYOF SUCH DAMAGE.
+
+%% This notice is provided with respect to XML Security, which may be included with this software:
+
+ The Apache Software License,
+ Version 1.1
+
+
+ PDF
+
+
+ Copyright (C) 2002 The Apache SoftwareFoundation.
+ All rights reserved. Redistribution anduse in
+ source and binary forms, with or withoutmodifica-
+ tion, are permitted provided that thefollowing
+ conditions are met: 1. Redistributions ofsource
+ code must retain the above copyrightnotice, this
+ list of conditions and the followingdisclaimer.
+ 2. Redistributions in binary form mustreproduce
+ the above copyright notice, this list of conditions and the following disclaimerin the
+ documentation and/or other materialsprovided with
+ the distribution. 3. The end-userdocumentation
+ included with the redistribution, if any,must
+ include the following acknowledgment:"This
+ product includes software developed bythe Apache
+ Software Foundation
+(http://www.apache.org/)."
+ Alternately, this acknowledgment mayappear in the
+ software itself, if and wherever suchthird-party
+ acknowledgments normally appear. 4. Thenames
+ "Apache Forrest" and "Apache SoftwareFoundation"
+ must not be used to endorse or promoteproducts
+ derived from this software without priorwritten
+ permission. For written permission,please contact
+ apache@apache.org. 5. Products derivedfrom this
+ software may not be called "Apache", normay
+ "Apache" appear in their name, withoutprior
+ written permission of the Apache Software Foundation. THIS SOFTWARE IS PROVIDED``AS IS''
+ AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THEIMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESSFOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NOEVENT
+ SHALL THE APACHE SOFTWARE FOUNDATION ORITS
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT,INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, ORCONSEQUENTIAL
+ DAMAGES (INCLU- DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ORSERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANYTHEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OROTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF
+ SUCH DAMAGE. This software consists ofvoluntary
+ contributions made by many individuals onbehalf
+ of the Apache Software Foundation. Formore
+ information on the Apache SoftwareFoundation,
+ please see .
+
+%% This notice is provided with respect to Independent JPEG Group's software (libjpeg), which may be included with this software:
+
+In plain English:
+
+1. We don't promise that this software works. (But if you find any bugs,
+ please let us know!)
+2. You can use this software for whatever you want. You don't have to pay us.
+3. You may not pretend that you wrote this software. If you use it in a program, you must acknowledge somewhere in your documentation that you've used the IJG code.
+
+In legalese:
+
+The authors make NO WARRANTY or representation, either express or implied, with respect to this software, its quality, accuracy, merchantability, or fitness for a particular purpose. This software is provided "AS IS", and you, its user, assume the entire risk as to its quality and accuracy.
+
+This software is copyright (C) 1991-1998, Thomas G. Lane.
+All Rights Reserved except as specified below.
+
+Permission is hereby granted to use, copy, modify, and distribute this software (or portions thereof) for any purpose, without fee, subject to these conditions:
+
+(1) If any part of the source code for this software is distributed, then this
+README file must be included, with this copyright and no-warranty notice unaltered; and any additions, deletions, or changes to the original files must be clearly indicated in accompanying documentation.
+
+(2) If only executable code is distributed, then the accompanying documentation must state that "this software is based in part on the work of the Independent JPEG Group".
+
+(3) Permission for use of this software is granted only if the user accepts full responsibility for any undesirable consequences; the authors accept NO LIABILITY for damages of any kind.
+
+These conditions apply to any software derived from or based on the IJG code, not just to the unmodified library. If you use our work, you ought to acknowledge us.
+
+Permission is NOT granted for the use of any IJG author's name or company name in advertising or publicity relating to this software or products derived from it. This software may be referred to only as "the Independent JPEG Group's software".
+
+We specifically permit and encourage the use of this software as the basis of commercial products, provided that all warranty or liability claims are assumed by the product vendor.
+
+ansi2knr.c is included in this distribution by permission of L. Peter Deutsch, sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA. ansi2knr.c is NOT covered by the above copyright and conditions, but instead by the usual distribution terms of the Free Software Foundation; principally, that you must include source code if you redistribute it. (See the file ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part of any program generated from the IJG code, this does not limit you more than the foregoing paragraphs do.
+
+The Unix configuration script "configure" was produced with GNU Autoconf. It is copyright by the Free Software Foundation but is freely distributable. The same holds for its supporting scripts (config.guess, config.sub, ltconfig, ltmain.sh). Another support script, install-sh, is copyright by M.I.T. but is also freely distributable.
+
+It appears that the arithmetic coding option of the JPEG spec is covered by patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot legally be used without obtaining one or more licenses. For this reason, support for arithmetic coding has been removed from the free JPEG software. (Since arithmetic coding provides only a marginal gain over the unpatented Huffman mode, it is unlikely that very many implementations will support it.) So far as we are aware, there are no patent restrictions on the remaining code.
+
+The IJG distribution formerly included code to read and write GIF files. To avoid entanglement with the Unisys LZW patent, GIF reading support has been removed altogether, and the GIF writer has been simplified to produce "uncompressed GIFs". This technique does not use the LZW algorithm; the resulting GIF files are larger than usual, but are readable by all standard GIF decoders.
+
+We are required to state that
+ "The Graphics Interchange Format(c) is the Copyright property of
+ CompuServe Incorporated. GIF(sm) is a Service Mark property of
+ CompuServe Incorporated."
+
+%% This notice is provided with respect to X Resize and Rotate (Xrandr) Extension, which may be included with this software:
+2. XFree86 License
+
+XFree86 code without an explicit copyright is covered by the following
+copyright/license:
+
+Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86
+PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the XFree86 Project shall not be
+used in advertising or otherwise to promote the sale, use or other dealings in
+this Software without prior written authorization from the XFree86 Project.
+
+%% This notice is provided with respect to fontconfig, which may be included with this software:
+Id: COPYING,v 1.3 2003/04/04 20:17:40 keithp Exp $
+Copyright 2001,2003 Keith Packard
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of Keith Packard not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Keith Packard makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+%% This notice is provided with respect to XFree86, which may be included with this software:
+Copyright (C) 1994-2002 The XFree86 Project, Inc. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated
+documentation files (the "Software"), to deal in the Software without
+restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the XFree86 Project shall not be
+used in advertising or otherwise
+to promote the sale, use or other dealings in this Software without prior
+written authorization from the XFree86
+Project.
+%% This notice is provided with respect to Fast Infoset, which may be included with this software:
+* Fast Infoset ver. 0.1 software ("Software")
+*
+* Copyright, 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+*
+* Software is licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License. You may
+* obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+* License for the specific language governing permissions and limitations.
+*
+* Sun supports and benefits from the global community of open source
+* developers, and thanks the community for its important contributions and
+* open standards-based technology, which Sun has adopted into many of its
+* products.
+*
+* Please note that portions of Software may be provided with notices and
+* open source licenses from such communities and third parties that govern the
+* use of those portions, and any licenses granted hereunder do not alter any
+* rights and obligations you may have under such open source licenses,
+* however, the disclaimer of warranty and limitation of liability provisions
+* in this License will apply to all Software in this distribution.
+*
+* You acknowledge that the Software is not designed, licensed or intended
+* for use in the design, construction, operation or maintenance of any nuclear
+* facility.
+*
+* Apache License
+* Version 2.0, January 2004
+* http://www.apache.org/licenses/
+*
+*/
+/*
+* ====================================================================
+*
+* This code is subject to the freebxml License, Version 1.1
+*
+* Copyright (c) 2001 - 2005 freebxml.org. All rights reserved.
+*
+* $Header: /cvs/fi/FastInfoset/src/com/sun/xml/internal/fastinfoset/AbstractResourceBundle.java,v 1.2
+* ====================================================================
+*/
+%% This notice is provided with respect to Kerberos, which may be included with this software:
+
+/*
+ * Copyright (C) 1998 by the FundsXpress, INC.
+ *
+ * All rights reserved.
+ *
+ * Export of this software from the United States of America may require
+ * a specific license from the United States Government. It is the
+ * responsibility of any person or organization contemplating export to
+ * obtain such a license before exporting.
+ *
+ * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
+ * distribute this software and its documentation for any purpose and
+ * without fee is hereby granted, provided that the above copyright
+ * notice appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation, and that
+ * the name of FundsXpress. not be used in advertising or publicity pertaining
+ * to distribution of the software without specific, written prior
+ * permission. FundsXpress makes no representations about the suitability of
+ * this software for any purpose. It is provided "as is" without express
+ * or implied warranty.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+%% This notice is provided with respect to Unicode's CLDR data repository, which may be included with this software:
+
+ Unicode Copyright
+
+ For the general privacy policy governing access to this site, see the
+Unicode Privacy Policy. For trademark usage, see the the Unicode Consortium
+Trademarks and Logo Policy.
+ Notice to End User: Terms of Use
+ Carefully read the following legal agreement ("Agreement"). Use or copying
+of the software and/or codes provided with this agreement (The "Software")
+constitutes your acceptance of these terms
+
+ 1. Unicode Copyright.
+ 1. Copyright © 1991-2005 Unicode, Inc. All rights reserved.
+ 2. Certain documents and files on this website contain a legend
+indicating that "Modification is permitted." Any person is hereby authorized,
+without fee, to modify such documents and files to create derivative works
+conforming to the Unicode® Standard, subject to Terms and Conditions herein.
+ 3. Any person is hereby authorized, without fee, to view, use,
+reproduce, and distribute all documents and files solely for informational
+purposes in the creation of products supporting the Unicode Standard, subject to
+the Terms and Conditions herein.
+ 4. Further specifications of rights and restrictions pertaining to
+the use of the particular set of data files known as the "Unicode Character
+Database" can be found in Exhibit 1.
+ 5. Further specifications of rights and restrictions pertaining to
+the use of the particular set of files that constitute the online edition of The
+Unicode Standard, Version 4.0, may be found in V4.0 online edition.
+ 6. No license is granted to "mirror" the Unicode website where a
+fee is charged for access to the "mirror" site.
+ 7. Modification is not permitted with respect to this document. All
+copies of this document must be verbatim.
+ 2. Restricted Rights Legend. Any technical data or software which is
+licensed to the United States of America, its agencies and/or instrumentalities
+under this Agreement is commercial technical data or commercial computer
+software developed exclusively at private expense as defined in FAR 2.101, or
+DFARS 252.227-7014 (June 1995), as applicable. For technical data, use,
+duplication, or disclosure by the Government is subject to restrictions as set
+forth in DFARS 202.227-7015 Technical Data, Commercial and Items (Nov 1995) and
+this Agreement. For Software, in accordance with FAR 12-212 or DFARS 227-7202,
+as applicable, use, duplication or disclosure by the Government is subject to
+the restrictions set forth in this Agreement.
+ 3. Warranties and Disclaimers.
+ 1. This publication and/or website may include technical or
+typographical errors or other inaccuracies . Changes are periodically added to
+the information herein; these changes will be incorporated in new editions of
+the publication and/or website. Unicode may make improvements and/or changes in
+the product(s) and/or program(s) described in this publication and/or website at
+any time.
+ 2. If this file has been purchased on magnetic or optical media
+from Unicode, Inc. the sole and exclusive remedy for any claim will be exchange
+of the defective media within ninety (90) days of original purchase.
+ 3. EXCEPT AS PROVIDED IN SECTION C.2, THIS PUBLICATION AND/OR
+SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS,
+IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UNICODE
+AND ITS LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR OMISSIONS IN THIS
+PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH ARE REFERENCED BY OR LINKED
+TO THIS PUBLICATION OR THE UNICODE WEBSITE.
+ 4. Waiver of Damages. In no event shall Unicode or its licensors be
+liable for any special, incidental, indirect or consequential damages of any
+kind, or any damages whatsoever, whether or not Unicode was advised of the
+possibility of the damage, including, without limitation, those resulting from
+the following: loss of use, data or profits, in connection with the use,
+modification or distribution of this information or its derivatives.
+ 5. Trademarks.
+ 1. Unicode and the Unicode logo are registered trademarks of
+Unicode, Inc.
+ 2. This site contains product names and corporate names of other
+companies. All product names and company names and logos mentioned herein are
+the trademarks or registered trademarks of their respective owners. Other
+products and corporate names mentioned herein which are trademarks of a third
+party are used only for explanation and for the owners' benefit and with no
+intent to infringe.
+ 3. Use of third party products or information referred to herein is
+at the user's risk.
+ 6. Miscellaneous.
+ 1. Jurisdiction and Venue. This server is operated from a location
+in the State of California, United States of America. Unicode makes no
+representation that the materials are appropriate for use in other locations. If
+you access this server from other locations, you are responsible for compliance
+with local laws. This Agreement, all use of this site and any claims and damages
+resulting from use of this site are governed solely by the laws of the State of
+California without regard to any principles which would apply the laws of a
+different jurisdiction. The user agrees that any disputes regarding this site
+shall be resolved solely in the courts located in Santa Clara County,
+California. The user agrees said courts have personal jurisdiction and agree to
+waive any right to transfer the dispute to any other forum.
+ 2. Modification by Unicode Unicode shall have the right to modify
+this Agreement at any time by posting it to this site. The user may not assign
+any part of this Agreement without Unicode's prior written consent.
+ 3. Taxes. The user agrees to pay any taxes arising from access to
+this website or use of the information herein, except for those based on
+Unicode's net income.
+ 4. Severability. If any provision of this Agreement is declared
+invalid or unenforceable, the remaining provisions of this Agreement shall
+remain in effect.
+ 5. Entire Agreement. This Agreement constitutes the entire
+agreement between the parties.
+
+EXHIBIT 1
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+ Unicode Data Files include all data files under the directories
+http://www.unicode.org/Public/ and http://www.unicode.org/reports/. Unicode
+Software includes any source code under the directories
+http://www.unicode.org/Public/ and http://www.unicode.org/reports/.
+
+ NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES
+("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND
+AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU
+DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES
+OR SOFTWARE.
+
+ COPYRIGHT AND PERMISSION NOTICE
+
+ Copyright Ã?Â,Ã,© 1991-2004 Unicode, Inc. All rights reserved. Distributed under
+the Terms of Use in http://www.unicode.org/copyright.html.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+of the Unicode data files and associated documentation (the "Data Files") or
+Unicode software and associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files or
+Software are furnished to do so, provided that (a) the above copyright notice(s)
+and this permission notice appear with all copies of the Data Files or Software,
+(b) both the above copyright notice(s) and this permission notice appear in
+associated documentation, and (c) there is clear notice in each modified Data
+File or in the Software as well as in the documentation associated with the Data
+File(s) or Software that the data or software has been modified.
+
+ THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
+PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+ Except as contained in this notice, the name of a copyright holder shall not
+be used in advertising or otherwise to promote the sale, use or other dealings
+in these Data Files or Software without prior written authorization of the
+copyright holder.
+
+ Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be
+registered in some jurisdictions. All other trademarks and registered trademarks
+mentioned herein are the property of their respective owners.
+%% This notice is provided with respect to RSA PKCS#11 Header Files & Specification, which may be included with this software:
+
+/*
+ * Copyright (C) 1998 by the FundsXpress, INC.
+ *
+ * All rights reserved.
+ *
+ * Export of this software from the United States of America may require
+ * a specific license from the United States Government. It is the
+ * responsibility of any person or organization contemplating export to
+ * obtain such a license before exporting.
+ *
+ * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
+ * distribute this software and its documentation for any purpose and
+ * without fee is hereby granted, provided that the above copyright
+ * notice appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation, and that
+ * the name of FundsXpress. not be used in advertising or publicity pertaining
+ * to distribution of the software without specific, written prior
+ * permission. FundsXpress makes no representations about the suitability of
+ * this software for any purpose. It is provided "as is" without express
+ * or implied warranty.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+%% This notice is provided with respect to certain files/code which may included in the implementation of AWT within the software:
+
+******************************************************
+BEGIN src/solaris/native/sun/awt/HPkeysym.h
+Copyright 1987, 1998 The Open Group
+
+All Rights Reserved.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Hewlett Packard
+or Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+HEWLETT-PACKARD MAKES NO WARRANTY OF ANY KIND WITH REGARD
+TO THIS SOFWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. Hewlett-Packard shall not be liable for errors
+contained herein or direct, indirect, special, incidental or
+consequential damages in connection with the furnishing,
+performance, or use of this material.
+
+END src/solaris/native/sun/awt/HPkeysym.h
+******************************************************
+******************************************************
+BEGIN src/solaris/native/sun/awt/Xrandr.h
+/*
+ * $XFree86: xc/lib/Xrandr/Xrandr.h,v 1.9 2002/09/29 23:39:44 keithp Exp $
+ *
+ * Copyright © 2000 Compaq Computer Corporation, Inc.
+ * Copyright © 2002 Hewlett-Packard Company, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Compaq not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. HP makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Jim Gettys, HP Labs, HP.
+ */
+
+
+END src/solaris/native/sun/awt/Xrandr.h
+******************************************************
+BEGIN src/solaris/native/sun/awt/extutil.h
+/*
+ * $Xorg: extutil.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $
+ *
+Copyright 1989, 1998 The Open Group
+
+All Rights Reserved.
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ *
+ * Author: Jim Fulton, MIT The Open Group
+ *
+ * Xlib Extension-Writing Utilities
+ *
+ * This package contains utilities for writing the client API for various
+ * protocol extensions. THESE INTERFACES ARE NOT PART OF THE X STANDARD AND
+ * ARE SUBJECT TO CHANGE!
+ */
+/* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */
+
+END src/solaris/native/sun/awt/extutil.h
+******************************************************
+BEGIN src/solaris/native/sun/awt/fontconfig.h
+/*
+ * $RCSId: xc/lib/fontconfig/fontconfig/fontconfig.h,v 1.30 2002/09/26 00:17:27
+keithp Exp $
+ *
+ * Copyright © 2001 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+
+END src/solaris/native/sun/awt/fontconfig.h
+******************************************************
+BEGIN src/solaris/native/sun/awt/list.c
+AND src/solaris/native/sun/awt/list.h
+AND src/solaris/native/sun/awt/multiVis.c
+AND src/solaris/native/sun/awt/multiVis.h
+AND src/solaris/native/sun/awt/wsutils.h
+
+Copyright (c) 1994 Hewlett-Packard Co.
+Copyright (c) 1996 X Consortium
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from the X Consortium.
+
+END src/solaris/native/sun/awt/list.c
+AND src/solaris/native/sun/awt/list.h
+AND src/solaris/native/sun/awt/multiVis.c
+AND src/solaris/native/sun/awt/multiVis.h
+AND src/solaris/native/sun/awt/wsutils.h
+
+*****************************************************************
+BEGIN src/solaris/native/sun/awt/randr.h
+
+ *
+ * Copyright © 2000, Compaq Computer Corporation,
+ * Copyright © 2002, Hewlett Packard, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Compaq or HP not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. HP makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc.
+
+END src/solaris/native/sun/awt/randr.h
+*****************************************************
+
+BEGIN src/solaris/native/sun/java2d/opengl/J2D_GL/glx.h
+ * Mesa 3-D graphics library
+ * Version: 4.1
+ *
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+END src/solaris/native/sun/java2d/opengl/J2D_GL/glx.h
diff --git a/jdk/make/com/Makefile b/jdk/make/com/Makefile
new file mode 100644
index 0000000..1edfc3a
--- /dev/null
+++ b/jdk/make/com/Makefile
@@ -0,0 +1,37 @@
+#
+# Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all of java
+#
+
+BUILDDIR = ..
+PRODUCT = com
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = sun
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/com/sun/Makefile b/jdk/make/com/sun/Makefile
new file mode 100644
index 0000000..de9f1a7
--- /dev/null
+++ b/jdk/make/com/sun/Makefile
@@ -0,0 +1,48 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building com/sun
+#
+
+BUILDDIR = ../..
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+ifndef OPENJDK
+ ORG_EXISTS := $(call DirExists,$(CLOSED_SRC)/share/classes/sun/org,,)
+ ifneq ("$(ORG_EXISTS)", "")
+ SCRIPT_SUBDIR = script
+ endif
+endif
+
+# Omit mirror since it's built with the apt tool.
+SUBDIRS = $(SCRIPT_SUBDIR) image security crypto/provider jndi jmx \
+ java inputmethods org xml rowset net/httpserver net/ssl demo \
+ tools jarsigner
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/com/sun/crypto/provider/Makefile b/jdk/make/com/sun/crypto/provider/Makefile
new file mode 100644
index 0000000..3d948d0
--- /dev/null
+++ b/jdk/make/com/sun/crypto/provider/Makefile
@@ -0,0 +1,283 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building sunjce_provider.jar.
+#
+# This file was derived from make/javax/crypto/Makefile.
+#
+
+#
+# (The terms "OpenJDK" and "JDK" below refer to OpenJDK and Sun JDK builds
+# respectively.)
+#
+# JCE builds are very different between OpenJDK and JDK. The OpenJDK JCE
+# jar files do not require signing, but those for JDK do. If an unsigned
+# jar file is installed into JDK, things will break when the crypto
+# routines are called.
+#
+# This Makefile does the "real" build of the JCE files. There are some
+# javac options currently specific to JCE, so we recompile now to make
+# sure any implicit compilations didn't use any incorrect flags.
+#
+# For OpenJDK, the jar files built here are installed directly into the
+# OpenJDK.
+#
+# For JDK, the binaries use pre-built/pre-signed/pre-obfuscated binary
+# files stored in the closed workspace that are not shipped in the
+# OpenJDK workspaces. We still build the JDK files here to verify the
+# files compile, and in preparation for possible signing and
+# obfuscation. Developers working on JCE in JDK must sign the JCE files
+# before testing: obfuscation is optional during development. The JCE
+# signing key is kept separate from the JDK workspace to prevent its
+# disclosure. The obfuscation tool has not been licensed for general
+# usage.
+#
+# SPECIAL NOTE TO JCE/JDK developers: The source files must eventually
+# be built, obfuscated, signed, and then the resulting jar files MUST BE
+# CHECKED INTO THE CLOSED PART OF THE WORKSPACE*. This separate step
+# *MUST NOT BE FORGOTTEN*, otherwise a bug fixed in the source code will
+# not be reflected in the shipped binaries. The "release" target should be
+# used to generate the required files.
+#
+# There are a number of targets to help both JDK/OpenJDK developers.
+#
+# Main Targets (JDK/OPENJDK):
+#
+# all/clobber/clean The usual.
+# If OpenJDK, installs sunjce_provider.jar.
+# If JDK, installs prebuilt
+# sunjce_provider.jar.
+#
+# jar Builds/installs sunjce_provider.jar
+# If OpenJDK, does not sign.
+# If JDK, tries to sign.
+#
+# Other lesser-used Targets (JDK/OPENJDK):
+#
+# build-jar Builds sunjce_provider.jar
+# (does not sign/install)
+#
+# install-jar Alias for "jar" above.
+#
+# Other targets (JDK only):
+#
+# sign Alias for sign-jar
+# sign-jar Builds/signs sunjce_provider.jar (no install)
+#
+# obfus Builds/obfuscates/signs/installs
+# sunjce_provider.jar
+#
+# release Builds all targets in preparation
+# for workspace integration.
+#
+# install-prebuilt Installs the pre-built jar files
+#
+# This makefile was written to support parallel target execution.
+#
+
+BUILDDIR = ../../../..
+PACKAGE = com.sun.crypto.provider
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+include $(BUILDDIR)/javax/crypto/Defs-jce.gmk
+
+#
+# Location for the newly built classfiles.
+#
+CLASSDESTDIR = $(TEMPDIR)/classes
+
+#
+# Subdirectories of these are automatically included.
+#
+AUTO_FILES_JAVA_DIRS = \
+ com/sun/crypto/provider
+
+include $(BUILDDIR)/common/Classes.gmk
+
+#
+# Rules
+#
+
+#
+# Some licensees do not get the security sources, but we still need to
+# be able to build "all" for them. Check here to see if the sources were
+# available. If not, then we don't need to continue this rule.
+#
+
+ifdef OPENJDK
+all: build-jar install-jar
+else # OPENJDK
+ifeq ($(strip $(FILES_java)),)
+all: install-prebuilt
+ $(no-source-warning)
+else # FILES_java available
+all: build-jar install-prebuilt
+ $(build-warning)
+endif # $(FILES_java) available
+endif # OPENJDK
+
+#
+# We use a variety of subdirectories in the $(TEMPDIR) depending on what
+# part of the build we're doing. Both OPENJDK/JDK builds are initially
+# done in the unsigned area. When files are signed or obfuscated in JDK,
+# they will be placed in the appropriate areas.
+#
+UNSIGNED_DIR = $(TEMPDIR)/unsigned
+
+
+# =====================================================
+# Build the unsigned sunjce_provider.jar file.
+#
+
+JAR_DESTFILE = $(EXTDIR)/sunjce_provider.jar
+
+#
+# The sunjce_provider.jar needs to be in the extension class directory,
+# therefore none of its classes should appear in $(CLASSBINDIR).
+# Currently no one is using any of the SunJCE internals, so these files
+# should not have been built.
+#
+
+#
+# Since the -C option to jar is used below, each directory entry must be
+# preceded with the appropriate directory to "cd" into.
+#
+JAR_DIRS = $(patsubst %, -C $(CLASSDESTDIR) %, $(AUTO_FILES_JAVA_DIRS))
+
+build-jar: $(UNSIGNED_DIR)/sunjce_provider.jar
+
+#
+# Build sunjce_provider.jar.
+#
+$(UNSIGNED_DIR)/sunjce_provider.jar: build $(JCE_MANIFEST_FILE)
+ $(prep-target)
+ $(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ $(JAR_DIRS) \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+
+ifndef OPENJDK
+# =====================================================
+# Sign the provider jar file. Not needed for OpenJDK.
+#
+
+SIGNED_DIR = $(TEMPDIR)/signed
+
+sign: sign-jar
+
+sign-jar: $(SIGNED_DIR)/sunjce_provider.jar
+
+$(SIGNED_DIR)/sunjce_provider.jar: $(UNSIGNED_DIR)/sunjce_provider.jar
+ $(sign-file)
+
+# =====================================================
+# Obfuscate/sign/install the JDK build. Not needed for OpenJDK.
+#
+
+OBFUS_DIR = $(TEMPDIR)/obfus
+
+CLOSED_DIR = $(BUILDDIR)/closed/com/sun/crypto/provider
+
+obfus: $(OBFUS_DIR)/sunjce_provider.jar
+ $(release-warning)
+
+$(OBFUS_DIR)/sunjce_provider.jar: build-jar $(JCE_MANIFEST_FILE)
+ $(presign)
+ $(preobfus)
+ @$(ECHO) ">>>Obfuscating Sun JCE Provider..."
+ $(prep-target)
+ $(CD) $(OBFUS_DIR); \
+ $(OBFUSCATOR) -fv \
+ $(CURRENT_DIRECTORY)/$(CLOSED_DIR)/obfus/sunjce.dox
+ @$(CD) $(OBFUS_DIR); $(java-vm-cleanup)
+ $(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ \
+ -C $(OBFUS_DIR)/build com \
+ $(JAR_JFLAGS)
+ $(sign-target)
+ $(MKDIR) -p $(dir $(JAR_DESTFILE))
+ $(RM) $(JAR_DESTFILE)
+ $(CP) $@ $(JAR_DESTFILE)
+ @$(java-vm-cleanup)
+
+#
+# The current obfuscator has a limitation in that it currently only
+# supports up to v49 class file format. Force v49 classfiles in our
+# builds for now.
+#
+TARGET_CLASS_VERSION = 5
+
+
+# =====================================================
+# Create the Release Engineering files. Obfuscated builds, etc.
+#
+
+release: $(OBFUS_DIR)/sunjce_provider.jar
+ $(RM) $(RELEASE_DIR)/sunjce_provider.jar
+ $(MKDIR) -p $(RELEASE_DIR)
+ $(CP) $(OBFUS_DIR)/sunjce_provider.jar $(RELEASE_DIR)
+ $(release-warning)
+
+endif # OPENJDK
+
+
+# =====================================================
+# Install routines.
+#
+
+#
+# Install sunjce_provider.jar, depending on which type is requested.
+#
+install-jar jar: $(JAR_DESTFILE)
+ifndef OPENJDK
+ $(release-warning)
+endif
+
+ifdef OPENJDK
+$(JAR_DESTFILE): $(UNSIGNED_DIR)/sunjce_provider.jar
+else
+$(JAR_DESTFILE): $(SIGNED_DIR)/sunjce_provider.jar
+endif
+ $(install-file)
+
+ifndef OPENJDK
+install-prebuilt:
+ @$(ECHO) "\n>>>Installing prebuilt SunJCE provider..."
+ $(RM) $(JAR_DESTFILE)
+ $(CP) $(PREBUILT_DIR)/jce/sunjce_provider.jar $(JAR_DESTFILE)
+endif
+
+
+# =====================================================
+# Support routines.
+#
+
+clobber clean::
+ $(RM) -r $(JAR_DESTFILE) $(TEMPDIR)
+
+.PHONY: build-jar jar install-jar
+ifndef OPENJDK
+.PHONY: sign sign-jar obfus release install-prebuilt
+endif
diff --git a/jdk/make/com/sun/demo/Makefile b/jdk/make/com/sun/demo/Makefile
new file mode 100644
index 0000000..09650fe
--- /dev/null
+++ b/jdk/make/com/sun/demo/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+#
+# Makefile for building demo classes
+#
+
+BUILDDIR = ../../..
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = jvmti
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/com/sun/demo/jvmti/Makefile b/jdk/make/com/sun/demo/jvmti/Makefile
new file mode 100644
index 0000000..6fedad2
--- /dev/null
+++ b/jdk/make/com/sun/demo/jvmti/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+#
+# Makefile for building demo jvmti classes
+#
+
+BUILDDIR = ../../../..
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = hprof
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/com/sun/demo/jvmti/hprof/Makefile b/jdk/make/com/sun/demo/jvmti/hprof/Makefile
new file mode 100644
index 0000000..2bdf647
--- /dev/null
+++ b/jdk/make/com/sun/demo/jvmti/hprof/Makefile
@@ -0,0 +1,47 @@
+#
+# Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+BUILDDIR = ../../../../..
+PACKAGE = com.sun.demo.jvmti.hprof
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = com/sun/demo/jvmti/hprof
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+all: classes
diff --git a/jdk/make/com/sun/image/Makefile b/jdk/make/com/sun/image/Makefile
new file mode 100644
index 0000000..857c8a4
--- /dev/null
+++ b/jdk/make/com/sun/image/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# makefile for building JPEG classes
+
+BUILDDIR = ../../..
+PACKAGE = com.sun.image.codec.jpeg
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = com/sun/image/codec/jpeg
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/com/sun/inputmethods/Makefile b/jdk/make/com/sun/inputmethods/Makefile
new file mode 100644
index 0000000..a4b7c9f
--- /dev/null
+++ b/jdk/make/com/sun/inputmethods/Makefile
@@ -0,0 +1,37 @@
+#
+# Copyright 2002-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building Java input methods
+#
+
+BUILDDIR = ../../..
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = indicim thaiim
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/com/sun/inputmethods/indicim/Makefile b/jdk/make/com/sun/inputmethods/indicim/Makefile
new file mode 100644
index 0000000..638854a
--- /dev/null
+++ b/jdk/make/com/sun/inputmethods/indicim/Makefile
@@ -0,0 +1,79 @@
+#
+# Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for indic input method.
+#
+
+BUILDDIR = ../../../..
+
+PACKAGE = com.sun.inputmethods.internal.indicim
+PRODUCT = sun
+
+CLASSDESTDIR = $(TEMPDIR)/classes
+SERVICESDIR=META-INF/services
+IMJAR = $(IMJARDIR)/indicim.jar
+IMJARDIR=$(LIBDIR)/im
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = com/sun/inputmethods/internal/indicim
+
+FILES_copy = \
+ $(CLASSDESTDIR)/com/sun/inputmethods/internal/indicim/resources/DisplayNames.properties
+
+PROVIDER_CONF_FILE = \
+ $(CLASSDESTDIR)/$(SERVICESDIR)/java.awt.im.spi.InputMethodDescriptor
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+build: $(IMJAR)
+
+#
+# Extra rules to build im.
+#
+
+$(CLASSDESTDIR)/com/sun/inputmethods/internal/indicim/resources/% : $(SHARE_SRC)/classes/com/sun/inputmethods/internal/indicim/resources/%
+ $(install-file)
+
+$(CLASSDESTDIR)/$(SERVICESDIR)/java.awt.im.spi.InputMethodDescriptor : $(SHARE_SRC)/classes/com/sun/inputmethods/internal/indicim/java.awt.im.spi.InputMethodDescriptor
+ $(install-file)
+
+$(IMJAR): $(FILES_class) $(FILES_copy) $(PROVIDER_CONF_FILE)
+ $(prep-target)
+ $(BOOT_JAR_CMD) -cf $@ \
+ -C $(CLASSDESTDIR) com \
+ -C $(CLASSDESTDIR) $(SERVICESDIR) \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+clean::
+ $(RM) -r $(CLASSDESTDIR)
+ $(RM) $(IMJAR)
diff --git a/jdk/make/com/sun/inputmethods/thaiim/Makefile b/jdk/make/com/sun/inputmethods/thaiim/Makefile
new file mode 100644
index 0000000..e565319
--- /dev/null
+++ b/jdk/make/com/sun/inputmethods/thaiim/Makefile
@@ -0,0 +1,79 @@
+#
+# Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for thai input method.
+#
+
+BUILDDIR = ../../../..
+
+PACKAGE = com.sun.inputmethods.internal.thaiim
+PRODUCT = sun
+
+CLASSDESTDIR = $(TEMPDIR)/classes
+SERVICESDIR=META-INF/services
+IMJAR = $(IMJARDIR)/thaiim.jar
+IMJARDIR=$(LIBDIR)/im
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = com/sun/inputmethods/internal/thaiim
+
+FILES_copy = \
+ $(CLASSDESTDIR)/com/sun/inputmethods/internal/thaiim/resources/DisplayNames.properties
+
+PROVIDER_CONF_FILE = \
+ $(CLASSDESTDIR)/$(SERVICESDIR)/java.awt.im.spi.InputMethodDescriptor
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+build: $(IMJAR)
+
+#
+# Extra rules to build im.
+#
+
+$(CLASSDESTDIR)/com/sun/inputmethods/internal/thaiim/resources/% : $(SHARE_SRC)/classes/com/sun/inputmethods/internal/thaiim/resources/%
+ $(install-file)
+
+$(CLASSDESTDIR)/$(SERVICESDIR)/java.awt.im.spi.InputMethodDescriptor : $(SHARE_SRC)/classes/com/sun/inputmethods/internal/thaiim/java.awt.im.spi.InputMethodDescriptor
+ $(install-file)
+
+$(IMJAR): $(FILES_class) $(FILES_copy) $(PROVIDER_CONF_FILE)
+ $(prep-target)
+ $(BOOT_JAR_CMD) -cf $@ \
+ -C $(CLASSDESTDIR) com \
+ -C $(CLASSDESTDIR) $(SERVICESDIR) \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+clean::
+ $(RM) -r $(CLASSDESTDIR)
+ $(RM) $(IMJAR)
diff --git a/jdk/make/com/sun/jarsigner/Makefile b/jdk/make/com/sun/jarsigner/Makefile
new file mode 100644
index 0000000..d913131
--- /dev/null
+++ b/jdk/make/com/sun/jarsigner/Makefile
@@ -0,0 +1,40 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = com.sun.jarsigner
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile.
+#
+AUTO_FILES_JAVA_DIRS = com/sun/jarsigner
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/com/sun/java/Makefile b/jdk/make/com/sun/java/Makefile
new file mode 100644
index 0000000..dd16695
--- /dev/null
+++ b/jdk/make/com/sun/java/Makefile
@@ -0,0 +1,37 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all of java
+#
+
+BUILDDIR = ../../..
+PRODUCT = plugin
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = browser pack
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/com/sun/java/browser/Makefile b/jdk/make/com/sun/java/browser/Makefile
new file mode 100644
index 0000000..d43bbe1
--- /dev/null
+++ b/jdk/make/com/sun/java/browser/Makefile
@@ -0,0 +1,37 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all of java
+#
+
+BUILDDIR = ../../../..
+PRODUCT = plugin
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = dom net
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/com/sun/java/browser/dom/Makefile b/jdk/make/com/sun/java/browser/dom/Makefile
new file mode 100644
index 0000000..3cc89fd
--- /dev/null
+++ b/jdk/make/com/sun/java/browser/dom/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# makefile for building Common DOM classes
+
+BUILDDIR = ../../../../..
+PACKAGE = com.sun.java.browser.dom
+PRODUCT = plugin
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = com/sun/java/browser/dom
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/com/sun/java/browser/net/Makefile b/jdk/make/com/sun/java/browser/net/Makefile
new file mode 100644
index 0000000..18d9821
--- /dev/null
+++ b/jdk/make/com/sun/java/browser/net/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# makefile for building browser proxy service classes
+
+BUILDDIR = ../../../../..
+PACKAGE = com.sun.java.browser.net
+PRODUCT = plugin
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = com/sun/java/browser/net
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/com/sun/java/pack/FILES_cpp.gmk b/jdk/make/com/sun/java/pack/FILES_cpp.gmk
new file mode 100644
index 0000000..9a66ed4
--- /dev/null
+++ b/jdk/make/com/sun/java/pack/FILES_cpp.gmk
@@ -0,0 +1,32 @@
+#
+# Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+FILES_cpp = \
+ bands.cpp \
+ bytes.cpp \
+ coding.cpp \
+ jni.cpp \
+ unpack.cpp \
+ utils.cpp \
+ zip.cpp
diff --git a/jdk/make/com/sun/java/pack/Makefile b/jdk/make/com/sun/java/pack/Makefile
new file mode 100644
index 0000000..0a230f7
--- /dev/null
+++ b/jdk/make/com/sun/java/pack/Makefile
@@ -0,0 +1,169 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building Pack200
+#
+
+BUILDDIR = ../../../..
+PACKAGE = com.sun.java.util.jar.pack
+LIBRARY = unpack
+PRODUCT = sun
+PGRM = unpack200
+include $(BUILDDIR)/common/Defs.gmk
+
+CPLUSPLUSLIBRARY=true
+
+FILES_m = mapfile-vers
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = com/sun/java/util/jar/pack
+
+include FILES_cpp.gmk
+
+FILES_export = $(PKGDIR)/NativeUnpack.java
+
+#
+# Rules
+include $(BUILDDIR)/common/Library.gmk
+
+build: unpacker
+
+vpath %.cpp $(SHARE_SRC)/native/$(PKGDIR)
+
+
+
+
+
+ifeq ($(STANDALONE),true)
+ ZIPOBJDIR = $(OUTPUTDIR)/tmp/sun/java.util.zip/zip/$(OBJDIRNAME)
+
+ ZIPOBJS = $(ZIPOBJDIR)/zcrc32.$(OBJECT_SUFFIX) \
+ $(ZIPOBJDIR)/deflate.$(OBJECT_SUFFIX) \
+ $(ZIPOBJDIR)/trees.$(OBJECT_SUFFIX) \
+ $(ZIPOBJDIR)/zadler32.$(OBJECT_SUFFIX) \
+ $(ZIPOBJDIR)/zutil.$(OBJECT_SUFFIX) \
+ $(ZIPOBJDIR)/inflate.$(OBJECT_SUFFIX) \
+ $(ZIPOBJDIR)/infblock.$(OBJECT_SUFFIX) \
+ $(ZIPOBJDIR)/infcodes.$(OBJECT_SUFFIX) \
+ $(ZIPOBJDIR)/inftrees.$(OBJECT_SUFFIX) \
+ $(ZIPOBJDIR)/infutil.$(OBJECT_SUFFIX) \
+ $(ZIPOBJDIR)/inffast.$(OBJECT_SUFFIX)
+
+ ZINCLUDE=-I$(SHARE_SRC)/native/java/util/zip/zlib-1.1.3
+ OTHER_CXXFLAGS += $(ZINCLUDE)
+ LDDFLAGS += $(ZIPOBJS)
+else
+ OTHER_CXXFLAGS += -DNO_ZLIB -DUNPACK_JNI
+ OTHER_LDLIBS += $(JVMLIB)
+endif
+
+CXXFLAGS_DBG += -DFULL
+CXXFLAGS_OPT += -DPRODUCT
+CXXFLAGS_COMMON += -DFULL
+
+ifeq ($(PLATFORM), windows)
+ CXXFLAGS_COMMON += $(MS_RUNTIME_OPTION)
+ LDOUTPUT = -Fe
+
+ # J2SE name required here
+ RC_FLAGS += /D "J2SE_FNAME=$(PGRM).exe" \
+ /D "J2SE_INTERNAL_NAME=$(PGRM)" \
+ /D "J2SE_FTYPE=0x1L"
+
+ RES = $(OBJDIR)/$(PGRM).res
+
+ # Files built here do not compile with warning level 3 if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+else
+ LDOUTPUT = -o #Have a space
+ LDDFLAGS += -lc
+ OTHER_LDLIBS += $(LIBCXX)
+# setup the list of libraries to link in...
+ifeq ($(PLATFORM), linux)
+ifeq ("$(CC_VER_MAJOR)", "3")
+ OTHER_LDLIBS += -Wl,-Bstatic -lgcc_eh -Wl,-Bdynamic
+endif
+endif #LINUX
+endif #PLATFORM
+
+UNPACK_EXE = $(BINDIR)/unpack200$(EXE_SUFFIX)
+
+UNPACK_EXE_FILES_cpp = $(filter-out jni.cpp,$(FILES_cpp))
+
+UNPACK_EXE_FILES_cpp += main.cpp
+
+UNPACK_EXE_FILES_o = $(addprefix $(COBJDIR)/, \
+ $(notdir \
+ $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(UNPACK_EXE_FILES_cpp)) \
+ ))
+
+COBJDIR = $(strip $(subst unpack,unpack-cmd,$(OBJDIR)))
+
+all: build
+
+build: prop
+
+prop:
+ $(MAKE) -C prop
+
+unpacker:
+ $(MAKE) $(UNPACK_EXE) STANDALONE=true LDMAPFLAGS_OPT= LDMAPFLAGS_DBG=
+
+ifeq ($(PLATFORM), windows)
+winres:: $(RES)
+else
+winres::
+ $(ECHO) "Resource files not required for Unix"
+endif
+
+$(UNPACK_EXE): $(UNPACK_EXE_FILES_o) winres
+ $(prep-target)
+ $(LINKER) $(LDDFLAGS) $(UNPACK_EXE_FILES_o) $(RES) $(LIBCXX) $(LDOUTPUT)$(TEMPDIR)/unpack200$(EXE_SUFFIX)
+ $(CP) $(TEMPDIR)/unpack200$(EXE_SUFFIX) $(UNPACK_EXE)
+
+
+ifeq ($(PLATFORM), windows)
+$(RES):: $(VERSIONINFO_RESOURCE)
+ $(prep-target)
+ $(RC) $(RC_FLAGS) $(CC_OBJECT_OUTPUT_FLAG)$(@) $(VERSIONINFO_RESOURCE)
+endif
+
+$(COBJDIR)/%.$(OBJECT_SUFFIX): %.cpp
+ $(prep-target)
+ $(COMPILE.cc) $(CC_OBJECT_OUTPUT_FLAG)$(COBJDIR)/$*.$(OBJECT_SUFFIX) $<
+
+#
+# Clean up.
+#
+clean::
+ $(RM) -r $(CLASSDESTDIR)/com/sun/java/util/jar/pack $(TEMPDIR)
+ $(RM) -r $(OUTPUTDIR)/tmp/$(PRODUCT)/$(PACKAGE)
+ $(MAKE) -C prop clean
+
+.PHONY: unpacker clean winres prop
diff --git a/jdk/make/com/sun/java/pack/mapfile-vers b/jdk/make/com/sun/java/pack/mapfile-vers
new file mode 100644
index 0000000..79404b8
--- /dev/null
+++ b/jdk/make/com/sun/java/pack/mapfile-vers
@@ -0,0 +1,40 @@
+
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define library interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_com_sun_java_util_jar_pack_NativeUnpack_finish;
+ Java_com_sun_java_util_jar_pack_NativeUnpack_getNextFile;
+ Java_com_sun_java_util_jar_pack_NativeUnpack_getOption;
+ Java_com_sun_java_util_jar_pack_NativeUnpack_getUnusedInput;
+ Java_com_sun_java_util_jar_pack_NativeUnpack_initIDs;
+ Java_com_sun_java_util_jar_pack_NativeUnpack_setOption;
+ Java_com_sun_java_util_jar_pack_NativeUnpack_start;
+ local:
+ *;
+};
diff --git a/jdk/make/com/sun/java/pack/prop/Makefile b/jdk/make/com/sun/java/pack/prop/Makefile
new file mode 100644
index 0000000..59a53f6
--- /dev/null
+++ b/jdk/make/com/sun/java/pack/prop/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building intrinsic.properties for Pack200
+# Unfortunately this file needs to be on its own due
+# to a collision of rules with Classes.gmk and Library.gmk
+
+BUILDDIR = ../../../../..
+PACKAGE = com.sun.java.util.jar.pack
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+OTHER_PROPERTIES = $(PKGDIR)/intrinsic.properties
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/com/sun/jmx/Makefile b/jdk/make/com/sun/jmx/Makefile
new file mode 100644
index 0000000..c529dd4
--- /dev/null
+++ b/jdk/make/com/sun/jmx/Makefile
@@ -0,0 +1,118 @@
+#
+# Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building RMI stubs of JMX Remote
+#
+
+BUILDDIR = ../../..
+PACKAGE = javax.management
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+
+# NO java files to compile: already compiled in javax/management/Makefile
+
+# Note : some targets are double colon rules and some single colon rules
+# within common included gmk files : that is why the following for loop
+# has been duplicated.
+SUBDIRS = snmp
+
+all build:
+ $(SUBDIRS-loop)
+
+clean clobber::
+ $(SUBDIRS-loop)
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+build: stubs
+
+#
+# Clean up internal-use-only package.
+#
+clean ::
+ $(RM) -r $(CLASSDESTDIR)/com/sun/jmx \
+ $(CLASSDESTDIR)/com/sun/management/jmx \
+ $(CLASSDESTDIR)/org/omg/stub/javax/management/remote/rmi \
+
+
+#
+# The remainder of this makefile contains defs and rules
+# for generating RMI stubs.
+# With inspiration from com/sun/jndi/rmi/registry
+#
+
+#
+# Full class names of implementations requiring stubs
+#
+REMOTE_impls = \
+ javax.management.remote.rmi.RMIConnectionImpl \
+ javax.management.remote.rmi.RMIServerImpl \
+
+
+REMOTE_files = $(subst .,/,$(REMOTE_impls))
+FILES_stubs = $(REMOTE_files:%=$(CLASSDESTDIR)/%_Stub.class)
+FILES_ties = $(subst javax/management/remote/rmi/,javax/management/remote/rmi/_,$(REMOTE_files:%=$(CLASSDESTDIR)/%_Tie.class))
+
+
+#
+# Compile stubs and skeletons for remote implementations
+#
+# Keep generated RMI/JRMP Stub source files and copy them to GENSRCDIR
+# so that javadoc can include them in the API (4997471)
+#
+# For RMI/IIOP call rmic a second time with -standardPackage option
+# so that *_tie classes are generated in package without the prefix
+# org.omg.stub (6375696)
+#
+$(CLASSDESTDIR)/%_Stub.class: $(CLASSDESTDIR)/%.class
+ $(prep-target)
+ $(RMIC) -classpath "$(CLASSDESTDIR)" \
+ -d $(CLASSDESTDIR) \
+ -v1.2 \
+ -keepgenerated \
+ $(subst /,.,$(<:$(CLASSDESTDIR)/%.class=%))
+ $(MKDIR) -p $(@D:$(CLASSDESTDIR)/%=$(GENSRCDIR)/%)
+ $(CP) $(@:%.class=%.java) \
+ $(@D:$(CLASSDESTDIR)/%=$(GENSRCDIR)/%)
+ $(RMIC) -classpath "$(CLASSDESTDIR)" \
+ -d $(CLASSDESTDIR) \
+ -iiop -v1.2 \
+ $(subst /,.,$(<:$(CLASSDESTDIR)/%.class=%))
+ $(RMIC) $(HOTSPOT_INTERPRETER_FLAG) -classpath "$(CLASSDESTDIR)" \
+ -d $(CLASSDESTDIR) \
+ -iiop -v1.2 \
+ -standardPackage \
+ $(subst /,.,$(<:$(CLASSDESTDIR)/%.class=%))
+ @$(java-vm-cleanup)
+
+stubs: $(FILES_stubs)
diff --git a/jdk/make/com/sun/jmx/snmp/Makefile b/jdk/make/com/sun/jmx/snmp/Makefile
new file mode 100644
index 0000000..4e807cf
--- /dev/null
+++ b/jdk/make/com/sun/jmx/snmp/Makefile
@@ -0,0 +1,45 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building SNMP runtime support for
+# Sun-specific JDK out of the box management support.
+#
+
+BUILDDIR = ../../../..
+PACKAGE = com.sun.jmx.snmp
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = com/sun/jmx/snmp
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/com/sun/jndi/Makefile b/jdk/make/com/sun/jndi/Makefile
new file mode 100644
index 0000000..04a1112
--- /dev/null
+++ b/jdk/make/com/sun/jndi/Makefile
@@ -0,0 +1,38 @@
+#
+# Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JNDI service providers
+#
+
+BUILDDIR = ../../..
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = toolkit cosnaming ldap rmi dns
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+clean clobber::
+ $(RM) -r $(CLASSDESTDIR)/com/sun/jndi
diff --git a/jdk/make/com/sun/jndi/cosnaming/Makefile b/jdk/make/com/sun/jndi/cosnaming/Makefile
new file mode 100644
index 0000000..1657e9b
--- /dev/null
+++ b/jdk/make/com/sun/jndi/cosnaming/Makefile
@@ -0,0 +1,49 @@
+#
+# Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JNDI COS Naming service provider
+#
+
+BUILDDIR = ../../../..
+PACKAGE = com.sun.jndi.cosnaming
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Resources
+#
+OTHER_PROPERTIES = $(PKGDIR)/jndiprovider.properties
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = com/sun/jndi/cosnaming com/sun/jndi/url
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/com/sun/jndi/dns/Makefile b/jdk/make/com/sun/jndi/dns/Makefile
new file mode 100644
index 0000000..ed26415
--- /dev/null
+++ b/jdk/make/com/sun/jndi/dns/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JNDI DNS Naming service provider
+#
+
+BUILDDIR = ../../../..
+PACKAGE = com.sun.jndi.dns
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = com/sun/jndi/dns com/sun/jndi/url/dns
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/com/sun/jndi/ldap/Makefile b/jdk/make/com/sun/jndi/ldap/Makefile
new file mode 100644
index 0000000..eac6568
--- /dev/null
+++ b/jdk/make/com/sun/jndi/ldap/Makefile
@@ -0,0 +1,49 @@
+#
+# Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JNDI LDAP service provider
+#
+
+BUILDDIR = ../../../..
+PACKAGE = com.sun.jndi.ldap
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Resources
+#
+OTHER_PROPERTIES = $(PKGDIR)/jndiprovider.properties
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = com/sun/jndi/ldap com/sun/jndi/url/ldap
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/com/sun/jndi/rmi/Makefile b/jdk/make/com/sun/jndi/rmi/Makefile
new file mode 100644
index 0000000..eeefabf
--- /dev/null
+++ b/jdk/make/com/sun/jndi/rmi/Makefile
@@ -0,0 +1,38 @@
+#
+# Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JNDI RMI registry service provider
+#
+
+BUILDDIR = ../../../..
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = registry
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+clean clobber::
+ $(RM) -r $(CLASSDESTDIR)/com/sun/jndi/rmi
diff --git a/jdk/make/com/sun/jndi/rmi/registry/Makefile b/jdk/make/com/sun/jndi/rmi/registry/Makefile
new file mode 100644
index 0000000..4192b55
--- /dev/null
+++ b/jdk/make/com/sun/jndi/rmi/registry/Makefile
@@ -0,0 +1,73 @@
+#
+# Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JNDI RMI registry service provider
+#
+
+BUILDDIR = ../../../../..
+PACKAGE = com.sun.jndi.rmi.registry
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = com/sun/jndi/rmi/registry com/sun/jndi/url/rmi
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+build: stubs
+
+#
+# The remainder of this makefile contains defs and rules
+# for generating RMI stubs.
+# With inspiration from build/solaris/sun/rmi/rmi/GNUmakefile.
+#
+
+#
+# Full class names of implementations requiring stubs
+#
+REMOTE_impls = \
+ $(PACKAGE).ReferenceWrapper
+
+REMOTE_files = $(subst .,/,$(REMOTE_impls))
+FILES_stubs = $(REMOTE_files:%=$(CLASSDESTDIR)/%_Stub.class)
+FILES_skels = $(REMOTE_files:%=$(CLASSDESTDIR)/%_Skel.class)
+
+#
+# Compile stubs and skeletons for remote implementations
+#
+$(CLASSDESTDIR)/%_Skel.class $(CLASSDESTDIR)/%_Stub.class: \
+ $(CLASSDESTDIR)/%.class
+ $(RMIC) -classpath "$(CLASSDESTDIR)" \
+ -d $(CLASSDESTDIR) \
+ $(subst /,.,$(<:$(CLASSDESTDIR)/%.class=%))
+ @$(java-vm-cleanup)
+
+stubs: $(FILES_stubs) $(FILES_skels)
diff --git a/jdk/make/com/sun/jndi/toolkit/Makefile b/jdk/make/com/sun/jndi/toolkit/Makefile
new file mode 100644
index 0000000..518f99e
--- /dev/null
+++ b/jdk/make/com/sun/jndi/toolkit/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JNDI service provider toolkit
+#
+
+BUILDDIR = ../../../..
+PACKAGE = com.sun.jndi.toolkit
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = com/sun/jndi/toolkit
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/com/sun/net/httpserver/Makefile b/jdk/make/com/sun/net/httpserver/Makefile
new file mode 100644
index 0000000..a837bb0
--- /dev/null
+++ b/jdk/make/com/sun/net/httpserver/Makefile
@@ -0,0 +1,39 @@
+#
+# Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../../..
+PACKAGE = com.sun.net.httpserver
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = com/sun/net/httpserver sun/net/httpserver
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/com/sun/net/ssl/Makefile b/jdk/make/com/sun/net/ssl/Makefile
new file mode 100644
index 0000000..76ed4cd
--- /dev/null
+++ b/jdk/make/com/sun/net/ssl/Makefile
@@ -0,0 +1,45 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../../..
+PACKAGE = com.sun.net.ssl
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+# Note that we implicitly includes the files in com/sun/net/ssl/internal/ssl.
+# They are also compiled by make/sun/security/other/Makefile and logically
+# belong there, but compiling them here as well is fine, too.
+#
+AUTO_FILES_JAVA_DIRS = \
+ com/sun/security/cert \
+ com/sun/net/ssl
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/com/sun/org/Makefile b/jdk/make/com/sun/org/Makefile
new file mode 100644
index 0000000..c0f1b84
--- /dev/null
+++ b/jdk/make/com/sun/org/Makefile
@@ -0,0 +1,37 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building apache implementations
+#
+
+BUILDDIR = ../../..
+PRODUCT = org
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = apache
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/com/sun/org/apache/Makefile b/jdk/make/com/sun/org/apache/Makefile
new file mode 100644
index 0000000..3427d05
--- /dev/null
+++ b/jdk/make/com/sun/org/apache/Makefile
@@ -0,0 +1,36 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building com.sun.org.apache code
+#
+
+BUILDDIR = ../../../..
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = xml
+
+all build clean clobber::
+ $(SUBDIRS-loop)
diff --git a/jdk/make/com/sun/org/apache/xml/Makefile b/jdk/make/com/sun/org/apache/xml/Makefile
new file mode 100644
index 0000000..140a381
--- /dev/null
+++ b/jdk/make/com/sun/org/apache/xml/Makefile
@@ -0,0 +1,54 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building com.sun.org.apache.xml
+#
+
+BUILDDIR = ../../../../..
+PACKAGE = com.sun.org.apache.xml
+PRODUCT = xml
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = com/sun/org/apache/xml
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+NEW_RESOURCE_BUNDLES_PROPERTIES = \
+ $(PKGDIR)/internal/security/resource/config.dtd \
+ $(PKGDIR)/internal/security/resource/config.xml \
+ $(PKGDIR)/internal/security/resource/xmlsecurity_de.properties \
+ $(PKGDIR)/internal/security/resource/xmlsecurity_en.properties \
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/com/sun/rowset/Makefile b/jdk/make/com/sun/rowset/Makefile
new file mode 100644
index 0000000..919ef46
--- /dev/null
+++ b/jdk/make/com/sun/rowset/Makefile
@@ -0,0 +1,50 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JDBC API and JDBC RowSet
+#
+
+BUILDDIR = ../../..
+PACKAGE = com.sun.rowset
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile.
+#
+AUTO_FILES_JAVA_DIRS = com/sun/rowset
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+RESOURCE_BUNDLES_PROPERTIES = $(PKGDIR)/RowSetResourceBundle.properties
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/com/sun/script/Makefile b/jdk/make/com/sun/script/Makefile
new file mode 100644
index 0000000..5e4c830
--- /dev/null
+++ b/jdk/make/com/sun/script/Makefile
@@ -0,0 +1,62 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+
+BUILDDIR = ../../..
+PACKAGE = com.sun.script
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+AUTO_FILES_JAVA_DIRS = com/sun/script
+
+#
+# Files that need to be copied
+#
+SERVICEDIR = $(CLASSBINDIR)/META-INF/services
+
+FILES_copy = \
+ $(SERVICEDIR)/javax.script.ScriptEngineFactory
+
+include $(BUILDDIR)/common/Classes.gmk
+
+all: classes copy-files
+
+#
+# Copy the service provider configuration file into the resource
+# directory.
+#
+
+copy-files: $(FILES_copy)
+
+$(SERVICEDIR)/%: $(SHARE_SRC)/classes/com/sun/script/javascript/META-INF/services/%
+ $(install-file)
+
+.PHONY: copy-files
+
+
+clean::
+ $(RM) -r $(CLASSDESTDIR)/com/sun/script/javascript
+ $(RM) $(FILES_copy)
+
diff --git a/jdk/make/com/sun/security/Makefile b/jdk/make/com/sun/security/Makefile
new file mode 100644
index 0000000..41df70f
--- /dev/null
+++ b/jdk/make/com/sun/security/Makefile
@@ -0,0 +1,38 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for com.sun.security packages.
+#
+
+BUILDDIR = ../../..
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = jgss sasl auth auth/module
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+clean clobber::
+ $(RM) -r $(CLASSDESTDIR)/com/sun/security
diff --git a/jdk/make/com/sun/security/auth/FILES_java.gmk b/jdk/make/com/sun/security/auth/FILES_java.gmk
new file mode 100644
index 0000000..6f4ff1e
--- /dev/null
+++ b/jdk/make/com/sun/security/auth/FILES_java.gmk
@@ -0,0 +1,50 @@
+#
+# Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_java = \
+ com/sun/security/auth/login/ConfigFile.java \
+ com/sun/security/auth/NTDomainPrincipal.java \
+ com/sun/security/auth/NTNumericCredential.java \
+ com/sun/security/auth/NTSid.java \
+ com/sun/security/auth/NTSidDomainPrincipal.java \
+ com/sun/security/auth/NTSidGroupPrincipal.java \
+ com/sun/security/auth/NTSidPrimaryGroupPrincipal.java \
+ com/sun/security/auth/NTSidUserPrincipal.java \
+ com/sun/security/auth/NTUserPrincipal.java \
+ com/sun/security/auth/SolarisNumericUserPrincipal.java \
+ com/sun/security/auth/SolarisPrincipal.java \
+ com/sun/security/auth/SolarisNumericGroupPrincipal.java \
+ com/sun/security/auth/UnixNumericUserPrincipal.java \
+ com/sun/security/auth/UnixPrincipal.java \
+ com/sun/security/auth/UnixNumericGroupPrincipal.java \
+ com/sun/security/auth/X500Principal.java \
+ com/sun/security/auth/UserPrincipal.java \
+ com/sun/security/auth/LdapPrincipal.java \
+ com/sun/security/auth/PolicyFile.java \
+ com/sun/security/auth/SubjectCodeSource.java \
+ com/sun/security/auth/PolicyParser.java \
+ com/sun/security/auth/PrincipalComparator.java \
+ com/sun/security/auth/callback/TextCallbackHandler.java \
+ com/sun/security/auth/callback/DialogCallbackHandler.java
diff --git a/jdk/make/com/sun/security/auth/Makefile b/jdk/make/com/sun/security/auth/Makefile
new file mode 100644
index 0000000..3d4520c
--- /dev/null
+++ b/jdk/make/com/sun/security/auth/Makefile
@@ -0,0 +1,46 @@
+#
+# Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../../..
+PACKAGE = com.sun.security.auth
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+include FILES_java.gmk
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+RESOURCE_BUNDLES_JAVA = sun/security/util/AuthResources.java
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/com/sun/security/auth/module/FILES_c_solaris.gmk b/jdk/make/com/sun/security/auth/module/FILES_c_solaris.gmk
new file mode 100644
index 0000000..b7a6bb8
--- /dev/null
+++ b/jdk/make/com/sun/security/auth/module/FILES_c_solaris.gmk
@@ -0,0 +1,27 @@
+#
+# Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c += \
+ Solaris.c
diff --git a/jdk/make/com/sun/security/auth/module/FILES_c_unix.gmk b/jdk/make/com/sun/security/auth/module/FILES_c_unix.gmk
new file mode 100644
index 0000000..c091238
--- /dev/null
+++ b/jdk/make/com/sun/security/auth/module/FILES_c_unix.gmk
@@ -0,0 +1,27 @@
+#
+# Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ Unix.c
diff --git a/jdk/make/com/sun/security/auth/module/FILES_c_windows.gmk b/jdk/make/com/sun/security/auth/module/FILES_c_windows.gmk
new file mode 100644
index 0000000..bc479dd
--- /dev/null
+++ b/jdk/make/com/sun/security/auth/module/FILES_c_windows.gmk
@@ -0,0 +1,26 @@
+#
+# Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = nt.c
diff --git a/jdk/make/com/sun/security/auth/module/FILES_export_solaris.gmk b/jdk/make/com/sun/security/auth/module/FILES_export_solaris.gmk
new file mode 100644
index 0000000..b7b5538
--- /dev/null
+++ b/jdk/make/com/sun/security/auth/module/FILES_export_solaris.gmk
@@ -0,0 +1,28 @@
+#
+# Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_export += \
+ com/sun/security/auth/module/SolarisLoginModule.java \
+ com/sun/security/auth/module/SolarisSystem.java \
diff --git a/jdk/make/com/sun/security/auth/module/FILES_export_unix.gmk b/jdk/make/com/sun/security/auth/module/FILES_export_unix.gmk
new file mode 100644
index 0000000..428962c
--- /dev/null
+++ b/jdk/make/com/sun/security/auth/module/FILES_export_unix.gmk
@@ -0,0 +1,28 @@
+#
+# Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_export = \
+ com/sun/security/auth/module/UnixLoginModule.java \
+ com/sun/security/auth/module/UnixSystem.java
diff --git a/jdk/make/com/sun/security/auth/module/FILES_export_windows.gmk b/jdk/make/com/sun/security/auth/module/FILES_export_windows.gmk
new file mode 100644
index 0000000..d0af76c
--- /dev/null
+++ b/jdk/make/com/sun/security/auth/module/FILES_export_windows.gmk
@@ -0,0 +1,28 @@
+#
+# Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_export = \
+ com/sun/security/auth/module/NTLoginModule.java \
+ com/sun/security/auth/module/NTSystem.java
diff --git a/jdk/make/com/sun/security/auth/module/FILES_java.gmk b/jdk/make/com/sun/security/auth/module/FILES_java.gmk
new file mode 100644
index 0000000..ba84390
--- /dev/null
+++ b/jdk/make/com/sun/security/auth/module/FILES_java.gmk
@@ -0,0 +1,31 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_java = \
+ com/sun/security/auth/module/Krb5LoginModule.java \
+ com/sun/security/auth/module/JndiLoginModule.java \
+ com/sun/security/auth/module/LdapLoginModule.java \
+ com/sun/security/auth/module/KeyStoreLoginModule.java \
+ com/sun/security/auth/module/Crypt.java
diff --git a/jdk/make/com/sun/security/auth/module/Makefile b/jdk/make/com/sun/security/auth/module/Makefile
new file mode 100644
index 0000000..303c847
--- /dev/null
+++ b/jdk/make/com/sun/security/auth/module/Makefile
@@ -0,0 +1,87 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Makefile for building auth modules.
+
+BUILDDIR = ../../../../..
+PACKAGE = com.sun.security.auth.module
+PRODUCT = sun
+
+# LIBRARY name changed later below, but it is important to tell Defs some name
+# upfront so that it knows it is building a library.
+LIBRARY = jaas
+
+# Force name of temp directory (needed due to LIBRARY change below)
+LIBRARY_OUTPUT = jaas
+
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile.
+#
+
+include FILES_java.gmk
+
+
+ifeq ($(PLATFORM), windows)
+
+LIBRARY = jaas_nt
+ include FILES_export_windows.gmk
+ include FILES_c_windows.gmk
+# We need some extra libs for windows
+ ifneq ($(LIBRARY),fdlibm)
+ EXTRA_LIBS += netapi32.lib user32.lib mpr.lib
+ endif #fdlibm
+ # code generates errors when compiled at warning level 3 and warnings are fatal
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ COMPILER_WARNINGS_FATAL=false
+ endif # ARCH_DATA_MODEL
+endif # windows
+
+ifeq ($(PLATFORM), solaris)
+ LIBRARY = jaas_unix
+ FILES_m = mapfile-vers
+ include $(BUILDDIR)/common/Mapfile-vers.gmk
+ include FILES_export_unix.gmk
+ include FILES_export_solaris.gmk
+ include FILES_c_unix.gmk
+ include FILES_c_solaris.gmk
+endif # solaris
+
+ifeq ($(PLATFORM), linux)
+ LIBRARY = jaas_unix
+ include FILES_export_unix.gmk
+ include FILES_c_unix.gmk
+endif # linux
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# JVMDI implementation lives in the VM.
+#
+OTHER_LDLIBS = $(JVMLIB)
diff --git a/jdk/make/com/sun/security/auth/module/mapfile-vers b/jdk/make/com/sun/security/auth/module/mapfile-vers
new file mode 100644
index 0000000..c0fd4f2
--- /dev/null
+++ b/jdk/make/com/sun/security/auth/module/mapfile-vers
@@ -0,0 +1,35 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define library interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo;
+ Java_com_sun_security_auth_module_UnixSystem_getUnixInfo;
+ local:
+ *;
+};
+
diff --git a/jdk/make/com/sun/security/jgss/Makefile b/jdk/make/com/sun/security/jgss/Makefile
new file mode 100644
index 0000000..bb2902b
--- /dev/null
+++ b/jdk/make/com/sun/security/jgss/Makefile
@@ -0,0 +1,39 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../../..
+PACKAGE = com.sun.security.jgss
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = com/sun/security/jgss
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/com/sun/security/sasl/Makefile b/jdk/make/com/sun/security/sasl/Makefile
new file mode 100644
index 0000000..02cf2f9
--- /dev/null
+++ b/jdk/make/com/sun/security/sasl/Makefile
@@ -0,0 +1,39 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../../..
+PACKAGE = com.sun.security.sasl
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = com/sun/security/sasl
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/com/sun/sql/FILES_java.gmk b/jdk/make/com/sun/sql/FILES_java.gmk
new file mode 100644
index 0000000..45d6c55
--- /dev/null
+++ b/jdk/make/com/sun/sql/FILES_java.gmk
@@ -0,0 +1,28 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_java = \
+ com/sun/rowset/DataSetImpl.java \
+ com/sun/rowset/QueryObjectGeneratorImpl.java
diff --git a/jdk/make/com/sun/sql/Makefile b/jdk/make/com/sun/sql/Makefile
new file mode 100644
index 0000000..5abca83
--- /dev/null
+++ b/jdk/make/com/sun/sql/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JDBC API and JDBC RowSet
+#
+
+BUILDDIR = ../../..
+PACKAGE = com.sun.sql
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile.
+#
+AUTO_FILES_JAVA_DIRS = com/sun/sql
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/com/sun/tools/Makefile b/jdk/make/com/sun/tools/Makefile
new file mode 100644
index 0000000..be2b39c
--- /dev/null
+++ b/jdk/make/com/sun/tools/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building com/sun/tools
+#
+
+BUILDDIR = ../../..
+PACKAGE = com.sun.tools
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+AUTO_FILES_JAVA_DIRS = com/sun/tools/extcheck
+
+SUBDIRS = attach
+all build:
+ $(SUBDIRS-loop)
+clean clobber::
+ $(SUBDIRS-loop)
+
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/com/sun/tools/attach/Exportedfiles.gmk b/jdk/make/com/sun/tools/attach/Exportedfiles.gmk
new file mode 100644
index 0000000..cb7b25a
--- /dev/null
+++ b/jdk/make/com/sun/tools/attach/Exportedfiles.gmk
@@ -0,0 +1,47 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# These are the names of Java classes for which we will make .h files.
+#
+
+ifeq ($(PLATFORM), windows)
+FILES_export = \
+ sun/tools/attach/WindowsAttachProvider.java \
+ sun/tools/attach/WindowsVirtualMachine.java
+endif
+
+ifeq ($(PLATFORM), solaris)
+FILES_export = \
+ sun/tools/attach/SolarisVirtualMachine.java
+endif
+
+ifeq ($(PLATFORM), linux)
+FILES_export = \
+ sun/tools/attach/LinuxVirtualMachine.java
+endif
+
+
+
diff --git a/jdk/make/com/sun/tools/attach/FILES_c.gmk b/jdk/make/com/sun/tools/attach/FILES_c.gmk
new file mode 100644
index 0000000..7c23929
--- /dev/null
+++ b/jdk/make/com/sun/tools/attach/FILES_c.gmk
@@ -0,0 +1,42 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+ifeq ($(PLATFORM),windows)
+FILES_c = \
+ WindowsAttachProvider.c \
+ WindowsVirtualMachine.c
+endif
+
+ifeq ($(PLATFORM),solaris)
+FILES_c = \
+ SolarisVirtualMachine.c
+endif
+
+ifeq ($(PLATFORM),linux)
+FILES_c = \
+ LinuxVirtualMachine.c
+endif
+
+
diff --git a/jdk/make/com/sun/tools/attach/FILES_java.gmk b/jdk/make/com/sun/tools/attach/FILES_java.gmk
new file mode 100644
index 0000000..67be6ab
--- /dev/null
+++ b/jdk/make/com/sun/tools/attach/FILES_java.gmk
@@ -0,0 +1,54 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+FILES_java = \
+ com/sun/tools/attach/AgentLoadException.java \
+ com/sun/tools/attach/AgentInitializationException.java \
+ com/sun/tools/attach/AttachPermission.java \
+ com/sun/tools/attach/AttachNotSupportedException.java \
+ com/sun/tools/attach/VirtualMachine.java \
+ com/sun/tools/attach/VirtualMachineDescriptor.java \
+ com/sun/tools/attach/spi/AttachProvider.java \
+ sun/tools/attach/HotSpotAttachProvider.java \
+ sun/tools/attach/HotSpotVirtualMachine.java
+
+ifeq ($(PLATFORM), solaris)
+FILES_java += \
+ sun/tools/attach/SolarisAttachProvider.java
+endif
+
+ifeq ($(PLATFORM), linux)
+FILES_java += \
+ sun/tools/attach/LinuxAttachProvider.java
+endif
+
+#
+# Files that need to be copied
+#
+SERVICEDIR = $(CLASSBINDIR)/META-INF/services
+
+FILES_copy = \
+ $(SERVICEDIR)/com.sun.tools.attach.spi.AttachProvider
+
+
diff --git a/jdk/make/com/sun/tools/attach/Makefile b/jdk/make/com/sun/tools/attach/Makefile
new file mode 100644
index 0000000..25421bf
--- /dev/null
+++ b/jdk/make/com/sun/tools/attach/Makefile
@@ -0,0 +1,86 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+
+BUILDDIR = ../../../..
+PACKAGE = com.sun.tools.attach
+LIBRARY = attach
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+ifeq ($(PLATFORM), solaris)
+FILES_m = mapfile-solaris
+endif
+ifeq ($(PLATFORM), linux)
+FILES_m = mapfile-linux
+endif
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+#
+# Files to compile
+#
+include FILES_c.gmk
+include FILES_java.gmk
+include Exportedfiles.gmk
+
+ifeq ($(PLATFORM), solaris)
+OTHER_LDLIBS += -ldoor
+endif
+
+vpath %.c $(PLATFORM_SRC)/native/sun/tools/attach
+
+all: classes copy-files
+
+#
+# Copy the service provider configuration files into the resource
+# directory. Copy the configuration file also uncomments any
+# providers that need to be enabled for this platform.
+#
+
+copy-files: $(FILES_copy)
+
+$(SERVICEDIR)/%: $(SHARE_SRC)/classes/sun/tools/attach/META-INF/services/%
+ @$(MKDIR) -p $(@D)
+ @$(RM) $@
+ @$(CAT) $< | $(SED) -e "s/^#\[$(PLATFORM)\]//" > $@
+
+.PHONY: copy-files
+
+
+clean::
+ $(RM) -r $(CLASSDESTDIR)/com/sun/tools/attach
+ $(RM) -r $(CLASSDESTDIR)/sun/tools/attach
+ $(RM) $(FILES_copy)
+
+#
+# Library to compile.
+#
+include $(BUILDDIR)/common/Library.gmk
+
+
+
+
+
+
diff --git a/jdk/make/com/sun/tools/attach/mapfile-linux b/jdk/make/com/sun/tools/attach/mapfile-linux
new file mode 100644
index 0000000..30755d6
--- /dev/null
+++ b/jdk/make/com/sun/tools/attach/mapfile-linux
@@ -0,0 +1,43 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_sun_tools_attach_LinuxVirtualMachine_checkPermissions;
+ Java_sun_tools_attach_LinuxVirtualMachine_close;
+ Java_sun_tools_attach_LinuxVirtualMachine_connect;
+ Java_sun_tools_attach_LinuxVirtualMachine_getLinuxThreadsManager;
+ Java_sun_tools_attach_LinuxVirtualMachine_isLinuxThreads;
+ Java_sun_tools_attach_LinuxVirtualMachine_open;
+ Java_sun_tools_attach_LinuxVirtualMachine_sendQuitTo;
+ Java_sun_tools_attach_LinuxVirtualMachine_sendQuitToChildrenOf;
+ Java_sun_tools_attach_LinuxVirtualMachine_socket;
+ Java_sun_tools_attach_LinuxVirtualMachine_read;
+ Java_sun_tools_attach_LinuxVirtualMachine_write;
+ local:
+ *;
+};
diff --git a/jdk/make/com/sun/tools/attach/mapfile-solaris b/jdk/make/com/sun/tools/attach/mapfile-solaris
new file mode 100644
index 0000000..42f9fc2
--- /dev/null
+++ b/jdk/make/com/sun/tools/attach/mapfile-solaris
@@ -0,0 +1,38 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_sun_tools_attach_SolarisVirtualMachine_checkPermissions;
+ Java_sun_tools_attach_SolarisVirtualMachine_enqueue;
+ Java_sun_tools_attach_SolarisVirtualMachine_open;
+ Java_sun_tools_attach_SolarisVirtualMachine_close;
+ Java_sun_tools_attach_SolarisVirtualMachine_read;
+ Java_sun_tools_attach_SolarisVirtualMachine_sigquit;
+ local:
+ *;
+};
diff --git a/jdk/make/com/sun/xml/Makefile b/jdk/make/com/sun/xml/Makefile
new file mode 100644
index 0000000..3efd19e
--- /dev/null
+++ b/jdk/make/com/sun/xml/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building packages under javax.xml
+#
+
+BUILDDIR = ../../..
+PACKAGE = com.sun.xml
+PRODUCT = xml
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = com/sun/activation \
+ org/relaxng/datatype
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/common/BuildToolJar.gmk b/jdk/make/common/BuildToolJar.gmk
new file mode 100644
index 0000000..7d4ad41
--- /dev/null
+++ b/jdk/make/common/BuildToolJar.gmk
@@ -0,0 +1,71 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Input: BUILDDIR PACKAGE PKGDIR PROGRAM BUILDTOOL_SOURCE_ROOT BUILDTOOL_MAIN
+
+BUILDTOOL_MAIN_SOURCE_FILE = $(BUILDTOOL_SOURCE_ROOT)/$(BUILDTOOL_MAIN)
+BUILDTOOL_MANIFEST_FILE = $(BUILDTOOLCLASSDIR)/$(PROGRAM)_manifest.mf
+BUILDTOOL_JAR_FILE = $(BUILDTOOLJARDIR)/$(PROGRAM).jar
+BUILDTOOL_ALL_FILES := $(shell $(CD) $(BUILDTOOL_SOURCE_ROOT) \
+ && $(FIND) $(PKGDIR) $(SCM_DIRS_prune) -o -type f -print)
+BUILTTOOL_MAINCLASS = $(subst /,.,$(BUILDTOOL_MAIN:%.java=%))
+
+all build: $(BUILDTOOL_JAR_FILE) tool_info
+
+$(BUILDTOOL_MANIFEST_FILE): $(BUILDTOOL_MAIN_SOURCE_FILE)
+ @$(prep-target)
+ $(ECHO) "Main-Class: $(BUILTTOOL_MAINCLASS)" > $@
+
+$(BUILDTOOL_JAR_FILE): $(BUILDTOOL_MANIFEST_FILE) \
+ $(BUILDTOOL_ALL_FILES:%=$(BUILDTOOL_SOURCE_ROOT)/%)
+ @$(prep-target)
+ @$(MKDIR) -p $(BUILDTOOLCLASSDIR)
+ $(BOOT_JAVAC_CMD) -d $(BUILDTOOLCLASSDIR) \
+ -sourcepath $(BUILDTOOL_SOURCE_ROOT) $(BUILDTOOL_MAIN_SOURCE_FILE)
+ $(BOOT_JAR_CMD) cfm $@ $(BUILDTOOL_MANIFEST_FILE) \
+ -C $(BUILDTOOLCLASSDIR) $(PKGDIR) \
+ $(JAR_JFLAGS) || $(RM) $@
+ @$(java-vm-cleanup)
+
+# Printing out a build tool information line
+define printBuildToolSetting
+if [ "$2" != "" ] ; then $(PRINTF) "%-25s %s\n" "$1:" "$2"; fi
+endef
+
+# Print out the build tool information
+tool_info:
+ @$(ECHO) "========================================================="
+ @$(call printBuildToolSetting,BUILDTOOL,$(PROGRAM))
+ @$(call printBuildToolSetting,PACKAGE,$(PACKAGE))
+ @$(call printBuildToolSetting,BUILDTOOL_SOURCE_ROOT,$(BUILDTOOL_SOURCE_ROOT))
+ @$(call printBuildToolSetting,BUILTTOOL_MAINCLASS,$(BUILTTOOL_MAINCLASS))
+ @$(call printBuildToolSetting,BUILDTOOL_JAR_FILE,$(BUILDTOOL_JAR_FILE))
+ @$(ECHO) "========================================================="
+
+clean clobber::
+ $(RM) -r $(BUILDTOOLCLASSDIR)/$(PKGDIR)
+ $(RM) $(BUILDTOOL_MANIFEST_FILE)
+ $(RM) $(BUILDTOOL_JAR_FILE)
+
diff --git a/jdk/make/common/CancelImplicits.gmk b/jdk/make/common/CancelImplicits.gmk
new file mode 100644
index 0000000..73417af
--- /dev/null
+++ b/jdk/make/common/CancelImplicits.gmk
@@ -0,0 +1,66 @@
+#
+# Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Cancel some GNU make implicit rules. This causes far fewer stats
+# (crucial in incremental builds, when all that is being done is stats -- I
+# notice upto 20% speedup on local disk). See sections "10.2 Catalogue of
+# Implicit Rules" and "10.5.6 Canceling Implicit Rules" in make.dvi; see
+# also the output of gnumake -p.
+#
+# CAUTION! This is the first thing included in our makefiles, so you must
+# not add any targets here. Canceling %.f: %.F doesn't make any sense
+# because we don't have any targets ending with .f.
+#
+
+#
+# We don't make binaries directly from .{source} files with implicit
+# rules, so disable all of them.
+#
+ifndef USE_IMPLICITS
+%: %.o
+%: %.obj
+%: %.dll
+%: %.c
+%: %.cc
+%: %.C
+%: %.p
+%: %.f
+%: %.s
+%: %.F
+%: %.r
+%: %.S
+%: %.mod
+%: %.sh
+endif
+
+#
+# If you are using RCS, you must set the variable USE_RCS at the make
+# command line. Otherwise we disable RCS.
+#
+ifndef USE_RCS
+%:: %,v
+%:: RCS/%,v
+endif
diff --git a/jdk/make/common/Classes.gmk b/jdk/make/common/Classes.gmk
new file mode 100644
index 0000000..70f0bb1
--- /dev/null
+++ b/jdk/make/common/Classes.gmk
@@ -0,0 +1,67 @@
+#
+# Copyright 1995-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# WARNING: This file is shared with other workspaces.
+# So when it includes other files, it must use JDK_TOPDIR.
+#
+
+include $(JDK_TOPDIR)/make/common/Rules.gmk
+
+#
+# Say you built classes into $(ALT_CLASSBINDIR) and then at the end of
+# the build you might want to copy them over to $(ALT_CLASSDESTDIR);
+# this rule takes care of that. No one should really set these
+# variables except the bootstrap/recompile stage of the java compiler.
+#
+ifdef ALT_CLASSBINDIR
+
+# By default post-processing is copying. Suppose you want to build
+# a jar file then set ALT_CLASSES_DISPOSITION to '../../dest/nameof.jar'
+# before including this file.
+ifndef ALT_CLASSES_DISPOSITION
+ALT_CLASSES_DISPOSITION = copy-classes
+endif
+
+build : $(ALT_CLASSES_DISPOSITION)
+
+copy-classes:
+ifneq ($(ALT_CLASSBINDIR), $(ALT_CLASSDESTDIR))
+ @if [ -s $(TEMPDIR)/.classes.list ]; then \
+ $(MKDIR) -p $(ALT_CLASSDESTDIR); \
+ $(ECHO) "Copying $(ALT_CLASSBINDIR)..."; \
+ $(ECHO) "($(CD) $(ALT_CLASSBINDIR); $(TAR) cf - .) | \
+ ($(CD) $(ALT_CLASSDESTDIR); $(TAR) xf -)"; \
+ ($(CD) $(ALT_CLASSBINDIR); $(TAR) cf - .) | \
+ ($(CD) $(ALT_CLASSDESTDIR); $(TAR) xf -); \
+ fi
+else # ALT_CLASSBINDIR
+ @if [ -s $(TEMPDIR)/.classes.list ]; then \
+ $(ECHO) "Copy source and destination are the same: $(ALT_CLASSBINDIR) -- Copy skipped..."; \
+ fi
+endif # ALT_CLASSBINDIR
+
+.PHONY: copy-classes
+endif # ALT_CLASSBINDIR
+
diff --git a/jdk/make/common/Cscope.gmk b/jdk/make/common/Cscope.gmk
new file mode 100644
index 0000000..1003c21
--- /dev/null
+++ b/jdk/make/common/Cscope.gmk
@@ -0,0 +1,100 @@
+#
+# Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# The cscope.out file is made in the current directory and spans the entire
+# source tree.
+#
+# Things to note:
+# 1. We use relative names for cscope.
+# 2. We *don't* remove the old cscope.out file, because cscope is smart
+# enough to only build what has changed. It can be confused, however,
+# if files are renamed or removed, so it may be necessary to manually
+# remove cscope.out if a lot of reorganization has occurred.
+#
+CSDIRS = $(JDK_TOPDIR)/src $(JDK_TOPDIR)/build
+CSINCS = $(CSDIRS:%=-I%)
+
+#
+# Set CSFLAGS env variable to -b when using fast cscope to build the fast
+# (but large) cscope data bases.
+#
+CSCOPE = cscope-fast
+ifeq ($(CSCOPE), cscope-fast)
+CSFLAGS = -b
+endif
+
+#
+# Adding .java files pushes the file count of a full workspace up about 2500
+# files, which slows database lookup. Thus allow these files to be added from
+# the environment (CSCLASSES=yes).
+#
+ifdef CSCLASSES
+ADDCLASSES= -o -name '*.java'
+endif
+
+#
+# Adding CClassHeaders also pushes the file count of a full workspace up about
+# 200 files (these files also don't exist in a new workspace, and thus will
+# cause the recreation of the database as they get created, which might seem
+# A little confusing). Thus allow these files to be added from the environment
+# (CSHEADERS=yes).
+#
+ifndef CSHEADERS
+RMCCHEADERS= -o -name CClassHeaders
+endif
+
+
+.PRECIOUS: cscope.out
+
+cscope.out: cscope.files FRC
+ $(CSCOPE) $(CSFLAGS)
+
+#
+# What files should we include? A simple rule might be just those files under
+# SCM control, however this would miss files we create like the opcodes and
+# CClassHeaders. The following attempts to find everything that is *useful*.
+# (.del files are created by sccsrm, demo directories contain many .java files
+# that probably aren't useful for development, and the pkgarchive may contain
+# duplicates of files within the source hierarchy). The ordering of the .raw
+# file is an attempt to make cscope display the most relevant files first.
+#
+cscope.files: FRC
+ @-$(RM) cscope.files cscope.files.raw
+ echo "$(CSINCS)" > cscope.files
+ -find $(CSDIRS) $(SCM_DIRS_prune) -o -type d \( -name '.del-*' -o \
+ -name '*demo' -o -name pkgarchive $(RMCCHEADERS) \) -prune -o \
+ -type f \( -name '*.[Ccshlxy]' -o -name '*.il' -o -name '*.cc' -o \
+ -name 'Makefile*' -o -name GNUmakefile -o -name '*.gmk' -o \
+ -name '*.cpp' $(ADDCLASSES) \) -print > cscope.files.raw
+ -egrep -v "\.java|\/build\/" cscope.files.raw >> cscope.files
+ -fgrep ".java" cscope.files.raw >> cscope.files
+ -fgrep "/build/" cscope.files.raw >> cscope.files
+ @-$(RM) cscope.files.raw
+
+cscope.clean:
+ -$(RM) cscope.files cscope.files.raw cscope.out
+
+FRC:
diff --git a/jdk/make/common/Defs-linux.gmk b/jdk/make/common/Defs-linux.gmk
new file mode 100644
index 0000000..51d638f
--- /dev/null
+++ b/jdk/make/common/Defs-linux.gmk
@@ -0,0 +1,338 @@
+#
+# Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile to specify compiler flags for programs and libraries
+# targeted to Linux. Should not contain any rules.
+#
+# WARNING: This file is shared with other workspaces.
+# So when it includes other files, it must use JDK_TOPDIR.
+#
+
+# Warning: the following variables are overriden by Defs.gmk. Set
+# values will be silently ignored:
+# CFLAGS (set $(OTHER_CFLAGS) instead)
+# CPPFLAGS (set $(OTHER_CPPFLAGS) instead)
+# CXXFLAGS (set $(OTHER_CXXFLAGS) instead)
+# LDFLAGS (set $(OTHER_LDFAGS) instead)
+# LDLIBS (set $(EXTRA_LIBS) instead)
+# LDLIBS_COMMON (set $(EXTRA_LIBS) instead)
+
+# Get shared JDK settings
+include $(JDK_MAKE_SHARED_DIR)/Defs.gmk
+
+# Part of INCREMENTAL_BUILD mechanism.
+# Compiler emits things like: path/file.o: file.h
+# We want something like: relative_path/file.o relative_path/file.d: file.h
+CC_DEPEND = -MM
+CC_DEPEND_FILTER = $(SED) -e 's!$*\.$(OBJECT_SUFFIX)!$(dir $@)& $(dir $@)$*.$(DEPEND_SUFFIX)!g'
+
+ifndef PLATFORM_SRC
+ PLATFORM_SRC = $(JDK_TOPDIR)/src/solaris
+endif # PLATFORM_SRC
+
+# Platform specific closed sources
+ifndef OPENJDK
+ ifndef CLOSED_PLATFORM_SRC
+ CLOSED_PLATFORM_SRC = $(JDK_TOPDIR)/src/closed/solaris
+ endif
+endif
+
+# platform specific include files
+PLATFORM_INCLUDE_NAME = $(PLATFORM)
+PLATFORM_INCLUDE = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME)
+
+# suffix used for make dependencies files.
+DEPEND_SUFFIX = d
+# The suffix applied to the library name for FDLIBM
+FDDLIBM_SUFFIX = a
+# The suffix applied to scripts (.bat for windows, nothing for unix)
+SCRIPT_SUFFIX =
+# CC compiler object code output directive flag value
+CC_OBJECT_OUTPUT_FLAG = -o #trailing blank required!
+CC_PROGRAM_OUTPUT_FLAG = -o #trailing blank required!
+
+#
+# Default HPI libraries. Build will build only native, unless
+# overriden at the make command line. This makes it convenient for
+# people doing, say, a pthreads port -- they can create a posix
+# directory here, and say "gnumake HPIS=posix" at the top
+# level.
+#
+HPIS = native
+
+#
+# Default optimization
+#
+CC_HIGHEST_OPT = -O3
+CC_HIGHER_OPT = -O3
+CC_LOWER_OPT = -O2
+CC_NO_OPT =
+
+ifeq ($(PRODUCT), java)
+ _OPT = $(CC_HIGHER_OPT)
+else
+ _OPT = $(CC_LOWER_OPT)
+ CPPFLAGS_DBG += -DLOGGING
+endif
+
+# For all platforms, do not omit the frame pointer register usage.
+# We need this frame pointer to make it easy to walk the stacks.
+# This should be the default on X86, but ia64 and amd64 may not have this
+# as the default.
+CFLAGS_REQUIRED_amd64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+CFLAGS_REQUIRED_i586 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+CFLAGS_REQUIRED_ia64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
+CFLAGS_REQUIRED_sparcv9 += -m64 -mcpu=v9
+LDFLAGS_COMMON_sparcv9 += -m64 -mcpu=v9
+CFLAGS_REQUIRED_sparc += -m32 -mcpu=v9
+LDFLAGS_COMMON_sparc += -m32 -mcpu=v9
+CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH))
+LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH))
+
+# Add in platform specific optimizations for all opt levels
+CC_HIGHEST_OPT += $(_OPT_$(ARCH))
+CC_HIGHER_OPT += $(_OPT_$(ARCH))
+CC_LOWER_OPT += $(_OPT_$(ARCH))
+
+# If NO_OPTIMIZATIONS is defined in the environment, turn all optimzations off
+ifdef NO_OPTIMIZATIONS
+ CC_HIGHEST_OPT = $(CC_NO_OPT)
+ CC_HIGHER_OPT = $(CC_NO_OPT)
+ CC_LOWER_OPT = $(CC_NO_OPT)
+endif
+
+#
+# Selection of warning messages
+#
+GCC_INHIBIT = -Wno-unused -Wno-parentheses
+GCC_STYLE =
+GCC_WARNINGS = -W -Wall $(GCC_STYLE) $(GCC_INHIBIT)
+
+#
+# Treat compiler warnings as errors, if warnings not allowed
+#
+ifeq ($(COMPILER_WARNINGS_FATAL),true)
+ GCC_WARNINGS += -Werror
+endif
+
+#
+# Misc compiler options
+#
+ifeq ($(ARCH),ppc)
+ CFLAGS_COMMON = -fsigned-char
+else # ARCH
+ CFLAGS_COMMON = -fno-strict-aliasing
+endif # ARCH
+PIC_CODE_LARGE = -fPIC
+PIC_CODE_SMALL = -fpic
+GLOBAL_KPIC = $(PIC_CODE_LARGE)
+ifeq ($(ARCH), amd64)
+ CFLAGS_COMMON += $(GLOBAL_KPIC) $(GCC_WARNINGS) -pipe
+else
+ CFLAGS_COMMON += $(GLOBAL_KPIC) $(GCC_WARNINGS)
+endif
+
+# Linux 64bit machines use Dwarf2, which can be HUGE, have fastdebug use -g1
+DEBUG_FLAG = -g
+ifeq ($(FASTDEBUG), true)
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ DEBUG_FLAG = -g1
+ endif
+endif
+
+CFLAGS_OPT = $(POPT)
+CFLAGS_DBG = $(DEBUG_FLAG)
+CFLAGS_COMMON += $(CFLAGS_REQUIRED)
+
+CXXFLAGS_COMMON = $(GLOBAL_KPIC) -DCC_NOEX $(GCC_WARNINGS)
+CXXFLAGS_OPT = $(POPT)
+CXXFLAGS_DBG = $(DEBUG_FLAG)
+CXXFLAGS_COMMON += $(CFLAGS_REQUIRED)
+
+# FASTDEBUG: Optimize the code in the -g versions, gives us a faster debug java
+ifeq ($(FASTDEBUG), true)
+ CFLAGS_DBG += $(CC_LOWER_OPT)
+ CXXFLAGS_DBG += $(CC_LOWER_OPT)
+endif
+
+CPPFLAGS_COMMON = -D$(ARCH) -DARCH='"$(ARCH)"' -DLINUX $(VERSION_DEFINES) \
+ -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT
+
+ifeq ($(ARCH_DATA_MODEL), 64)
+CPPFLAGS_COMMON += -D_LP64=1
+endif
+
+CPPFLAGS_OPT =
+CPPFLAGS_DBG = -DDEBUG
+
+ifdef LIBRARY
+ # Libraries need to locate other libraries at runtime, and you can tell
+ # a library where to look by way of the dynamic runpaths (RPATH or RUNPATH)
+ # buried inside the .so. The $ORIGIN says to look relative to where
+ # the library itself is and it can be followed with relative paths from
+ # that. By default we always look in $ORIGIN, optionally we add relative
+ # paths if the Makefile sets LD_RUNPATH_EXTRAS to those relative paths.
+ # On Linux we add a flag -z origin, not sure if this is necessary, but
+ # doesn't seem to hurt.
+ # The environment variable LD_LIBRARY_PATH will over-ride these runpaths.
+ # Try: 'readelf -d lib*.so' to see these settings in a library.
+ #
+ LDFLAGS_COMMON += -Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker \$$ORIGIN
+ LDFLAGS_COMMON += $(LD_RUNPATH_EXTRAS:%=-Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker \$$ORIGIN/%)
+endif
+
+EXTRA_LIBS += -lc
+
+LDFLAGS_DEFS_OPTION = -z defs
+LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION)
+
+#
+# -L paths for finding and -ljava
+#
+LDFLAGS_OPT = -Xlinker -O1
+LDFLAGS_COMMON += -L$(LIBDIR)/$(LIBARCH)
+LDFLAGS_COMMON += -Wl,-soname=$(LIB_PREFIX)$(LIBRARY).$(LIBRARY_SUFFIX)
+
+#
+# -static-libgcc is a gcc-3 flag to statically link libgcc, gcc-2.9x always
+# statically link libgcc but will print a warning with the flag. We don't
+# want the warning, so check gcc version first.
+#
+CC_VER_MAJOR := $(shell $(CC) -dumpversion | $(SED) 's/egcs-//' | $(CUT) -d'.' -f1)
+ifeq ("$(CC_VER_MAJOR)", "3")
+OTHER_LDFLAGS += -static-libgcc
+endif
+
+# Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+# (See Rules.gmk) The gcc 5 compiler might have an option for this?
+AUTOMATIC_PCH_OPTION =
+
+#
+# Post Processing of libraries/executables
+#
+ifeq ($(VARIANT), OPT)
+ ifneq ($(NO_STRIP), true)
+ # Debug 'strip -g' leaves local function Elf symbols (better stack traces)
+ POST_STRIP_PROCESS = $(STRIP) -g
+ endif
+endif
+
+#
+# Use: ld $(LD_MAPFILE_FLAG) mapfile *.o
+#
+LD_MAPFILE_FLAG = -Xlinker --version-script -Xlinker
+
+#
+# Support for Quantify.
+#
+ifdef QUANTIFY
+QUANTIFY_CMD = quantify
+QUANTIFY_OPTIONS = -cache-dir=/tmp/quantify -always-use-cache-dir=yes
+LINK_PRE_CMD = $(QUANTIFY_CMD) $(QUANTIFY_OPTIONS)
+endif
+
+#
+# Path and option to link against the VM, if you have to. Note that
+# there are libraries that link against only -ljava, but they do get
+# -L to the -ljvm, this is because -ljava depends on -ljvm, whereas
+# the library itself should not.
+#
+VM_NAME = server
+JVMLIB = -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm
+JAVALIB = -ljava $(JVMLIB)
+
+#
+# We want to privatize JVM symbols on Solaris. This is so the user can
+# write a function called FindClass and this should not override the
+# FindClass that is inside the JVM. At this point in time we are not
+# concerned with other JNI libraries because we hope that there will
+# not be as many clashes there.
+#
+PRIVATIZE_JVM_SYMBOLS = false
+
+USE_PTHREADS = true
+override ALT_CODESET_KEY = _NL_CTYPE_CODESET_NAME
+override AWT_RUNPATH =
+override HAVE_ALTZONE = false
+override HAVE_FILIOH = false
+override HAVE_GETHRTIME = false
+override HAVE_GETHRVTIME = false
+override HAVE_SIGIGNORE = true
+override LEX_LIBRARY = -lfl
+ifeq ($(STATIC_CXX),true)
+override LIBCXX = -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic
+else
+override LIBCXX = -lstdc++
+endif
+override LIBPOSIX4 =
+override LIBSOCKET =
+override LIBTHREAD =
+override MOOT_PRIORITIES = true
+override NO_INTERRUPTIBLE_IO = true
+override OPENWIN_HOME = /usr/X11R6
+ifeq ($(ARCH), amd64)
+override OPENWIN_LIB = $(OPENWIN_HOME)/lib64
+else
+override OPENWIN_LIB = $(OPENWIN_HOME)/lib
+endif
+override OTHER_M4FLAGS = -D__GLIBC__ -DGNU_ASSEMBLER
+override SUN_CMM_SUBDIR =
+override THREADS_FLAG = native
+override USE_GNU_M4 = true
+override USING_GNU_TAR = true
+override WRITE_LIBVERSION = false
+
+# USE_EXECNAME forces the launcher to look up argv[0] on $PATH, and put the
+# resulting resolved absolute name of the executable in the environment
+# variable EXECNAME. That executable name is then used that to locate the
+# installation area.
+override USE_EXECNAME = true
+
+# If your platform has DPS, it will have Type1 fonts too, in which case
+# it is best to enable DPS support until such time as 2D's rasteriser
+# can fully handle Type1 fonts in all cases. Default is "yes".
+# HAVE_DPS should only be "no" if the platform has no DPS headers or libs
+# DPS (Displayable PostScript) is available on Solaris machines
+HAVE_DPS = no
+
+#
+# Japanese manpages
+#
+JA_SOURCE_ENCODING = eucJP
+JA_TARGET_ENCODINGS = eucJP
+
+# Settings for the JDI - Serviceability Agent binding.
+HOTSPOT_SALIB_PATH = $(HOTSPOT_IMPORT_PATH)/jre/lib/$(LIBARCH)
+SALIB_NAME = $(LIB_PREFIX)saproc.$(LIBRARY_SUFFIX)
+
+# The JDI - Serviceability Agent binding is not currently supported
+# on Linux-ia64.
+ifeq ($(ARCH), ia64)
+ INCLUDE_SA = false
+else
+ INCLUDE_SA = true
+endif
+
diff --git a/jdk/make/common/Defs-solaris.gmk b/jdk/make/common/Defs-solaris.gmk
new file mode 100644
index 0000000..800c0b7
--- /dev/null
+++ b/jdk/make/common/Defs-solaris.gmk
@@ -0,0 +1,659 @@
+#
+# Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile to specify compiler flags for programs and libraries
+# targeted to Solaris. Should not contain any rules.
+#
+# WARNING: This file is shared with other workspaces.
+# So when it includes other files, it must use JDK_TOPDIR.
+#
+
+# Warning: the following variables are overridden by Defs.gmk. Set
+# values will be silently ignored:
+# CFLAGS (set $(OTHER_CFLAGS) instead)
+# CPPFLAGS (set $(OTHER_CPPFLAGS) instead)
+# CXXFLAGS (set $(OTHER_CXXFLAGS) instead)
+# LDFLAGS (set $(OTHER_LDFAGS) instead)
+# LDLIBS (set $(EXTRA_LIBS) instead)
+# LDLIBS_COMMON (set $(EXTRA_LIBS) instead)
+# LINTFLAGS (set $(OTHER_LINTFLAGS) instead)
+
+# Get shared JDK settings
+include $(JDK_MAKE_SHARED_DIR)/Defs.gmk
+
+ifndef PLATFORM_SRC
+PLATFORM_SRC = $(JDK_TOPDIR)/src/solaris
+endif # PLATFORM_SRC
+
+# Platform specific closed sources
+ifndef OPENJDK
+ ifndef CLOSED_PLATFORM_SRC
+ CLOSED_PLATFORM_SRC = $(JDK_TOPDIR)/src/closed/solaris
+ endif
+endif
+
+# platform specific include files
+PLATFORM_INCLUDE_NAME = $(PLATFORM)
+PLATFORM_INCLUDE = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME)
+
+# suffix used for make dependencies files
+DEPEND_SUFFIX = d
+# suffix used for lint files
+LINT_SUFFIX = ln
+# The suffix applied to the library name for FDLIBM
+FDDLIBM_SUFFIX = a
+# The suffix applied to scripts (.bat for windows, nothing for unix)
+SCRIPT_SUFFIX =
+# CC compiler object code output directive flag value
+CC_OBJECT_OUTPUT_FLAG = -o #trailing blank required!
+CC_PROGRAM_OUTPUT_FLAG = -o #trailing blank required!
+
+#
+# Default HPI libraries. Build will build only native unless
+# overriden at the make command line. This makes it convenient for
+# people doing, say, a pthreads port -- they can create a posix
+# directory here, and say "gnumake HPIS=posix" at the top
+# level.
+#
+HPIS = native
+
+#
+# Java default optimization (-x04/-O2) etc. Applies to the VM.
+#
+ifeq ($(PRODUCT), java)
+ _OPT = $(CC_HIGHER_OPT)
+else
+ _OPT = $(CC_LOWER_OPT)
+ CPPFLAGS_DBG += -DLOGGING -DDBINFO
+endif
+
+#
+# If -Xa is in CFLAGS_COMMON it will end up ahead of $(POPT) for the
+# optimized build, and that ordering of the flags completely freaks
+# out cc. Hence, -Xa is instead in each CFLAGS variant.
+#
+# The more unusual options to the Sun C compiler:
+# -v Stricter type checking, more error checking
+# (To turn ALL warnings into fatals, use -errwarn=%all)
+# -xstrconst Place string literals and constants in read-only area
+# (means you can't write on your string literals)
+# -xs Force debug information (stabs) into the .so or a.out
+# (makes the library/executable debuggable without the
+# .o files needing to be around, but at a space cost)
+# -g & -O If you add the -g option to the optimized compiles
+# you will get better stack retraces, the code is
+# still optimized. This includes a space cost too.
+# -xc99=%none Do NOT allow for c99 extensions to be used.
+# e.g. declarations must precede statements
+# -xCC Allow the C++ style of comments in C: //
+# Required with many of the source files.
+# -mt Assume multi-threaded (important)
+#
+
+#
+# Debug flag for C and C++ compiler
+#
+CFLAGS_DEBUG_OPTION=-g
+CXXFLAGS_DEBUG_OPTION=-g
+
+# Turn off -g if we are doing tcov build
+ifdef TCOV_BUILD
+ CFLAGS_DEBUG_OPTION=
+ CXXFLAGS_DEBUG_OPTION=
+endif
+
+# FASTDEBUG: Optimize the -g builds, gives us a faster debug java
+# If true adds -O to the debug compiles. This allows for any assert
+# tests to remain and debug checking. The resulting code is faster
+# but less debuggable. Stack traces are still valid, although only
+# approximate line numbers are given. Printing of local variables
+# during a debugging session is not possible, but stepping and
+# printing of global or static variables should be possible.
+# Performance/size of files should be about the same, maybe smaller.
+#
+ifeq ($(FASTDEBUG), true)
+ CC_FASTDEBUG_OPT = $(CC_LOWER_OPT)
+ CFLAGS_DEBUG_OPTION = -g $(CC_FASTDEBUG_OPT)
+ CXXFLAGS_DEBUG_OPTION = -g0 $(CC_FASTDEBUG_OPT)
+endif
+
+CFLAGS_COMMON = -v -mt -L$(OBJDIR) -xc99=%none
+CFLAGS_COMMON += -xCC
+CFLAGS_COMMON += -errshort=tags
+CFLAGS_OPT = $(POPT)
+CFLAGS_DBG = $(CFLAGS_DEBUG_OPTION)
+CFLAGS_COMMON += -Xa $(CFLAGS_REQUIRED)
+
+# Assume MT behavior all the time (important)
+CXXFLAGS_COMMON = -mt
+
+# Assume no C++ exceptions are used
+CXXFLAGS_COMMON += -features=no%except -DCC_NOEX
+
+# For C++, these options tell it to assume nothing about locating libraries
+# either at compile time, or at runtime. Use of these options will likely
+# require the use of -L and -R options to indicate where libraries will
+# be found at compile time (-L) and at runtime (-R).
+# The /usr/lib location comes for free, so no need to specify that one.
+# Note: C is much simplier and there is no need for these options. This
+# is mostly needed to avoid dependencies on libraries in the
+# Compiler install area, also see LIBCXX and LIBM.
+CXXFLAGS_COMMON += -norunpath -xnolib
+
+#
+# Treat compiler warnings as errors, if requested
+#
+ifeq ($(COMPILER_WARNINGS_FATAL),true)
+ CFLAGS_COMMON += -errwarn=%all
+ CXXFLAGS_COMMON += -errwarn=%all
+endif
+
+CXXFLAGS_OPT = $(POPT)
+CXXFLAGS_DBG = $(CXXFLAGS_DEBUG_OPTION)
+CXXFLAGS_COMMON += $(CFLAGS_REQUIRED)
+
+# Add -xstrconst to the library compiles. This forces all string
+# literals into the read-only data section, which prevents them from
+# being written to and increases the runtime pages shared on the system.
+#
+ifdef LIBRARY
+ CFLAGS_COMMON +=-xstrconst
+endif
+
+# Source browser database
+#
+# COMPILE_WITH_SB
+# If defined adds -xsb to compiles and creates a
+# source browsing database during compilation.
+#
+ifdef COMPILE_WITH_SB
+ ifeq ($(LIBRARY), java)
+ CFLAGS_DBG += -xsb
+ endif
+endif
+
+# Lint Flags:
+# -Xa ANSI C plus K&R, favor ANSI rules
+# -Xarch=XXX Same as 'cc -xarch=XXX'
+# -fd report on old style func defs
+# -errchk=structarg report on 64bit struct args by value
+# -errchk=longptr64 report on 64bit to 32bit issues (ignores casts)
+# -errchk=parentheses report on suggested use of extra parens
+# -v suppress unused args
+# -x suppress unused externs
+# -u suppress extern func/vars used/defined
+# -errfmt=simple use one line errors with position info
+
+LINTFLAGS_COMMON = -Xa
+LINTFLAGS_COMMON += -fd
+LINTFLAGS_COMMON += -errchk=structarg,longptr64,parentheses
+LINTFLAGS_COMMON += -v
+LINTFLAGS_COMMON += -x
+LINTFLAGS_COMMON += -u
+LINTFLAGS_COMMON += -errfmt=simple
+LINTFLAGS_OPT =
+LINTFLAGS_DBG =
+
+# The -W0,-noglobal tells the compiler to NOT generate mangled global
+# ELF data symbols for file local static data.
+# This can break fix&continue, but we'd rather do the same compilations
+# for deliverable bits as we do for non-deliverable bits
+# Tell the compilers to never generate globalized names, all the time.
+CFLAGS_COMMON += -W0,-noglobal
+
+# Arch specific settings (determines type of .o files and instruction set)
+ifeq ($(ARCH_FAMILY), sparc)
+ ifdef VIS_NEEDED
+ XARCH_VALUE/32=v8plusa
+ XARCH_VALUE/64=v9a
+ else
+ # Someday this should change to improve optimization on UltraSPARC
+ # and abandon the old v8-only machines like the SPARCstation 10.
+ # Indications with Mustang is that alacrity runs do not show a
+ # big improvement using v8plus over v8, but other benchmarks might.
+ XARCH_VALUE/32=v8
+ XARCH_VALUE/64=v9
+ endif
+endif
+ifeq ($(ARCH_FAMILY), i586)
+ XARCH_VALUE/64=amd64
+ XARCH_VALUE/32=
+endif
+
+# Arch value based on current data model being built
+XARCH_VALUE=$(XARCH_VALUE/$(ARCH_DATA_MODEL))
+ifneq ($(XARCH_VALUE), )
+ # The actual compiler -xarch options to use
+ XARCH_OPTION/32 = -xarch=$(XARCH_VALUE/32)
+ XARCH_OPTION/64 = -xarch=$(XARCH_VALUE/64)
+ XARCH_OPTION = $(XARCH_OPTION/$(ARCH_DATA_MODEL))
+endif
+
+# If we have a specific -xarch value to use, add it
+ifdef XARCH_OPTION
+ CFLAGS_COMMON += $(XARCH_OPTION)
+ CXXFLAGS_COMMON += $(XARCH_OPTION)
+ ASFLAGS_COMMON += $(XARCH_OPTION)
+ EXTRA_LIBS += $(XARCH_OPTION)
+ LINTFLAGS_COMMON += -Xarch=$(XARCH_VALUE)
+endif
+
+#
+# uncomment the following to build with PERTURBALOT set
+#
+# OTHER_CFLAGS += -DPERTURBALOT
+#
+
+CPPFLAGS_COMMON = -D$(ARCH_FAMILY) -D__solaris__ -D_REENTRANT
+CPPFLAGS_OPT =
+CPPFLAGS_DBG = -DDEBUG
+
+ifeq ($(ARCH_FAMILY), i586)
+ # The macro _LITTLE_ENDIAN needs to be defined the same to avoid the
+ # Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN
+ # (The Solaris X86 system defines this in file /usr/include/sys/isa_defs.h).
+ # Note: -Dmacro is the same as #define macro 1
+ # -Dmacro= is the same as #define macro
+ #
+ CPPFLAGS_COMMON += -DcpuIntel -D_LITTLE_ENDIAN= -D$(LIBARCH)
+ # Turn off a superfluous compiler error message on Intel
+ CFLAGS_COMMON += -erroff=E_BAD_PRAGMA_PACK_VALUE
+endif
+
+# Java memory management is based on memory mapping by default, but a
+# system only assuming malloc/free can be built by adding -DUSE_MALLOC
+
+CPPFLAGS_COMMON += -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS
+CPPFLAGS_OPT += -DTRIMMED
+
+LDFLAGS_DEFS_OPTION = -z defs
+LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION)
+
+#
+# -L paths for finding and -ljava
+#
+LDFLAGS_COMMON += -L$(LIBDIR)/$(LIBARCH)
+LDFLAGS_OPT =
+LDFLAGS_DBG =
+
+#
+# We never really want the incremental linker, ever
+# The -xildoff option tells Sun's compilers to NOT use incremental linker
+#
+LDFLAGS_COMMON += -xildoff
+
+ifdef LIBRARY
+ # Libraries need to locate other libraries at runtime, and you can tell
+ # a library where to look by way of the dynamic runpaths (RPATH or RUNPATH)
+ # buried inside the .so. The $ORIGIN says to look relative to where
+ # the library itself is and it can be followed with relative paths from
+ # that. By default we always look in $ORIGIN, optionally we add relative
+ # paths if the Makefile sets LD_RUNPATH_EXTRAS to those relative paths.
+ # The environment variable LD_LIBRARY_PATH will over-ride these runpaths.
+ # Try: 'dump -Lv lib*.so' to see these settings in a library.
+ #
+ LDFLAGS_COMMON += -R\$$ORIGIN
+ LDFLAGS_COMMON += $(LD_RUNPATH_EXTRAS:%=-R\$$ORIGIN/%)
+endif
+
+EXTRA_LIBS += -lc
+
+# Postprocessing is done on the images directories only
+#
+ifeq ($(VARIANT), OPT)
+ ifeq ($(PARTIAL_GPROF), true)
+ NO_STRIP = true
+ endif
+ ifeq ($(GPROF), true)
+ NO_STRIP = true
+ endif
+ ifneq ($(NO_STRIP), true)
+ # Debug 'strip -x' leaves local function Elf symbols (better stack traces)
+ POST_STRIP_PROCESS = $(STRIP) -x
+ endif
+endif
+POST_MCS_PROCESS=$(MCS) -d -a "JDK $(FULL_VERSION)"
+
+#
+# Sun C compiler will take -M and pass it on to ld.
+# Usage: ld $(LD_MAPFILE_FLAG) mapfile *.o
+#
+ifeq ($(CC_VERSION),gcc)
+LD_MAPFILE_FLAG = -Xlinker -M -Xlinker
+else
+LD_MAPFILE_FLAG = -M
+endif
+
+#
+# Variables globally settable from the make command line (default
+# values in brackets):
+# GPROF (false)
+# Eg: % gnumake GPROF=true
+GPROF = false
+ifeq ($(GPROF), true)
+ CFLAGS_COMMON += -DGPROF -xpg
+ EXTRA_LIBS += -xpg
+endif
+
+# PARTIAL_GPROF is to be used ONLY during compilation - it should not
+# appear during linking of libraries or programs. It also should
+# prevent linking with -z defs to allow a symbol to remain undefined.
+#
+PARTIAL_GPROF = false
+ifeq ($(PARTIAL_GPROF), true)
+ CFLAGS_GPROF += -xpg
+ LDFLAGS_DEFS_OPTION = -z nodefs
+endif
+
+#
+# For a TCOV build we add in the TCOV_OPTION
+#
+ifdef TCOV_BUILD
+ TCOV_OPTION = -xprofile=tcov
+ LDFLAGS_COMMON += $(TCOV_OPTION) -Kpic
+ CFLAGS_COMMON += $(TCOV_OPTION)
+ CXXFLAGS_COMMON += $(TCOV_OPTION)
+ EXTRA_LIBS += $(TCOV_OPTION)
+ LDNOMAP=true
+endif
+
+#
+# Solaris only uses native threads.
+#
+THREADS_FLAG= native
+THREADS_DIR= threads
+
+#
+# Support for Quantify.
+#
+ifdef QUANTIFY
+ QUANTIFY_CMD = quantify
+ QUANTIFY_OPTIONS = -cache-dir=/tmp/quantify -always-use-cache-dir=yes
+ LINK_PRE_CMD = $(QUANTIFY_CMD) $(QUANTIFY_OPTIONS)
+ ifdef LIBRARY
+ CFLAGS_COMMON += -K PIC
+ endif
+endif
+
+#
+# Support for Purify.
+#
+ifdef PURIFY
+ PURIFY_CMD = /net/suntools.eng/export/tools/sparc/bin/purify
+ PURIFY_OPTIONS = -cache-dir=/tmp/quantify -always-use-cache-dir=yes
+ LINK_PRE_CMD = $(PURIFY_CMD) $(PURIFY_OPTIONS)
+ ifdef LIBRARY
+ CFLAGS_COMMON += -K PIC
+ endif
+endif
+
+#
+# Different "levels" of optimization.
+#
+ifeq ($(CC_VERSION),gcc)
+ CC_HIGHEST_OPT = -O3
+ CC_HIGHER_OPT = -O3
+ CC_LOWER_OPT = -O2
+ CFLAGS_REQUIRED_i586 += -fno-omit-frame-pointer
+ CFLAGS_REQUIRED_amd64 += -fno-omit-frame-pointer
+ # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+ # (See Rules.gmk) May need to wait for gcc 5?
+ AUTOMATIC_PCH_OPTION =
+else
+ # Highest could be -xO5, but indications are that -xO5 should be reserved
+ # for a per-file use, on sources with known performance impacts.
+ CC_HIGHEST_OPT = -xO4
+ CC_HIGHER_OPT = -xO4
+ CC_LOWER_OPT = -xO2
+ #
+ # WARNING: Use of _OPT=$(CC_HIGHEST_OPT) in your Makefile needs to be
+ # done with care, there are some assumptions below that need to
+ # be understood about the use of pointers, and IEEE behavior.
+ #
+ # Use non-standard floating point mode (not IEEE 754)
+ CC_HIGHEST_OPT += -fns
+ # Do some simplification of floating point arithmetic (not IEEE 754)
+ CC_HIGHEST_OPT += -fsimple
+ # Use single precision floating point with 'float'
+ CC_HIGHEST_OPT += -fsingle
+ # Assume memory references via basic pointer types do not alias
+ # (Source with excessing pointer casting and data access with mixed
+ # pointer types are not recommended)
+ CC_HIGHEST_OPT += -xalias_level=basic
+ # Use intrinsic or inline versions for math/std functions
+ # (If you expect perfect errno behavior, do not use this)
+ CC_HIGHEST_OPT += -xbuiltin=%all
+ # Loop data dependency optimizations (need -xO3 or higher)
+ CC_HIGHEST_OPT += -xdepend
+ # Pointer parameters to functions do not overlap
+ # (Similar to -xalias_level=basic usage, but less obvious sometimes.
+ # If you pass in multiple pointers to the same data, do not use this)
+ CC_HIGHEST_OPT += -xrestrict
+ # Inline some library routines
+ # (If you expect perfect errno behavior, do not use this)
+ CC_HIGHEST_OPT += -xlibmil
+ # Use optimized math routines
+ # (If you expect perfect errno behavior, do not use this)
+ # Can cause undefined external on Solaris 8 X86 on __sincos, removing for now
+ # CC_HIGHEST_OPT += -xlibmopt
+ ifeq ($(ARCH_FAMILY), sparc)
+ # Assume at most 8byte alignment, raise SIGBUS on error
+ ### Presents an ABI issue with customer JNI libs?
+ ####CC_HIGHEST_OPT += -xmemalign=8s
+ # Automatic prefetch instructions, explicit prefetch macros
+ CC_HIGHEST_OPT += -xprefetch=auto,explicit
+ # Pick ultra as the chip to optimize to
+ CC_HIGHEST_OPT += -xchip=ultra
+ endif
+ ifeq ($(ARCH), i586)
+ # Pick pentium as the chip to optimize to
+ CC_HIGHEST_OPT += -xchip=pentium
+ endif
+ ifdef LIBRARY
+ # The Solaris CBE (Common Build Environment) requires that the use
+ # of appl registers be disabled when compiling a public library (or
+ # a library that's loaded by a public library) on sparc.
+ CFLAGS_REQUIRED_sparc += -xregs=no%appl
+ CFLAGS_REQUIRED_sparcv9 += -xregs=no%appl
+ endif
+ ifeq ($(shell $(EXPR) $(CC_VER) \> 5.6), 1)
+ # Do NOT use the frame pointer register as a general purpose opt register
+ CFLAGS_REQUIRED_i586 += -xregs=no%frameptr
+ CFLAGS_REQUIRED_amd64 += -xregs=no%frameptr
+ # We MUST allow data alignment of 4 for sparc V8 (32bit)
+ # Presents an ABI issue with customer JNI libs? We must be able to
+ # to handle 4byte aligned objects? (rare occurance, but possible?)
+ CFLAGS_REQUIRED_sparc += -xmemalign=4s
+ endif
+ # Just incase someone trys to use the SOS9 compilers
+ ifeq ($(CC_VER), 5.6)
+ # We MUST allow data alignment of 4 for sparc (sparcv9 is ok at 8s)
+ CFLAGS_REQUIRED_sparc += -xmemalign=4s
+ endif
+ # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+ # (See Rules.gmk) The SS11 -xpch=auto* options appear to be broken.
+ AUTOMATIC_PCH_OPTION =
+endif
+CC_NO_OPT =
+
+# If NO_OPTIMIZATIONS is defined in the environment, turn all optimzations off
+ifdef NO_OPTIMIZATIONS
+ CC_HIGHEST_OPT = $(CC_NO_OPT)
+ CC_HIGHER_OPT = $(CC_NO_OPT)
+ CC_LOWER_OPT = $(CC_NO_OPT)
+endif
+
+# Flags required all the time
+CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH))
+
+# Add processor specific options for optimizations
+CC_HIGHEST_OPT += $(_OPT_$(ARCH))
+CC_HIGHER_OPT += $(_OPT_$(ARCH))
+CC_LOWER_OPT += $(_OPT_$(ARCH))
+
+# Secret compiler optimization options that should be in the above macros
+# but since they differ in format from C to C++, are added into the C or
+# C++ specific macros for compiler flags.
+#
+# On i586 we need to tell the code generator to ALWAYS use a
+# frame pointer.
+ifeq ($(ARCH_FAMILY), i586)
+ # Note that in 5.7, this is done with -xregs=no%frameptr
+ ifeq ($(CC_VER), 5.5)
+ # It's not exactly clear when this optimization kicks in, the
+ # current assumption is -xO4 or greater and for C++ with
+ # the -features=no%except option and -xO4 and greater.
+ # Bottom line is, we ALWAYS want a frame pointer!
+ CXXFLAGS_OPT += -Qoption ube -Z~B
+ CFLAGS_OPT += -Wu,-Z~B
+ ifeq ($(FASTDEBUG), true)
+ CXXFLAGS_DBG += -Qoption ube -Z~B
+ CFLAGS_DBG += -Wu,-Z~B
+ endif
+ endif
+endif
+#
+# Optimizer for sparc needs to be told not to do certain things
+# related to frames or save instructions.
+ifeq ($(ARCH_FAMILY), sparc)
+ # NOTE: Someday the compilers will provide a high-level option for this.
+ # Use save instructions instead of add instructions
+ # This was an optimization starting in SC5.0 that made it hard for us to
+ # find the "save" instruction (which got turned into an "add")
+ CXXFLAGS_OPT += -Qoption cg -Qrm-s
+ CFLAGS_OPT += -Wc,-Qrm-s
+ ifeq ($(FASTDEBUG), true)
+ CXXFLAGS_DBG += -Qoption cg -Qrm-s
+ CFLAGS_DBG += -Wc,-Qrm-s
+ endif
+ #
+ # NOTE: Someday the compilers will provide a high-level option for this.
+ # Don't allow tail call code optimization. Started in SC5.0.
+ # We don't like code of this form:
+ # save
+ # <code>
+ # call foo
+ # restore
+ # because we can't tell if the method will have a stack frame
+ # and register windows or not.
+ CXXFLAGS_OPT += -Qoption cg -Qiselect-T0
+ CFLAGS_OPT += -Wc,-Qiselect-T0
+ ifeq ($(FASTDEBUG), true)
+ CXXFLAGS_DBG += -Qoption cg -Qiselect-T0
+ CFLAGS_DBG += -Wc,-Qiselect-T0
+ endif
+endif
+
+#
+# Path and option to link against the VM, if you have to. Note that
+# there are libraries that link against only -ljava, but they do get
+# -L to the -ljvm, this is because -ljava depends on -ljvm, whereas
+# the library itself should not.
+#
+VM_NAME = server
+JVMLIB = -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm
+JAVALIB = -ljava $(JVMLIB)
+
+# Part of INCREMENTAL_BUILD mechanism.
+# Compiler emits things like: path/file.o: file.h
+# We want something like: relative_path/file.o relative_path/file.d: file.h
+# In addition on Solaris, any include file starting with / is deleted,
+# this gets rid of things like /usr/include files, which never change.
+CC_DEPEND = -xM1
+CC_DEPEND_FILTER = $(SED) -e '/:[ ]*[/]/d' -e 's!$*\.$(OBJECT_SUFFIX)!$(dir $@)& $(dir $@)$*.$(DEPEND_SUFFIX)!g' | $(SORT) -u
+
+# Location of openwin libraries (do we really need this anymore?)
+OPENWIN_HOME = /usr/openwin
+OPENWIN_LIB = $(OPENWIN_HOME)/lib$(ISA_DIR)
+
+# Runtime graphics library search paths...
+OPENWIN_RUNTIME_LIB = /usr/openwin/lib$(ISA_DIR)
+AWT_RUNPATH = -R/usr/dt/lib$(ISA_DIR) -R$(OPENWIN_RUNTIME_LIB)
+
+# C++ Runtime library (libCrun.so), use instead of -lCrun.
+# Originally used instead of -lCrun to guarantee use of the system
+# .so version and not the .a or .so that came with the compilers.
+# With the newer compilers this could probably change back to -lCrun but
+# in general this is ok to continue to do.
+LIBCXX = /usr/lib$(ISA_DIR)/libCrun.so.1
+
+# Math Library (libm.so), do not use -lm.
+# There might be two versions of libm.so on the build system:
+# libm.so.1 and libm.so.2, and we want libm.so.1.
+# Depending on the Solaris release being used to build with,
+# /usr/lib/libm.so could point at a libm.so.2, so we are
+# explicit here so that the libjvm.so you have built will work on an
+# older Solaris release that might not have libm.so.2.
+# This is a critical factor in allowing builds on Solaris 10 or newer
+# to run on Solaris 8 or 9.
+#
+# Note: Historically there was also a problem picking up a static version
+# of libm.a from the compiler area, but that problem has gone away
+# with the newer compilers. Use of libm.a would cause .so bloat.
+#
+LIBM = /usr/lib$(ISA_DIR)/libm.so.1
+
+# Socket library
+LIBSOCKET = -lsocket
+
+# GLOBAL_KPIC: If set means all libraries are PIC, position independent code
+# EXCEPT for select compiles
+# If a .o file is compiled non-PIC then it should be forced
+# into the RW data segment with a mapfile option. This is done
+# with object files which generated from .s files.
+# The -ztext enforces that no relocations remain in the text segment
+# so that it remains purely read-only for optimum system performance.
+# Some libraries may use a smaller size (13bit -Kpic) on sparc instead of
+# (32 bit -KPIC) and will override GLOBAL_KPIC appropriately.
+#
+PIC_CODE_LARGE = -KPIC
+PIC_CODE_SMALL = -Kpic
+ifndef TCOV_BUILD
+ GLOBAL_KPIC = $(PIC_CODE_LARGE)
+ CXXFLAGS_COMMON += $(GLOBAL_KPIC)
+ CFLAGS_COMMON += $(GLOBAL_KPIC)
+ LDFLAGS_COMMON += -ztext
+endif # TCOV_BUILD
+
+# If your platform has DPS, it will have Type1 fonts too, in which case
+# it is best to enable DPS support until such time as 2D's rasteriser
+# can fully handle Type1 fonts in all cases. Default is "yes".
+# HAVE_DPS should only be "no" if the platform has no DPS headers or libs
+# DPS (Displayable PostScript) is available on Solaris machines
+
+HAVE_DPS = yes
+
+#
+# Japanese manpages
+#
+JA_SOURCE_ENCODING = eucJP
+JA_TARGET_ENCODINGS = eucJP UTF-8 PCK
+
+# Settings for the JDI - Serviceability Agent binding.
+HOTSPOT_SALIB_PATH = $(HOTSPOT_IMPORT_PATH)/jre/lib/$(LIBARCH)
+SALIB_NAME = $(LIB_PREFIX)saproc.$(LIBRARY_SUFFIX)
+INCLUDE_SA=true
+
diff --git a/jdk/make/common/Defs-windows.gmk b/jdk/make/common/Defs-windows.gmk
new file mode 100644
index 0000000..6f53eb7
--- /dev/null
+++ b/jdk/make/common/Defs-windows.gmk
@@ -0,0 +1,428 @@
+#
+# Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile to specify compiler flags for programs and libraries
+# targeted to Windows builds. Should not contain any rules.
+#
+# WARNING: This file is shared with other workspaces.
+# So when it includes other files, it must use JDK_TOPDIR.
+#
+
+# Get shared JDK settings
+include $(JDK_MAKE_SHARED_DIR)/Defs.gmk
+
+# CC compiler object code output directive flag value
+CC_OBJECT_OUTPUT_FLAG = -Fo
+CC_PROGRAM_OUTPUT_FLAG = -Fe
+
+# The suffix applied to the library name for FDLIBM
+FDDLIBM_SUFFIX = lib
+# The suffix applied to scripts (.bat for windows, nothing for unix)
+SCRIPT_SUFFIX = .bat
+
+HPIS = windows
+# LIB_LOCATION, which for windows identifies where .exe files go, may be
+# set by each GNUmakefile. The default is BINDIR.
+ifndef LIB_LOCATION
+ LIB_LOCATION = $(BINDIR)
+endif # LIB_LOCATION
+
+ifndef PLATFORM_SRC
+ PLATFORM_SRC = $(JDK_TOPDIR)/src/windows
+endif # PLATFORM_SRC
+
+# Platform specific closed sources
+ifndef OPENJDK
+ ifndef CLOSED_PLATFORM_SRC
+ CLOSED_PLATFORM_SRC = $(JDK_TOPDIR)/src/closed/windows
+ endif
+endif
+
+# for backwards compatability, the old "win32" is used here instead of
+# the more proper "windows"
+PLATFORM_INCLUDE_NAME = win32
+PLATFORM_INCLUDE = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME)
+
+# The following DLL's are considered MS runtime libraries and should
+# not to be REBASEd, see deploy/make/common/Release.gmk.
+# msvcrt.dll, msvcr71.dll: Microsoft runtimes
+MS_RUNTIME_LIBRARIES = msvcrt.dll
+ifeq ($(ARCH_DATA_MODEL), 32)
+ ifeq ($(COMPILER_VERSION), VS2003)
+ MS_RUNTIME_LIBRARIES += msvcr71.dll
+ endif
+endif
+
+
+EXTRA_LFLAGS += /LIBPATH:$(DXSDK_LIB_PATH)
+
+# C Compiler flag definitions
+
+#
+# Default optimization
+#
+ifeq ($(CC_VERSION),msvc)
+ # Visual Studio .NET 2003 or VS2003 compiler option definitions:
+ # -O1 Favors reduced size over speed (-Og -Os -Oy -Ob2 -Gs -GF -Gy)
+ # -O2 Favors speed over reduced size (-Og -Oi -Ot -Oy -Ob2 -Gs -GF -Gy)
+ # -Ox Full optimization (use -O2) (-Og -Oi -Ot -Oy -Ob2)
+ # (Removed in Visual Studio 2005 or VS2005)
+ # -Ob2 More aggressive inlining
+ # -Og Global optimizations
+ # -Oi Replace some functions with intrinsic or special forms
+ # -Op Improve floating point calculations (disables some optimizations)
+ # (Replaced with -fp:precise in VS2005, /Op is default now)
+ # -Os Favor small code
+ # -Ot Favor faster code
+ # -Oy Frame pointer omission
+ # -GB Optimize for pentium (old VC6 option?)
+ # -G6 VS2003 version of -GB?
+ # -GF Pool strings in read-only memory
+ # -Gf Pool strings in read-write memory (the default)
+ # -Gs Controls stack probess
+ # -GS Adds buffer overflow checks on stacks
+ # (Default in VS2005)
+ # -GX Enables exception handling
+ # (Replaced with /EHsc in VS2005)
+ # -Gy Function level linking only
+ #
+ # NOTE: With VC6, -Ox included -Gs.
+ # NOTE: With VC6, -Ox, -O1, and -O2 used -Ob1, not -Ob2.
+ # NOTE: With VC6, -O1 and -O2 used -Gf, not -GF.
+ #
+ ifeq ($(COMPILER_VERSION), VC6)
+ # VC6 (6.2) msvc compiler (the way Tiger and early Mustang were built)
+ # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+ AUTOMATIC_PCH_OPTION =
+ GX_OPTION = -GX
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ CC_HIGHEST_OPT = -Ox -Gy -Os -GB
+ CC_HIGHER_OPT = -Ox -Gy -Os -GB
+ CC_LOWER_OPT = -Ox -Gy -Os -GB
+ else
+ CC_HIGHEST_OPT = -Ox -Gy -Op
+ CC_HIGHER_OPT = -Ox -Gy -Op
+ CC_LOWER_OPT = -Ox -Gy -Op
+ endif
+ endif
+ ifeq ($(COMPILER_VERSION), VS2003)
+ # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+ AUTOMATIC_PCH_OPTION = -YX
+ # Also known as VC7 compiler
+ GX_OPTION = -GX
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ # Lowered opt level to try and reduce footprint, dll size especially.
+ # Was: CC_HIGHEST_OPT = -O2 -G6
+ # Was: CC_HIGHER_OPT = -O2
+ CC_HIGHEST_OPT = -O2
+ CC_HIGHER_OPT = -O1
+ CC_LOWER_OPT = -O1
+ else
+ CC_HIGHEST_OPT = -O2 -Op
+ CC_HIGHER_OPT = -O2 -Op
+ CC_LOWER_OPT = -O1 -Op
+ endif
+ endif
+ ifeq ($(COMPILER_VERSION), VS2005)
+ # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+ AUTOMATIC_PCH_OPTION =
+ # VS2005 compiler, only with Platform SDK right now?
+ GX_OPTION = -EHsc
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ CC_HIGHEST_OPT = -O2
+ CC_HIGHER_OPT = -O1
+ CC_LOWER_OPT = -O1
+ else
+ CC_HIGHEST_OPT = -O2
+ CC_HIGHER_OPT = -O1
+ CC_LOWER_OPT = -O1
+ endif
+ endif
+ CC_NO_OPT = -Od
+else # CC_VERSION
+ # GCC not supported, but left for historical reference...
+ CC_HIGHEST_OPT = -O3
+ CC_HIGHER_OPT = -O2
+ CC_LOWER_OPT = -O2
+ CC_NO_OPT =
+endif
+
+# If NO_OPTIMIZATIONS is defined in the environment, turn all optimzations off
+ifdef NO_OPTIMIZATIONS
+ CC_HIGHEST_OPT = $(CC_NO_OPT)
+ CC_HIGHER_OPT = $(CC_NO_OPT)
+ CC_LOWER_OPT = $(CC_NO_OPT)
+endif
+
+ifeq ($(PRODUCT), java)
+ _OPT = $(CC_HIGHER_OPT)
+else
+ _OPT = $(CC_LOWER_OPT)
+endif
+
+# Select the runtime support library carefully, need to be consistent
+#
+# VS2003 compiler option definitions:
+# -MD Use dynamic multi-threaded runtime library
+# -MDd Use debug version (don't use, doesn't mix with -MD DLL's)
+# -MT Use static multi-threaded runtime library (-ML is going away)
+# -MTd Use static debug version (better than -MDd, no runtime issues)
+# -D_DEBUG Change use of malloc/free/etc to use special debug ones (-MTd)
+#
+# NOTE: We also will use /D _STATIC_CPPLIB so we don't need msvcp71.dll
+#
+ifeq ($(MS_RUNTIME_STATIC),true)
+ MS_RUNTIME_OPTION=-MT
+else
+ MS_RUNTIME_OPTION=-MD
+endif
+# The _DEBUG macro option (changes things like malloc to use debug version)
+MS_RUNTIME_DEBUG_OPTION=
+MS_RC_DEBUG_OPTION=
+# Externally set environment variable can force any build to use the debug vers
+ifeq ($(MFC_DEBUG), true)
+ ifeq ($(MS_RUNTIME_STATIC),true)
+ MS_RUNTIME_OPTION=-MTd
+ else
+ # This MS debugging flag forces a dependence on the debug
+ # version of the runtime library (MSVCRTD.DLL), as does -MDd.
+ # We cannot re-distribute this debug runtime.
+ MS_RUNTIME_OPTION=-MDd
+ endif
+ MS_RUNTIME_DEBUG_OPTION= -D_DEBUG
+ MS_RC_DEBUG_OPTION= -d _DEBUG
+endif
+
+# Always add _STATIC_CPPLIB definition
+STATIC_CPPLIB_OPTION = /D _STATIC_CPPLIB
+MS_RUNTIME_OPTION += $(STATIC_CPPLIB_OPTION)
+
+ifeq ($(CC_VERSION),msvc)
+ # VS2003 compiler option definitions:
+ # -Zi Cause *.pdb file to be created, full debug information
+ # -Z7 Full debug inside the .obj, no .pdb
+ # -Zd Basic debug, no local variables? In the .obj
+ # -Zl Don't add runtime library name to obj file?
+ # -Od Turns off optimization and speeds compilation
+ # -YX -Fp/.../foobar.pch Use precompiled headers (try someday?)
+ # -nologo Don't print out startup message
+ # /D _STATIC_CPPLIB
+ # Use static link for the C++ runtime (so msvcp71.dll not needed)
+ #
+ CFLAGS_COMMON += -Zi -nologo
+ CFLAGS_OPT = $(POPT)
+ CFLAGS_DBG = -Od $(MS_RUNTIME_DEBUG_OPTION)
+
+ # Starting from VS2005 the wchar_t is handled as a built-in C/C++ data type
+ # by default. However, we expect the wchar_t to be a typedef to the
+ # unsigned short data type. The -Zc:wchar_t- option restores the old
+ # behavior (as seen in VS2003) to avoid massive code modifications.
+ # When/if our code will be "C/C++ Standard"-compliant (at least in the area
+ # of handling the wchar_t type), the option won't be necessary.
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ CFLAGS_VS2005 += -Zc:wchar_t-
+ else
+ # The 64bit Platform SDK we use (April 2005) doesn't like this option
+ ifneq ($(CC_VER), 14.00.40310.41)
+ CFLAGS_VS2005 += -Zc:wchar_t-
+ endif
+ endif
+
+ # All builds get the same runtime setting
+ CFLAGS_COMMON += $(MS_RUNTIME_OPTION) $(CFLAGS_$(COMPILER_VERSION))
+
+
+ LDEBUG = /debug
+
+ ifeq ($(VTUNE_SUPPORT), true)
+ OTHER_CFLAGS = -Z7 -Ox
+ LDEBUG += /pdb:NONE
+ endif
+
+ # The new Platform SDK and VS2005 has /GS as a default and requires
+ # bufferoverflowU.lib on the link command line, otherwise
+ # we get missing __security_check_cookie externals at link time.
+ BUFFEROVERFLOWLIB = bufferoverflowU.lib
+ # Always add bufferoverflowU.lib to VS2005 link commands (pack uses LDDFLAGS)
+ LFLAGS_VS2005 = $(BUFFEROVERFLOWLIB)
+
+ # LFLAGS are the flags given to $(LINK) and used to build the actual DLL file
+ BASELFLAGS = -nologo /opt:REF /incremental:no
+ LFLAGS = $(BASELFLAGS) $(LDEBUG) $(EXTRA_LFLAGS) $(LFLAGS_$(COMPILER_VERSION))
+ LDDFLAGS += $(LFLAGS_$(COMPILER_VERSION))
+
+endif
+
+#
+# Preprocessor macro definitions
+#
+CPPFLAGS_COMMON = -DWIN32 -DIAL -D_LITTLE_ENDIAN
+ifeq ($(ARCH), amd64)
+ CPPFLAGS_COMMON += -D_AMD64_ -Damd64
+else
+ CPPFLAGS_COMMON += -DWIN32 -D_X86_ -Dx86
+endif
+CPPFLAGS_COMMON += -DWIN32_LEAN_AND_MEAN
+
+#
+# Output options (use specific filenames to avoid parallel compile errors)
+#
+CFLAGS_COMMON += -Fd$(OBJDIR)/$(basename $(@F)).pdb -Fm$(OBJDIR)/$(basename $(@F)).map
+
+#
+# Add warnings and extra on 64bit issues
+#
+ifeq ($(ARCH_DATA_MODEL), 64)
+ CFLAGS_COMMON += -Wp64
+endif
+CFLAGS_COMMON += -W$(COMPILER_WARNING_LEVEL)
+
+#
+# Treat compiler warnings as errors, if requested
+#
+ifeq ($(COMPILER_WARNINGS_FATAL),true)
+ CFLAGS_COMMON += -WX
+endif
+
+CPPFLAGS_OPT =
+CPPFLAGS_DBG = -DDEBUG -DLOGGING
+
+CXXFLAGS_COMMON = $(CFLAGS_COMMON)
+CXXFLAGS_OPT = $(CFLAGS_OPT)
+CXXFLAGS_DBG = $(CFLAGS_DBG)
+
+ifneq ($(LIBRARY),fdlibm)
+ EXTRA_LIBS += advapi32.lib
+endif
+
+#
+# Path and option to link against the VM, if you have to.
+#
+JVMLIB = $(LIBDIR)/jvm.lib
+JAVALIB = $(LIBDIR)/java.lib
+
+ifeq ($(CC_VERSION), msvc)
+ CC_DEPEND = -FD
+ CC_DEPEND_FILTER =
+else # CC_VERSION
+# not supported, but left for historical reference...
+ CC_DEPEND = -MM
+ CC_DEPEND_FILTER = $(SED) -e 's!$*\.$(OBJECT_SUFFIX)!$(dir $@)&!g'
+endif # CC_VERSION
+
+LIBRARY_SUFFIX = dll
+LIB_SUFFIX = lib
+
+# Settings for the JDI - Serviceability Agent binding.
+HOTSPOT_SALIB_PATH = $(HOTSPOT_IMPORT_PATH)/jre/bin
+SALIB_NAME = $(LIB_PREFIX)sawindbg.$(LIBRARY_SUFFIX)
+SAMAP_NAME = $(LIB_PREFIX)sawindbg.map
+SAPDB_NAME = $(LIB_PREFIX)sawindbg.pdb
+
+ifeq ($(ARCH), ia64)
+ # SA will never be supported here.
+ INCLUDE_SA = false
+else
+ # Hopefully, SA will be supported here one of these days,
+ # and these will be changed to true. Until then,
+ # to build SA on windows, do a control build with
+ # BUILD_WIN_SA=1
+ # on the make command.
+ ifdef BUILD_WIN_SA
+ ifeq ($(ARCH), amd64)
+ INCLUDE_SA = true
+ else
+ INCLUDE_SA = true
+ endif
+ else
+ ifeq ($(ARCH), amd64)
+ INCLUDE_SA = false
+ else
+ INCLUDE_SA = false
+ endif
+ endif
+endif
+
+# Settings for the VERSIONINFO tap on windows.
+VERSIONINFO_RESOURCE = $(JDK_TOPDIR)/src/windows/resource/version.rc
+
+ifneq ($(JDK_BUILD_NUMBER),)
+ COOKED_BUILD_NUMBER = $(shell $(ECHO) $(JDK_BUILD_NUMBER) | $(SED) -e 's/^b//' -e 's/^0//')
+else
+ COOKED_BUILD_NUMBER = 0
+endif
+
+# If the update version contains non-numeric characters, we need
+# to massage it into a numeric format.
+# We use the following formula:
+# JDK_UPDATE_VER = JDK_UPDATE_VERSION * 10 + EXCEPTION_VERSION
+#
+# Here are some examples:
+# 1.5.0 b01 -> 5,0,0,1
+# 1.5.0_10 b01 -> 5,0,100,1
+# 1.4.2 b01 -> 4,2,0,1
+# 1.4.2_02 b01 -> 4,2,20,1
+# 1.4.2_02a b01 -> 4,2,21,1
+# 1.4.2_02b b01 -> 4,2,22,1
+ifdef JDK_UPDATE_VERSION
+ VTMP := $(shell $(ECHO) $(JDK_UPDATE_VERSION) | $(TR) "abcde" "12345")
+ CAB_CHAR1 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 1, 1);}')
+ CAB_CHAR2 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 2, 1);}')
+ CAB_CHAR3 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 3, 1);}')
+ JDK_UPDATE_META_TAG := U$(MARKETING_NUMBER)
+ ifeq ($(CAB_CHAR3),)
+ CAB_CHAR3 := 0
+ endif
+ ifeq ($(CAB_CHAR1), 0)
+ JDK_UPDATE_VER := $(CAB_CHAR2)$(CAB_CHAR3)
+ else
+ JDK_UPDATE_VER := $(CAB_CHAR1)$(CAB_CHAR2)$(CAB_CHAR3)
+ endif
+else
+ JDK_UPDATE_VER := 0
+endif
+JDK_VER = $(JDK_MINOR_VERSION),$(JDK_MICRO_VERSION),$(JDK_UPDATE_VER),$(COOKED_BUILD_NUMBER)
+
+RC_FLAGS = /l 0x409 /r
+
+ifeq ($(VARIANT), OPT)
+ RC_FLAGS += -d NDEBUG
+else
+ RC_FLAGS += $(MS_RC_DEBUG_OPTION)
+endif
+
+ifndef COPYRIGHT_YEAR
+ COPYRIGHT_YEAR = 2007
+endif
+
+# J2SE name required here
+RC_FLAGS += -d "J2SE_BUILD_ID=$(FULL_VERSION)" \
+ -d "J2SE_COMPANY=$(COMPANY_NAME)" \
+ -d "J2SE_COMPONENT=$(PRODUCT_NAME) Platform SE binary" \
+ -d "J2SE_VER=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VER).$(COOKED_BUILD_NUMBER)" \
+ -d "J2SE_COPYRIGHT=Copyright \xA9 $(COPYRIGHT_YEAR)" \
+ -d "J2SE_NAME=$(PRODUCT_NAME) Platform SE $(JDK_MINOR_VERSION) $(JDK_UPDATE_META_TAG)" \
+ -d "J2SE_FVER=$(JDK_VER)"
diff --git a/jdk/make/common/Defs.gmk b/jdk/make/common/Defs.gmk
new file mode 100644
index 0000000..9dd781b
--- /dev/null
+++ b/jdk/make/common/Defs.gmk
@@ -0,0 +1,719 @@
+#
+# Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Common variables used by all the Java makefiles. This file should
+# not contain rules.
+#
+
+# WARNING: This file is shared with other workspaces.
+# So when it includes other files, it must use JDK_TOPDIR.
+#
+
+#
+# On Solaris, the 'make' utility from Sun will not work with these makefiles.
+# This little rule is only understood by Sun's make, and is harmless
+# when seen by the GNU make tool. If using Sun's make, this causes the
+# make command to fail.
+#
+SUN_MAKE_TEST:sh = echo "ERROR: PLEASE USE GNU VERSION OF MAKE"; exit 33
+
+ifndef JDK_TOPDIR
+ JDK_TOPDIR=$(BUILDDIR)/..
+endif
+ifndef JDK_MAKE_SHARED_DIR
+ JDK_MAKE_SHARED_DIR=$(JDK_TOPDIR)/make/common/shared
+endif
+
+include $(JDK_MAKE_SHARED_DIR)/Platform.gmk
+
+TOPDIR=$(BUILDDIR)/..
+
+include $(JDK_TOPDIR)/make/common/CancelImplicits.gmk
+
+# Historically PLATFORM_SRC used to be src/$(PLATFORM), but we switched it to
+# src/solaris so if you want to build on Linux you didn't need a src/linux
+# directory. In an ideal world it would be called src/genunix but we are not
+# there yet.
+#
+ifndef SHARE_SRC
+ SHARE_SRC = $(JDK_TOPDIR)/src/share
+endif
+
+# Files that cannot be included in the OpenJDK distribution are
+# collected under a parent directory which contains just those files.
+ifndef CLOSED_SRC
+ CLOSED_SRC = $(JDK_TOPDIR)/src/closed
+endif
+
+# If we have no closed directory, force it to an openjdk build
+CLOSED_SRC_DIR_EXISTS := $(shell \
+ if [ -d $(CLOSED_SRC) ] ; then \
+ echo true; \
+ else \
+ echo false; \
+ fi)
+ifeq ($(CLOSED_SRC_DIR_EXISTS), false)
+ OPENJDK = true
+endif
+
+# Check for strange explicit settings (change to empty or true)
+ifdef OPENJDK
+ ifeq ($(OPENJDK),false)
+ # Silently treat as not defined
+ OPENJDK =
+ else
+ ifneq ($(OPENJDK),true)
+ dummy := $(warning "WARNING: OPENKJDK=$(OPENJDK) being treated as true")
+ OPENJDK = true
+ endif
+ endif
+endif
+
+# Define where closed directories are
+ifdef OPENJDK
+ CLOSED_SRC =
+ CLOSED_SHARE_SRC =
+else
+ ifndef CLOSED_SHARE_SRC
+ CLOSED_SHARE_SRC = $(CLOSED_SRC)/share
+ endif
+endif
+
+# If OPENJDK is defined, we may still need to use some native libraries that
+# exist only as part of the closed source. If the closed sources are not
+# available, the libraries must have been pre-built. Since these libraries
+# and the JDK internal interfaces to these are reasonably stable this is not
+# a significant problem. But we do need to provide a way to locate them,
+# including a way to point to a new one when there have been changes.
+#
+# If you have a formal binary plugs download, set ALT_BINARY_PLUGS_PATH
+# to the location.
+# (Optionally you can set ALT_CLOSED_JDK_IMPORT_PATH to point to the latest
+# build JDK, or last promotion for this JDK version, but will not work
+# on windows).
+#
+# As the OPENJDK is built, the binary plugs are used instead of building the
+# libraries.
+# Individual Makefiles that specify USE_BINARY_PLUG_LIBRARY, will get
+# the binary plug copy (or a copy from a built JDK).
+#
+# See common/internal/BinaryPlugs.gmk for more information.
+#
+# Usage notes:
+#
+# ALT_BINARY_PLUGS_JARFILE is probably rarely needed. It can be used
+# to identify the exact jar file to be used for all closed classes..
+#
+# ALT_BINARY_PLUGS_PATH points to a directory containing precisely the
+# binaries needed to build.
+#
+# ALT_BUILD_BINARY_PLUGS_PATH points to a directory containing binary plug dirs
+# multiple architectures named using the standard conventions
+# This is useful for build scripts that need to build multiple architectures
+# of the OpenJDK.
+#
+# ALT_CLOSED_JDK_IMPORT_PATH points to the top-level of a specific platform
+# JDK image.
+#
+# The precedence is that
+# 1. ALT_BINARY_PLUGS_JARFILE overrides any other location of the classes
+# 2. ALT_BINARY_PLUGS_PATH overrides all locations of classes and libraries
+# 3. ALT_BUILD_BINARY_PLUGS_PATH is used to find a ALT_BINARY_PLUGS_PATH
+# 4. ALT_CLOSED_JDK_IMPORT_PATH is used to locate classes and libraries
+#
+
+# Always needed, defines the name of the imported/exported jarfile
+BINARY_PLUGS_JARNAME = rt-closed.jar
+
+ifdef OPENJDK
+ ifdef ALT_CLOSED_JDK_IMPORT_PATH
+ CLOSED_JDK_IMPORT_PATH = $(ALT_CLOSED_JDK_IMPORT_PATH)
+ BINARY_PLUGS_PATH = $(CLOSED_JDK_IMPORT_PATH)
+ BINARY_PLUGS_JARFILE = $(CLOSED_JDK_IMPORT_PATH)/jre/lib/rt.jar
+ endif
+ ifdef ALT_BUILD_BINARY_PLUGS_PATH
+ BUILD_BINARY_PLUGS_PATH = $(ALT_BUILD_BINARY_PLUGS_PATH)
+ else
+ BUILD_BINARY_PLUGS_PATH = $(SLASH_JAVA)/re/jdk/$(JDK_VERSION)/promoted/latest/openjdk/binaryplugs
+ endif
+ BINARY_PLUGS_PATH = $(BUILD_BINARY_PLUGS_PATH)/$(PLATFORM)-$(ARCH)
+ BINARY_PLUGS_JARFILE = $(BINARY_PLUGS_PATH)/jre/lib/$(BINARY_PLUGS_JARNAME)
+ ifdef ALT_BINARY_PLUGS_PATH
+ BINARY_PLUGS_PATH = $(ALT_BINARY_PLUGS_PATH)
+ BINARY_PLUGS_JARFILE = $(BINARY_PLUGS_PATH)/jre/lib/$(BINARY_PLUGS_JARNAME)
+ endif
+ ifdef ALT_BINARY_PLUGS_JARFILE
+ BINARY_PLUGS_JARFILE = $(ALT_BINARY_PLUGS_JARFILE)
+ endif
+endif # OPENJDK
+
+# Default output directory
+ifdef OPENJDK
+_OUTPUTDIR=$(JDK_TOPDIR)/build/$(PLATFORM)-$(ARCH)$(OPENJDK_SUFFIX)
+else
+_OUTPUTDIR=$(JDK_TOPDIR)/build/$(PLATFORM)-$(ARCH)
+endif
+
+
+#
+# Get platform definitions
+#
+
+include $(JDK_TOPDIR)/make/common/Defs-$(PLATFORM).gmk
+
+#
+# Freetype logic is applicable to OpenJDK only
+#
+ifdef OPENJDK
+
+#if we use system lib we do not need to copy it to build tree
+USING_SYSTEM_FT_LIB=false
+
+ifeq ($(PLATFORM), windows)
+ DEVTOOLS_FT_DIR=$(JDK_DEVTOOLS_DIR)/win32/freetype-$(ARCH)
+endif
+ifeq ($(PLATFORM), linux)
+ DEVTOOLS_FT_DIR=$(JDK_DEVTOOLS_DIR)/$(PLATFORM)/freetype-$(ARCH)
+endif
+ifeq ($(PLATFORM), solaris)
+ # historically for Solaris we have slightly different devtools
+ # naming conventions
+ DEVTOOLS_FT_DIR=$(JDK_DEVTOOLS_DIR)/$(ARCH_FAMILY)/freetype-$(ARCH)
+endif
+
+DEVTOOLS_FT_DIR_EXISTS = $(shell \
+ if [ -f $(DEVTOOLS_FT_DIR)/include/ft2build.h ] ; then \
+ echo true; \
+ else \
+ echo false; \
+ fi)
+
+ ifdef ALT_FREETYPE_LIB_PATH
+ FREETYPE_LIB_PATH = $(ALT_FREETYPE_LIB_PATH)
+ else
+ ifeq ($(DEVTOOLS_FT_DIR_EXISTS), true)
+ FREETYPE_LIB_PATH = $(DEVTOOLS_FT_DIR)/lib
+ else
+ FREETYPE_LIB_PATH = /usr/lib
+ USING_SYSTEM_FT_LIB=true
+ endif
+ endif
+
+ ifeq ($(PLATFORM), windows)
+ FREETYPE_LIB = $(FREETYPE_LIB_PATH)/freetype.lib
+ else
+ FREETYPE_LIB = -L$(FREETYPE_LIB_PATH) -lfreetype
+ endif
+
+ ifdef ALT_FREETYPE_HEADERS_PATH
+ FREETYPE_HEADERS_PATH = $(ALT_FREETYPE_HEADERS_PATH)
+ else
+ ifeq ($(DEVTOOLS_FT_DIR_EXISTS), true)
+ FREETYPE_HEADERS_PATH = $(DEVTOOLS_FT_DIR)/include
+ else
+ FREETYPE_HEADERS_PATH = /usr/include
+ endif
+ endif
+endif
+
+#
+# Localizations for the different parts of the product beyond English
+#
+
+JRE_LOCALES = de es fr it ja ko sv zh_CN zh_TW zh_HK
+PLUGIN_LOCALES = de es fr it ja ko sv zh_CN zh_TW zh_HK
+JDK_LOCALES = ja zh_CN
+
+#
+# A list of locales we support but don't have resource files.
+# This is defined to optimize the search of resource bundles.
+#
+JRE_NONEXIST_LOCALES = en en_US de_DE es_ES fr_FR it_IT ja_JP ko_KR sv_SE zh
+
+#
+# All libraries except libjava and libjvm itself link against libjvm and
+# libjava, the latter for its exported common utilities. libjava only links
+# against libjvm. Programs' makefiles take their own responsibility for
+# adding other libs.
+#
+ifdef PACKAGE
+# put JAVALIB first, but do not lose any platform specific values....
+ LDLIBS_COMMON = $(JAVALIB)
+endif # PACKAGE
+
+#
+# Libraries that must appear ahead of libc.so on the link command line
+#
+ifdef PROGRAM
+
+ ifeq ($(PLATFORM), solaris)
+ LDLIBS_COMMON = -lthread -ldl
+ endif
+
+ ifeq ($(PLATFORM), linux)
+ LDLIBS_COMMON = -ldl
+ endif
+
+endif # PROGRAM
+
+LDLIBS_COMMON += $(EXTRA_LIBS)
+
+#
+# Default is to build, not import native binaries
+#
+ifndef IMPORT_NATIVE_BINARIES
+ IMPORT_NATIVE_BINARIES=false
+endif
+# If importing libraries in, no incremental builds
+ifeq ($(IMPORT_NATIVE_BINARIES),true)
+ INCREMENTAL_BUILD=false
+endif
+
+# for generated libraries
+LIBDIR = $(OUTPUTDIR)/lib
+ABS_LIBDIR = $(ABS_OUTPUTDIR)/lib
+# Optional place to save the windows .lib files
+LIBFILES_DIR = $(OUTPUTDIR)/libfiles
+# for ext jre files
+EXTDIR = $(LIBDIR)/ext
+# for generated include files
+INCLUDEDIR = $(OUTPUTDIR)/include
+# for generated class files
+CLASSBINDIR = $(OUTPUTDIR)/classes
+DEMOCLASSDIR = $(OUTPUTDIR)/democlasses
+# for generated tool class files
+BUILDTOOLCLASSDIR = $(OUTPUTDIR)/btclasses
+# for build tool jar files
+BUILDTOOLJARDIR = $(OUTPUTDIR)/btjars
+ABS_BUILDTOOLJARDIR = $(ABS_OUTPUTDIR)/btjars
+# for generated java source files
+GENSRCDIR = $(OUTPUTDIR)/gensrc
+# for generated C source files (not javah)
+GENNATIVESRCDIR = $(OUTPUTDIR)/gennativesrc
+# for imported source files
+IMPORTSRCDIR = $(OUTPUTDIR)/impsrc
+# for imported documents
+IMPORTDOCDIR = $(OUTPUTDIR)/impdoc
+# for generated demo
+DEMODIR = $(OUTPUTDIR)/demo
+# for sample code
+SAMPLEDIR = $(OUTPUTDIR)/sample
+# for generated documentation
+DOCSDIR = $(OUTPUTDIR)/docs$(DOCSDIRSUFFIX)
+DOCSDIRSUFFIX =
+
+# The MESSAGE, WARNING and ERROR files are used to store sanityck and
+# SCCS check messages, warnings and errors.
+ifndef ERROR_FILE
+ ERROR_FILE = $(OUTPUTDIR)/sanityCheckErrors.txt
+endif
+ifndef WARNING_FILE
+ WARNING_FILE = $(OUTPUTDIR)/sanityCheckWarnings.txt
+endif
+ifndef MESSAGE_FILE
+ MESSAGE_FILE = $(OUTPUTDIR)/sanityCheckMessages.txt
+endif
+
+JDK_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2sdk-image
+JRE_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2re-image
+
+#where the demo source can be found
+DEMOSRCDIR = $(SHARE_SRC)/demo
+
+# An attempt is made to generate unique enough directories for the
+# generated files to not have name collisisons. Most build units
+# defines PRODUCT (except Release.gmk), but then they may or may
+# not define PACKAGE, THREADIR (only HPI uses this), PROGRAM, and
+# LIBRARY. This code chunk attempts to generate a unique
+# OBJDIR/CLASSHDRDIR for each build unit based on which of those
+# values are set within each build unit.
+
+UNIQUE_LOCATION_STRING = tmp
+
+ifneq ($(PRODUCT),)
+ UNIQUE_LOCATION_STRING += /$(PRODUCT)
+endif
+
+ifneq ($(PACKAGE),)
+ UNIQUE_LOCATION_STRING += /$(PACKAGE)
+endif
+
+ifneq ($(PROGRAM),)
+ UNIQUE_LOCATION_STRING += /$(PROGRAM)
+endif
+
+ifneq ($(LIBRARY),)
+ ifneq ($(LIBRARY_OUTPUT),)
+ UNIQUE_LOCATION_STRING += /$(LIBRARY_OUTPUT)
+ else
+ UNIQUE_LOCATION_STRING += /$(LIBRARY)
+ endif
+endif
+
+ifneq ($(THREADDIR),)
+ UNIQUE_LOCATION_STRING += /$(THREADDIR)
+endif
+
+# the use of += above makes a space separated list which we need to
+# remove for filespecs.
+#
+NULLSTRING :=
+ONESPACE := $(NULLSTRING) # space before this comment is required.
+UNIQUE_PATH = $(subst $(ONESPACE),,$(UNIQUE_LOCATION_STRING))
+
+# TEMPDIR is a unique general purpose directory
+# need to use 'override' because GNU Make on Linux exports the wrong
+# value.
+override TEMPDIR = $(OUTPUTDIR)/$(UNIQUE_PATH)
+override ABS_TEMPDIR = $(ABS_OUTPUTDIR)/$(UNIQUE_PATH)
+
+# This must be created right away for pattern rules in Sanity.gmk to work.
+dummy1:=$(shell $(MKDIR) -p $(TEMPDIR))
+dummy2:=$(shell $(MKDIR) -p $(TEMP_DISK))
+
+# OBJDIRNAME is the name of the directory where the object code is to
+# be placed. It's name depends on whether the data model architecture
+# is 32-bit or not.
+ifneq ($(ARCH_DATA_MODEL), 32)
+ OBJDIRNAME = obj$(ARCH_DATA_MODEL)$(OBJDIRNAME_SUFFIX)
+else
+ OBJDIRNAME = obj$(OBJDIRNAME_SUFFIX)
+endif
+OBJDIR = $(TEMPDIR)/$(OBJDIRNAME)
+
+# CLASSHDRDIR is where the generated C Class Header files go.
+CLASSHDRDIR = $(TEMPDIR)/CClassHeaders
+
+#
+# CLASSDESTDIR can be used to specify the directory where generated classes
+# are to be placed. The default is CLASSBINDIR.
+#
+ifndef CLASSDESTDIR
+CLASSDESTDIR = $(CLASSBINDIR)
+endif
+
+INCLUDES = -I. -I$(CLASSHDRDIR) \
+ $(patsubst %,-I%,$(subst $(CLASSPATH_SEPARATOR), ,$(VPATH.h))) $(OTHER_INCLUDES)
+OTHER_CPPFLAGS = $(INCLUDES)
+
+
+#
+# vpaths. These are the default locations searched for source files.
+# GNUmakefiles of individual areas often override the default settings.
+# There are no longer default vpath entries for C and assembler files
+# so we can ensure that libraries don't get their hands on JVM files.
+#
+# We define an intermediate variable for Java files because
+# we use its value later to help define $SOURCEPATH
+
+VPATH0.java = $(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/classes
+ifdef OPENJDK
+ VPATH.java = $(VPATH0.java)
+else
+ #
+ # If filenames are duplicated between open/closed workspaces, prefer
+ # the closed files.
+ #
+ # Source ordering is important: some targets depend on closed files
+ # replacing open ones, and thus the closed file sources must be found
+ # before the open ones.
+ #
+ # Don't reorder without consulting the teams that depend on this behavior.
+ #
+ VPATH.java = $(CLOSED_PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(CLOSED_SHARE_SRC)/classes$(CLASSPATH_SEPARATOR)$(VPATH0.java)
+endif
+vpath %.java $(VPATH.java)
+vpath %.class $(CLASSBINDIR)
+vpath %.$(OBJECT_SUFFIX) $(OBJDIR)
+
+#
+# VPATH.h is used elsewhere to generate include flags. By default,
+# anyone has access to the include files that the JVM area exports,
+# namely jni.h, jvm.h, and jni_utils.h, plus their platform-specific
+# relatives.
+#
+VPATH.h = $(PLATFORM_SRC)/javavm/export$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/javavm/export$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/javavm/include$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/javavm/include
+vpath %.h $(VPATH.h)
+
+#
+# Used in two ways: helps link against libjava.so. Also if overridden
+# determines where your shared library is installed.
+#
+ifndef LIB_LOCATION
+ LIB_LOCATION = $(LIBDIR)/$(LIBARCH)
+endif
+
+#
+# Java header and stub variables
+#
+CLASSHDRS = $(patsubst %,$(CLASSHDRDIR)/%.h,$(subst .,_,$(CLASSES.export)))
+CLASSSTUBOBJS = classstubs.$(OBJECT_SUFFIX)
+STUBPREAMBLE = $(INCLUDEDIR)/StubPreamble.h
+
+#
+# Classpath seen by javac (different from the one seen by the VM
+# running javac), and useful variables.
+#
+SOURCEPATH = $(VPATH.java)
+PKG = $(shell $(EXPR) $(PACKAGE) : '\([a-z]*\)')
+PKGDIR = $(subst .,/,$(PACKAGE))
+
+#
+# The java/javac/jdk variables (JAVAC_CMD, JAVA_CMD, etc.)
+#
+include $(JDK_MAKE_SHARED_DIR)/Defs-java.gmk
+
+#
+# Set opt level to ALT_OPT if set otherwise _OPT
+#
+POPT = $(_OPT$(ALT_OPT))$(ALT_OPT)
+
+#
+# Convenient macros
+#
+
+# Prepare $@ target, remove old one and making sure directory exists
+define prep-target
+$(MKDIR) -p $(@D)
+$(RM) $@
+endef
+
+# Simple install of $< file to $@
+define install-file
+$(prep-target)
+$(CP) $< $@
+endef
+
+# Cleanup rule for after debug java run (hotspot.log file is left around)
+# (This could be an old leftover file in a read-only area, use the @- prefix)
+HOTSPOT_LOG_NAME = hotspot.log
+define java-vm-cleanup
+if [ -w $(HOTSPOT_LOG_NAME) ] ; then $(RM) $(HOTSPOT_LOG_NAME); fi
+endef
+
+# Default make settings for processing SUBDIRS with clobber or clean names
+SUBDIRS_MAKEFLAGS-clobber = INCREMENTAL_BUILD=false
+SUBDIRS_MAKEFLAGS-clean = INCREMENTAL_BUILD=false
+
+# Current directory
+CURRENT_DIRECTORY := $(shell $(PWD))
+
+# If no timing wanted, we need to define these as empty
+ifdef NO_TIMING
+
+TIMING_ID:=NA
+
+define TIMING_start
+t=0:0:0:0
+endef
+
+define TIMING_end
+time_used=0
+endef
+
+else # NO_TIMING
+
+# Default timing id
+TIMING_ID:=$(shell $(BASENAME) $(CURRENT_DIRECTORY))
+
+# Timing start (must be used in same shell, e.g. same command line)
+# Defines the shell variable $1 to have the start time.
+define TIMING_start
+$1=`$(DATE) +%j:%H:%M:%S`
+endef
+
+# Timing end (must be used in same shell, e.g. same command line)
+# Expects shell variable $1 to have been defined as the start time.
+# Expects shell variable $2 to have timing id string
+# Sets total_seconds shell variable as the total seconds used.
+# Sets time_used shell variable to contain format "%dh%dm%ds"
+define TIMING_end
+begTime="$${$1}"; \
+timing_id="$${$2}"; \
+endTime=`$(DATE) +%j:%H:%M:%S`; \
+d1=`$(ECHO) $${begTime} | $(CUT) -d':' -f1 | $(SED) -e 's@^0*@@'`; \
+if [ "$${d1}" = "" ] ; then d1=0; fi; \
+h1=`$(ECHO) $${begTime} | $(CUT) -d':' -f2 | $(SED) -e 's@^0*@@'`; \
+if [ "$${h1}" = "" ] ; then h1=0; fi; \
+m1=`$(ECHO) $${begTime} | $(CUT) -d':' -f3 | $(SED) -e 's@^0*@@'`; \
+if [ "$${m1}" = "" ] ; then m1=0; fi; \
+s1=`$(ECHO) $${begTime} | $(CUT) -d':' -f4 | $(SED) -e 's@^0*@@'`; \
+if [ "$${s1}" = "" ] ; then s1=0; fi; \
+d2=`$(ECHO) $${endTime} | $(CUT) -d':' -f1 | $(SED) -e 's@^0*@@'`; \
+if [ "$${d2}" = "" ] ; then d2=0; fi; \
+h2=`$(ECHO) $${endTime} | $(CUT) -d':' -f2 | $(SED) -e 's@^0*@@'`; \
+if [ "$${h2}" = "" ] ; then h2=0; fi; \
+m2=`$(ECHO) $${endTime} | $(CUT) -d':' -f3 | $(SED) -e 's@^0*@@'`; \
+if [ "$${m2}" = "" ] ; then m2=0; fi; \
+s2=`$(ECHO) $${endTime} | $(CUT) -d':' -f4 | $(SED) -e 's@^0*@@'`; \
+if [ "$${s2}" = "" ] ; then s2=0; fi; \
+t1_secs=`$(EXPR) $${d1} '*' 60 '*' 60 '*' 24 '+' $${h1} '*' 60 '*' 60 \
+ '+' $${m1} '*' 60 '+' $${s1}`; \
+t2_secs=`$(EXPR) $${d2} '*' 60 '*' 60 '*' 24 '+' $${h2} '*' 60 '*' 60 \
+ '+' $${m2} '*' 60 '+' $${s2}`; \
+total_seconds=`$(EXPR) $${t2_secs} '-' $${t1_secs}`; \
+if [ "$${total_seconds}" -lt 0 ] ; then total_seconds=0; fi; \
+t_hour=`$(EXPR) $${total_seconds} '/' '(' 60 '*' 60 ')'`h; \
+t_min=`$(EXPR) '(' $${total_seconds} '%' '(' 60 '*' 60 ')' ')' '/' 60`m; \
+t_sec=`$(EXPR) $${total_seconds} '%' 60`s; \
+time_used=$${t_sec}; \
+if [ "$${t_hour}" != "0h" ] ; then \
+time_used=$${t_hour}$${t_min}$${t_sec}; \
+elif [ "$${t_min}" != "0m" ] ; then \
+time_used=$${t_min}$${t_sec}; \
+else \
+time_used=$${t_sec}; \
+fi; \
+$(PRINTF) " Timing: %05d seconds or %s for %s\n" \
+ $${total_seconds} $${time_used} $${timing_id}
+endef
+
+endif # NO_TIMING
+
+# Given a SUBDIRS list, cd into them and make them
+# SUBDIRS_MAKEFLAGS Make settings for a subdir make
+# SUBDIRS_MAKEFLAGS-$@ Make settings specific to this target
+define SUBDIRS-loop
+@$(ECHO) "Begin Processing SUBDIRS: $(SUBDIRS)"
+@for i in DUMMY $(SUBDIRS) ; do \
+ if [ "$$i" != "DUMMY" ] ; then \
+ $(ECHO) ">>>Recursively making "$$i" "$@" @ `$(DATE)` ..."; \
+ timing_id="$(TIMING_ID)-`$(BASENAME) $${i}`"; \
+ $(call TIMING_start,startTime); \
+ curDir=$(CURRENT_DIRECTORY); \
+ $(CD) $$i; $(MAKE) $@ TIMING_ID=$${timing_id} \
+ $(SUBDIRS_MAKEFLAGS) \
+ $(SUBDIRS_MAKEFLAGS-$@) \
+ FULL_VERSION=$(FULL_VERSION) \
+ RELEASE=$(RELEASE) || exit 1; \
+ $(CD) $${curDir}; \
+ $(call TIMING_end,startTime,timing_id); \
+ $(ECHO) "<<<Finished Recursively making "$$i" "$@" @ `$(DATE)`." ; \
+ fi ; \
+done
+@$(ECHO) "Done Processing SUBDIRS: $(SUBDIRS)"
+endef
+
+# Given a OTHERSUBDIRS list, cd into them and make them (extra loop define)
+# OTHERSUBDIRS_MAKEFLAGS Make settings for a subdir make
+define OTHERSUBDIRS-loop
+@$(ECHO) "Begin Processing OTHERSUBDIRS: $(OTHERSUBDIRS)"
+@for i in DUMMY $(OTHERSUBDIRS) ; do \
+ if [ "$$i" != "DUMMY" ] ; then \
+ $(ECHO) ">>>Recursively making "$$i" "$@" @ `$(DATE)` ..."; \
+ timing_id="$(TIMING_ID)-`$(BASENAME) $${i}`"; \
+ $(call TIMING_start,startTime); \
+ curDir=$(CURRENT_DIRECTORY); \
+ $(CD) $$i; $(MAKE) $@ TIMING_ID=$${timing_id} \
+ $(OTHERSUBDIRS_MAKEFLAGS) \
+ FULL_VERSION=$(FULL_VERSION) \
+ RELEASE=$(RELEASE) || exit 1; \
+ $(CD) $${curDir}; \
+ $(call TIMING_end,startTime,timing_id); \
+ $(ECHO) "<<<Finished Recursively making "$$i" "$@" @ `$(DATE)`." ; \
+ fi ; \
+done
+@$(ECHO) "Done Processing OTHERSUBDIRS: $(OTHERSUBDIRS)"
+endef
+
+#
+# Create BYFILE OPT and DBG settings, if CFLAGS_OPT/foobar.o is set then it is
+# used for this file, otherwise the default settings are used.
+#
+CFLAGS_$(VARIANT)/BYFILE = $(CFLAGS_$(VARIANT)/$(@F)) \
+ $(CFLAGS_$(VARIANT)$(CFLAGS_$(VARIANT)/$(@F)))
+CXXFLAGS_$(VARIANT)/BYFILE = $(CXXFLAGS_$(VARIANT)/$(@F)) \
+ $(CXXFLAGS_$(VARIANT)$(CXXFLAGS_$(VARIANT)/$(@F)))
+
+#
+# Tool flags
+#
+ASFLAGS = $(ASFLAGS_$(VARIANT)) $(ASFLAGS_COMMON) $(OTHER_ASFLAGS)
+CFLAGS = $(CFLAGS_$(VARIANT)/BYFILE) $(CFLAGS_COMMON) $(OTHER_CFLAGS)
+CXXFLAGS = $(CXXFLAGS_$(VARIANT)/BYFILE) $(CXXFLAGS_COMMON) $(OTHER_CXXFLAGS)
+CPPFLAGS = $(CPPFLAGS_$(VARIANT)) $(CPPFLAGS_COMMON) $(OTHER_CPPFLAGS) \
+ $(DEFINES) $(OPTIONS:%=-D%)
+LDFLAGS = $(LDFLAGS_$(VARIANT)) $(LDFLAGS_COMMON) $(OTHER_LDFLAGS)
+LDLIBS = $(OTHER_LDLIBS) $(LDLIBS_$(VARIANT)) $(LDLIBS_COMMON)
+LINTFLAGS = $(LINTFLAGS_$(VARIANT)) $(LINTFLAGS_COMMON) \
+ $(OTHER_LINTFLAGS)
+
+# this should be moved into Defs-<platform>.gmk.....
+ifeq ($(PLATFORM), windows)
+ VERSION_DEFINES = -DRELEASE="\"$(RELEASE)\""
+else
+ VERSION_DEFINES = -DRELEASE='"$(RELEASE)"'
+endif
+
+# Note: As a rule, GNU Make rules should not appear in any of the
+# Defs*.gmk files. These were added for Kestrel-Solaris and do address
+# a TeamWare bug. They should be moved elsewhere for Merlin.
+#
+# Override gnumake built-in rules which do sccs get operations badly.
+# (They put the checked out code in the current directory, not in the
+# directory of the original file.)
+# Since this is a symptom of a teamware failure, complain and die on the spot.
+
+# This message immediately goes to stdout and the build terminates.
+define SCCS-trouble
+$(error \
+"ERROR: File $@ referenced while building in $(CURRENT_DIRECTORY) \
+ is out of date with respect to its SCCS file $<. \
+ This can happen from an unresolved Teamware conflict, a file movement, or \
+ a failure in which SCCS files are updated but the 'sccs get' was not done. \
+ You should double check for other out of date files in your workspace. \
+ Or run: cd $(TOPDIR) && $(MAKE) sccs_get")
+endef
+
+%:: s.%
+ @$(SCCS-trouble)
+%:: SCCS/s.%
+ @$(SCCS-trouble)
+ @$(ECHO) " is out of date with respect to its SCCS file." >> $(WARNING_FILE)
+ @$(ECHO) " This file may be from an unresolved Teamware conflict." >> $(WARNING_FILE)
+ @$(ECHO) " This is also a symptom of a Teamware bringover/putback failure" >> $(WARNING_FILE)
+ @$(ECHO) " in which SCCS files are updated but not checked out." >> $(WARNING_FILE)
+ @$(ECHO) " Check for other out of date files in your workspace." >> $(WARNING_FILE)
+ @$(ECHO) "" >> $(WARNING_FILE)
+ @#exit 666
+
+ifdef INSANE
+ export INSANE
+endif
+
+ifdef ALT_COPYRIGHT_YEAR
+ COPYRIGHT_YEAR = $(ALT_COPYRIGHT_YEAR)
+else
+ COPYRIGHT_YEAR = $(shell $(DATE) '+%Y')
+endif
+
+# Install of imported file (JDK_IMPORT_PATH, or some other external location)
+define install-import-file
+@$(ECHO) "ASSEMBLY_IMPORT: $@"
+$(install-file)
+endef
+
+.PHONY: all build clean clobber
diff --git a/jdk/make/common/Demo.gmk b/jdk/make/common/Demo.gmk
new file mode 100644
index 0000000..086a1da
--- /dev/null
+++ b/jdk/make/common/Demo.gmk
@@ -0,0 +1,367 @@
+#
+# Copyright 2004-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# JDK Demo building jar file.
+
+# Some names are defined with LIBRARY inside the Defs.gmk file
+LIBRARY=$(DEMONAME)
+OBJDIR=$(TEMPDIR)/$(DEMONAME)
+
+# Input:
+# DEMONAME - name of the demo
+# DEMO_ROOT - path to root of all demo files
+# DEMO_DESTDIR - path to final demo destination directory
+#
+# Optional Input:
+# DEMO_SRCDIR - path to source if different from DEMO_ROOT
+# DEMO_PSRCDIR - path to additional platform specific source
+# DEMO_PKGDIR - sub directory of sources we want
+# DEMO_TOPFILES - names of top-level files relative to DEMO_ROOT
+# DEMO_MAINCLASS - name of the main class for the jar manifest
+# DEMO_NATIVECLASS - name of the class with native methods
+# DEMO_DESCRIPTOR - name of service file for jar (relative to DEMO_SRCDIR)
+# DEMO_EXTRA_SRCDIR - path to directory that holds extra sources to add
+# DEMO_EXTRA_FILES - extra sources relative to DEMO_EXTRA_SRCDIR
+# DEMO_OBJECTS - extra native object files needed
+# DEMO_MANIFEST_ATTR - extra line to add to the jar manifest file
+
+# Assume the source directory is the root directory if not set
+ifndef DEMO_SRCDIR
+ DEMO_SRCDIR = $(DEMO_ROOT)
+endif
+ifndef DEMO_PKGDIR
+ DEMO_PKGDIR = .
+endif
+
+# Some demos have special needs
+ifneq ($(DEMONAME),agent_util)
+ DEMO_NEEDS_AGENT_UTIL = $(findstring agent_util,$(DEMO_OBJECTS))
+endif
+ifneq ($(DEMONAME),java_crw_demo)
+ DEMO_NEEDS_JAVA_CRW_DEMO = $(findstring java_crw_demo,$(DEMO_OBJECTS))
+endif
+ifeq ($(DEMONAME),hprof)
+ DEMO_NEEDS_NPT = true
+endif
+
+# Place to hold the build area (kind of a temp area)
+DEMO_BUILD_AREA = $(DEMOCLASSDIR)/$(PRODUCT)/$(DEMONAME)
+
+# Destination "src" directory
+DEMO_BUILD_SRCDIR = $(DEMO_BUILD_AREA)/src
+DEMO_BUILD_SRCZIP = $(DEMO_BUILD_AREA)/src.zip
+DEMO_SOURCE_ZIP = $(DEMO_DESTDIR)/src.zip
+
+# Place to hold the jar image we are creating
+DEMO_JAR_IMAGE = $(DEMO_BUILD_AREA)/jar_image
+
+# The jar manifest file we will create and use
+DEMO_MANIFEST = $(DEMO_BUILD_AREA)/manifest.mf
+
+# The list of source files or options we will supply to javac
+DEMO_JAVAC_INPUT = $(DEMO_BUILD_AREA)/javac_input.txt
+
+# Any name of javah file
+DEMO_JAVAH_FILE = $(DEMO_NATIVECLASS:%=$(DEMO_BUILD_SRCDIR)/%.h)
+
+# Get complete list of files for this demo
+ifdef DEMO_PSRCDIR
+ DEMO_ALL_FILES2 := $(shell ( $(CD) $(DEMO_PSRCDIR) \
+ && $(FIND) $(DEMO_PKGDIR) $(SCM_DIRS_prune) -o -type f -print ) \
+ | $(SED) 's@^\./@@' )
+ DEMO_ALL_FILES += $(DEMO_ALL_FILES2)
+endif
+ifdef DEMO_EXTRA_SRCDIR
+ DEMO_ALL_FILES += $(DEMO_EXTRA_FILES)
+endif
+DEMO_ALL_FILES1 := $(shell ( $(CD) $(DEMO_SRCDIR) \
+ && $(FIND) $(DEMO_PKGDIR) $(SCM_DIRS_prune) -o -type f -print ) \
+ | $(SED) 's@^\./@@' )
+DEMO_ALL_FILES += $(DEMO_ALL_FILES1)
+
+# Just the java sources
+DEMO_JAVA_SOURCES = $(filter %.java,$(DEMO_ALL_FILES))
+
+# Just the C and C++ sources
+DEMO_C_SRC_FILES = $(filter %.c,$(DEMO_ALL_FILES))
+DEMO_CPP_SRC_FILES = $(filter %.cpp,$(DEMO_ALL_FILES))
+
+# All the native source files
+DEMO_ALL_NATIVE_SOURCES = $(DEMO_C_SRC_FILES)
+DEMO_ALL_NATIVE_SOURCES += $(DEMO_CPP_SRC_FILES)
+DEMO_ALL_NATIVE_SOURCES += $(filter %.h,$(DEMO_ALL_FILES))
+DEMO_ALL_NATIVE_SOURCES += $(filter %.hpp,$(DEMO_ALL_FILES))
+
+# If we have java sources, then define the jar file we will create
+ifneq ($(strip $(DEMO_JAVA_SOURCES)),)
+ DEMO_JAR = $(DEMO_DESTDIR)/$(DEMONAME).jar
+endif
+
+# If we have native sources, define the native library we will create
+ifneq ($(strip $(DEMO_ALL_NATIVE_SOURCES)),)
+ # Path to native library we will create
+ DEMO_LIBRARY = \
+ $(DEMO_DESTDIR)/lib$(ISA_DIR)/$(LIB_PREFIX)$(DEMONAME).$(LIBRARY_SUFFIX)
+ # C and C++ compiler flags we need to add to standard flags
+ DEMO_CPPFLAGS += -I$(DEMO_BUILD_SRCDIR)
+ # If the npt library is used we need to find the npt.h file
+ ifneq ($(DEMO_NEEDS_NPT),)
+ # The npt library is delivered as part of the JRE
+ DEMO_CPPFLAGS += -I$(SHARE_SRC)/npt -I$(PLATFORM_SRC)/npt
+ endif
+ # Is the shared agent_util code needed
+ ifneq ($(DEMO_NEEDS_AGENT_UTIL),)
+ DEMO_FULL_SOURCES += $(DEMO_BUILD_SRCDIR)/agent_util.c
+ DEMO_FULL_SOURCES += $(DEMO_BUILD_SRCDIR)/agent_util.h
+ endif
+ # Is the shared java_crw_demo code needed
+ ifneq ($(DEMO_NEEDS_JAVA_CRW_DEMO),)
+ DEMO_FULL_SOURCES += $(DEMO_BUILD_SRCDIR)/java_crw_demo.c
+ DEMO_FULL_SOURCES += $(DEMO_BUILD_SRCDIR)/java_crw_demo.h
+ endif
+ # All the native object files we need to build the library
+ DEMO_OBJECTS += $(DEMO_C_SRC_FILES:%.c=%.$(OBJECT_SUFFIX)) \
+ $(DEMO_CPP_SRC_FILES:%.cpp=%.$(OBJECT_SUFFIX))
+ # Linking is special depending on whether we had C++ code or on windows
+ DEMO_NEEDS_CPP = $(strip $(DEMO_CPP_SRC_FILES))
+ CPPFLAGS += $(DEMO_CPPFLAGS)
+ ifeq ($(PLATFORM),windows)
+ # Note: This is a link with cl.exe, not link.exe, options differ quite
+ # bit between them.
+ LINK.demo = $(LINK.c)
+ LDLIBS.demo = $(EXTRA_LIBS) $(LFLAGS_$(COMPILER_VERSION))
+ else
+ ifneq ($(DEMO_NEEDS_CPP),)
+ LINK.demo = $(LINK.cpp)
+ LDLIBS.demo = $(LIBCXX)
+ ifeq ($(PLATFORM),solaris)
+ LDLIBS.demo += -lc
+ endif
+ else
+ LINK.demo = $(LINK.c)
+ LDLIBS.demo = $(LDLIBS)
+ endif
+ endif
+endif
+
+# Files that are considered resources (need to be in the jar file)
+DEMO_RESOURCES += $(filter-out %.java,$(DEMO_ALL_FILES))
+
+# All destination files (top level readme files and all sources)
+# Note: We exclude the topfiles from the src tree.
+DEMO_DEST_TOPFILES = $(DEMO_TOPFILES:%=$(DEMO_DESTDIR)/%)
+DEMO_FILTERED_SOURCES = $(filter-out $(DEMO_TOPFILES),$(DEMO_ALL_FILES))
+DEMO_FULL_SOURCES += $(DEMO_FILTERED_SOURCES:%=$(DEMO_BUILD_SRCDIR)/%)
+
+# Default rule
+all: build demo_info
+
+# Used to populate the destination directories
+$(DEMO_DESTDIR)/%: $(DEMO_ROOT)/%
+ $(install-file)
+ifneq ($(DEMO_SRCDIR),$(DEMO_ROOT))
+$(DEMO_DESTDIR)/%: $(DEMO_SRCDIR)/%
+ $(install-file)
+endif
+$(DEMO_BUILD_SRCDIR)/%: $(DEMO_SRCDIR)/%
+ $(install-file)
+ifdef DEMO_PSRCDIR
+$(DEMO_BUILD_SRCDIR)/%: $(DEMO_PSRCDIR)/%
+ $(install-file)
+endif
+ifdef DEMO_EXTRA_SRCDIR
+$(DEMO_BUILD_SRCDIR)/%: $(DEMO_EXTRA_SRCDIR)/%
+ $(install-file)
+endif
+ifneq ($(DEMO_NEEDS_AGENT_UTIL),)
+$(DEMO_BUILD_SRCDIR)/%: $(DEMO_SRCDIR)/../agent_util/%
+ $(install-file)
+endif
+ifneq ($(DEMO_NEEDS_JAVA_CRW_DEMO),)
+$(DEMO_BUILD_SRCDIR)/%: $(DEMO_SRCDIR)/../java_crw_demo/%
+ $(install-file)
+endif
+
+# Jar manifest file
+$(DEMO_MANIFEST):
+ @$(prep-target)
+ $(ECHO) "Main-Class: $(DEMO_MAINCLASS)" > $@
+ifdef DEMO_MANIFEST_ATTR
+ $(ECHO) "$(DEMO_MANIFEST_ATTR)" >> $@
+endif
+
+# Populating the jar image directory
+$(DEMO_JAR_IMAGE)/%: $(DEMO_SRCDIR)/%
+ $(install-file)
+ifdef DEMO_PSRCDIR
+$(DEMO_JAR_IMAGE)/%: $(DEMO_PSRCDIR)/%
+ $(install-file)
+endif
+ifdef DEMO_EXTRA_SRCDIR
+$(DEMO_JAR_IMAGE)/%: $(DEMO_EXTRA_SRCDIR)/%
+ $(install-file)
+endif
+ifdef DEMO_DESCRIPTOR
+$(DEMO_JAR_IMAGE)/META-INF/services/$(DEMO_DESCRIPTOR): \
+ $(DEMO_SRCDIR)/$(DEMO_DESCRIPTOR)
+ $(install-file)
+endif
+
+# If we are creating a jar file (we have java code)
+ifdef DEMO_JAR
+
+# Input file for javac
+$(DEMO_JAVAC_INPUT): $(DEMO_JAVA_SOURCES:%=$(DEMO_BUILD_SRCDIR)/%)
+ @$(prep-target)
+ @for i in $(DEMO_JAVA_SOURCES) ; do \
+ $(ECHO) "$(DEMO_BUILD_SRCDIR)/$$i" >> $@ ; \
+ done
+
+# Jar file creation
+$(DEMO_JAR): \
+ $(DEMO_JAVAC_INPUT) \
+ $(DEMO_MANIFEST) \
+ $(DEMO_DESCRIPTOR:%=$(DEMO_JAR_IMAGE)/META-INF/services/%) \
+ $(DEMO_RESOURCES:%=$(DEMO_JAR_IMAGE)/%)
+ @$(prep-target)
+ $(MKDIR) -p $(DEMO_JAR_IMAGE)
+ $(JAVAC_CMD) -d $(DEMO_JAR_IMAGE) -sourcepath $(DEMO_BUILD_SRCDIR) \
+ @$(DEMO_JAVAC_INPUT)
+ $(BOOT_JAR_CMD) -cfm $@ $(DEMO_MANIFEST) \
+ -C $(DEMO_JAR_IMAGE) . \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+endif
+
+# Create a src.zip file
+$(DEMO_BUILD_SRCZIP): $(DEMO_FULL_SOURCES)
+ @$(prep-target)
+ $(CD) $(DEMO_BUILD_AREA)/src && $(ZIPEXE) -q -r ../$(@F) .
+
+# Install the destination src.zip file and create the src tree
+$(DEMO_SOURCE_ZIP): $(DEMO_BUILD_SRCZIP)
+ $(install-file)
+
+# Native library building
+ifdef DEMO_LIBRARY
+
+ # Full paths to object files
+ DEMO_FULL_OBJECTS = $(DEMO_OBJECTS:%=$(OBJDIR)/%)
+ VPATH=
+
+# Native compile rules
+$(OBJDIR)/%.$(OBJECT_SUFFIX): $(DEMO_BUILD_SRCDIR)/%.c
+ @$(prep-target)
+ $(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$@ $<
+ ifneq ($(DEMO_NEEDS_CPP),)
+$(OBJDIR)/%.$(OBJECT_SUFFIX): $(DEMO_BUILD_SRCDIR)/%.cpp
+ @$(prep-target)
+ $(COMPILE.cpp) $(CC_OBJECT_OUTPUT_FLAG)$@ $<
+ endif
+
+ # Actual creation of the native shared library (C++ and C are different)
+$(DEMO_LIBRARY): $(DEMO_FULL_OBJECTS)
+ @$(prep-target)
+ $(LINK.demo) $(SHARED_LIBRARY_FLAG) $(CC_PROGRAM_OUTPUT_FLAG)$@ \
+ $(DEMO_FULL_OBJECTS) $(LDLIBS.demo)
+
+ # Generation of any javah include file, make sure objects are dependent on it
+ ifdef DEMO_NATIVECLASS
+$(DEMO_JAVAH_FILE): $(DEMO_JAR)
+ @$(prep-target)
+ $(JAVAH_CMD) -d $(DEMO_BUILD_SRCDIR) -classpath $(DEMO_JAR) \
+ $(DEMO_NATIVECLASS)
+ @$(java-vm-cleanup)
+$(DEMO_FULL_OBJECTS): $(DEMO_JAVAH_FILE)
+ endif
+
+endif
+
+# Build involves populating the destination "src" tree, building the jar and
+# native library, and creating a source bundle
+
+sources: $(DEMO_FULL_SOURCES)
+ @$(ECHO) "Created $@"
+
+objects:
+ @$(ECHO) "Created $@"
+
+# Why the nested make here? It only works this way, don't know why.
+bundles: $(DEMO_BUILD_SRCZIP)
+ $(RM) -r $(DEMO_DESTDIR)
+ $(MKDIR) -p $(DEMO_DESTDIR)
+ $(MAKE) $(DEMO_LIBRARY) $(DEMO_JAR) $(DEMO_SOURCE_ZIP) $(DEMO_DEST_TOPFILES)
+# Applets are special, no jar file, no src.zip, everything expanded.
+ifdef DEMO_IS_APPLET
+ @$(ECHO) "Expanding jar file into demos area at $(DEMO_DESTDIR)"
+ ( $(CD) $(DEMO_DESTDIR) && $(BOOT_JAR_CMD) -xfv $(DEMONAME).jar && $(RM) -r META-INF $(DEMONAME).jar )
+ @( $(CD) $(DEMO_DESTDIR) && $(java-vm-cleanup) )
+ @$(ECHO) "Expanding source into demos area at $(DEMO_DESTDIR)"
+ ( $(CD) $(DEMO_DESTDIR) && $(UNZIP) -o src.zip && $(RM) src.zip )
+endif
+
+build: sources bundles
+
+# Printing out a demo information line
+define printDemoSetting
+if [ "$2" != "" ] ; then $(PRINTF) "%-20s %s\n" "$1:" "$2"; fi
+endef
+
+# Print out the demo information
+demo_info:
+ @$(ECHO) "========================================================="
+ @$(call printDemoSetting,DEMONAME,$(DEMONAME))
+ @$(call printDemoSetting,DEMO_ROOT,$(DEMO_ROOT))
+ @$(call printDemoSetting,DEMO_SRCDIR,$(DEMO_SRCDIR))
+ @$(call printDemoSetting,DEMO_DESTDIR,$(DEMO_DESTDIR))
+ @$(call printDemoSetting,DEMO_JAR,$(DEMO_JAR))
+ @$(call printDemoSetting,DEMO_MANIFEST_ATTR,$(DEMO_MANIFEST_ATTR))
+ @$(call printDemoSetting,DEMO_PSRCDIR,$(DEMO_PSRCDIR))
+ @$(call printDemoSetting,DEMO_EXTRA_SRCDIR,$(DEMO_EXTRA_SRCDIR))
+ @$(call printDemoSetting,DEMO_EXTRA_FILES,$(DEMO_EXTRA_FILES))
+ @$(call printDemoSetting,DEMO_TOPFILES,$(DEMO_TOPFILES))
+ @$(call printDemoSetting,DEMO_MAINCLASS,$(DEMO_MAINCLASS))
+ @$(call printDemoSetting,DEMO_DESCRIPTOR,$(DEMO_DESCRIPTOR))
+ @$(call printDemoSetting,DEMO_NATIVECLASS,$(DEMO_NATIVECLASS))
+ @$(call printDemoSetting,DEMO_LIBRARY,$(DEMO_LIBRARY))
+ @$(call printDemoSetting,DEMO_OBJECTS,$(DEMO_OBJECTS))
+ @$(call printDemoSetting,DEMO_SOURCE_ZIP,$(DEMO_SOURCE_ZIP))
+ @$(ECHO) "========================================================="
+
+# Clean rule
+clean clobber:
+ $(RM) -r $(DEMO_BUILD_AREA)
+ $(RM) -r $(DEMO_DESTDIR)
+
+# This should not be needed, but some versions of GNU amke have a bug that
+# sometimes deleted these files for some strange and unknown reason
+# (GNU make version 3.78.1 has the problem, GNU make version 3.80 doesn't?)
+.PRECIOUS: $(DEMO_FULL_SOURCES) $(DEMO_BUILD_SRCZIP) $(DEMO_SOURCE_ZIP)
+
+# List phony targets
+.PHONY: all build clean clobber demo_info \
+ sources bundles
+
diff --git a/jdk/make/common/Library.gmk b/jdk/make/common/Library.gmk
new file mode 100644
index 0000000..2b9fe5d
--- /dev/null
+++ b/jdk/make/common/Library.gmk
@@ -0,0 +1,351 @@
+#
+# Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Generic makefile for building shared libraries.
+#
+
+# WARNING: This file is shared with other workspaces.
+# So when it includes other files, it must use JDK_TOPDIR.
+#
+
+include $(JDK_TOPDIR)/make/common/Classes.gmk
+
+#
+# It is important to define these *after* including Classes.gmk
+# in order to override the values defined inthat makefile.
+#
+
+ifeq ($(LIBRARY), fdlibm)
+ifeq ($(PLATFORM),windows)
+ACTUAL_LIBRARY_NAME = $(LIB_PREFIX)$(LIBRARY).$(FDDLIBM_SUFFIX)
+ACTUAL_LIBRARY_DIR = $(OBJDIR)
+else # PLATFORM
+ACTUAL_LIBRARY_NAME = $(LIB_PREFIX)$(LIBRARY).$(ARCH).$(FDDLIBM_SUFFIX)
+ACTUAL_LIBRARY_DIR = $(OBJDIR)
+endif #PLATFORM
+else # LIBRARY
+ACTUAL_LIBRARY_NAME = $(LIB_PREFIX)$(LIBRARY).$(LIBRARY_SUFFIX)
+ACTUAL_LIBRARY_DIR = $(LIB_LOCATION)
+endif
+ACTUAL_LIBRARY = $(ACTUAL_LIBRARY_DIR)/$(ACTUAL_LIBRARY_NAME)
+
+library:: $(ACTUAL_LIBRARY)
+
+FILES_o = $(patsubst %.c, %.$(OBJECT_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_c))))
+FILES_o += $(patsubst %.s, %.$(OBJECT_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_s))))
+FILES_o += $(patsubst %.cpp, %.$(OBJECT_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_cpp))))
+
+ifeq ($(INCREMENTAL_BUILD),true)
+FILES_d = $(patsubst %.c, %.$(DEPEND_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_c))))
+FILES_d += $(patsubst %.cpp, %.$(DEPEND_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_cpp))))
+endif # INCREMENTAL_BUILD
+
+ifeq ($(PLATFORM),solaris)
+# List of all lint files, one for each .c file (only for C)
+FILES_ln = $(patsubst %.c, %.$(LINT_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_c))))
+endif
+
+#
+# C++ libraries must be linked with CC.
+#
+ifdef CPLUSPLUSLIBRARY
+LINKER=$(LINK.cc)
+else
+LINKER=$(LINK.c)
+endif
+
+# FIXUP: unpack needs the zip .o files. So we must build zip?
+# or fix unpack makefile so it uses Program.gmk.
+ifneq ($(IMPORT_NATIVE_BINARIES),true)
+ COMPILE_IT=true
+else
+ ifeq ($(LIBRARY),zip)
+ COMPILE_IT=true
+ else
+ COMPILE_IT=false
+ endif
+endif
+
+# If a Makefile has specified a pre-compiled closed src lib, just copy it.
+ifdef USE_BINARY_PLUG_LIBRARY
+ COMPILE_IT=false
+endif
+
+# We either need to import (copy) libraries in, or build them
+ifeq ($(COMPILE_IT),true)
+
+$(ACTUAL_LIBRARY):: $(INIT) $(TEMPDIR) $(LIBDIR) $(BINDIR) $(EXTDIR) classheaders
+
+#
+# COMPILE_APPROACH: Different approaches to compile up the native object
+# files as quickly as possible.
+# The setting of parallel works best on Unix, batch on Windows.
+#
+
+COMPILE_FILES_o = $(OBJDIR)/.files_compiled
+$(COMPILE_FILES_o): $(FILES_d) $(FILES_o)
+ @$(ECHO) "$<" >> $@
+clean::
+ $(RM) $(COMPILE_FILES_o)
+
+#
+# COMPILE_APPROACH=parallel: Will trigger compilations (just compilations) to
+# happen in parallel. Greatly decreases Unix build time, even on single CPU
+# machines, more so on multiple CPU machines. Default is 2 compiles
+# at a time, but can be adjusted with ALT_PARALLEL_COMPILE_JOBS.
+# Note that each .d file will also be dependent on it's .o file, see
+# Rules.gmk.
+# Note this does not depend on Rules.gmk to work like batch (below)
+# and this technique doesn't seem to help Windows build time nor does
+# it work very well, it's possible the Windows Visual Studio compilers
+# don't work well in a parallel situation, this needs investigation.
+#
+
+ifeq ($(COMPILE_APPROACH),parallel)
+
+.PHONY: library_parallel_compile
+
+library_parallel_compile:
+ @$(ECHO) "Begin parallel compiles: $(shell $(PWD))"
+ @$(MAKE) -j $(PARALLEL_COMPILE_JOBS) $(COMPILE_FILES_o)
+ @$(ECHO) "Done with parallel compiles: $(shell $(PWD))"
+
+$(ACTUAL_LIBRARY):: library_parallel_compile
+
+endif
+
+#
+# COMPILE_APPROACH=batch: Will trigger compilations (just compilations) to
+# happen in batch mode. Greatly decreases Windows build time.
+# See logic in Rules.gmk for how compiles happen, the $(MAKE) in
+# library_batch_compile below triggers the actions in Rules.gmk.
+# Note that each .d file will also be dependent on it's .o file, see
+# Rules.gmk.
+#
+ifeq ($(COMPILE_APPROACH),batch)
+
+.PHONY: library_batch_compile
+
+library_batch_compile:
+ @$(ECHO) "Begin BATCH compiles: $(shell $(PWD))"
+ $(MAKE) $(COMPILE_FILES_o)
+ $(MAKE) batch_compile
+ @$(ECHO) "Done with BATCH compiles: $(shell $(PWD))"
+ $(MAKE) COMPILE_APPROACH=normal $(COMPILE_FILES_o)
+
+$(ACTUAL_LIBRARY):: library_batch_compile
+
+endif
+
+ifeq ($(PLATFORM), windows)
+
+#
+# Library building rules.
+#
+
+$(LIBRARY).lib:: $(OBJDIR)
+
+ifeq ($(LIBRARY), fdlibm)
+$(ACTUAL_LIBRARY):: $(OBJDIR)/$(LIBRARY).lib
+
+$(OBJDIR)/$(LIBRARY).lib:: $(OBJDIR)/$(LIBRARY).lcf
+ @$(prep-target)
+ $(LIBEXE) -NODEFAULTLIB:MSVCRT -out:$@ -nologo \
+ @$(OBJDIR)/$(LIBRARY).lcf $(OTHER_LCF) $(LDLIBS_COMMON)
+else # LIBRARY
+# build it into $(OBJDIR) so that the other generated files get put
+# there, then copy just the DLL (and MAP file) to the requested directory.
+#
+$(ACTUAL_LIBRARY):: $(OBJDIR)/$(LIBRARY).lcf
+ @$(prep-target)
+ @$(MKDIR) -p $(OBJDIR)
+ $(LINK) -dll -out:$(OBJDIR)/$(@F) \
+ -map:$(OBJDIR)/$(LIBRARY).map \
+ $(LFLAGS) @$(OBJDIR)/$(LIBRARY).lcf \
+ $(OTHER_LCF) $(JAVALIB) $(LDLIBS)
+ $(CP) $(OBJDIR)/$(@F) $@
+ $(CP) $(OBJDIR)/$(LIBRARY).map $(@D)
+ $(CP) $(OBJDIR)/$(LIBRARY).pdb $(@D)
+
+endif # LIBRARY
+
+$(OBJDIR)/$(LIBRARY).lcf: $(OBJDIR)/$(LIBRARY).res $(COMPILE_FILES_o) $(FILES_m)
+ @$(prep-target)
+ @$(MKDIR) -p $(TEMPDIR)
+ @$(ECHO) $(FILES_o) > $@
+ifndef LOCAL_RESOURCE_FILE
+ @$(ECHO) $(OBJDIR)/$(LIBRARY).res >> $@
+endif
+ @$(ECHO) Created $@
+
+# J2SE name required here
+RC_FLAGS += /D "J2SE_FNAME=$(LIBRARY).dll" \
+ /D "J2SE_INTERNAL_NAME=$(LIBRARY)" \
+ /D "J2SE_FTYPE=0x2L"
+
+$(OBJDIR)/$(LIBRARY).res: $(VERSIONINFO_RESOURCE)
+ifndef LOCAL_RESOURCE_FILE
+ @$(prep-target)
+ $(RC) $(RC_FLAGS) $(CC_OBJECT_OUTPUT_FLAG)$(@) $(VERSIONINFO_RESOURCE)
+endif
+
+#
+# Install a .lib file if required.
+#
+ifeq ($(INSTALL_DOT_LIB), true)
+$(ACTUAL_LIBRARY):: $(LIBDIR)/$(LIBRARY).lib
+
+clean::
+ -$(RM) $(LIBDIR)/$(LIBRARY).lib
+
+$(LIBDIR)/$(LIBRARY).lib:: $(OBJDIR)/$(LIBRARY).lib
+ $(install-file)
+
+$(LIBDIR)/$(LIBRARY).dll:: $(OBJDIR)/$(LIBRARY).dll
+ $(install-file)
+
+endif # INSTALL_DOT_LIB
+
+else # PLATFORM
+
+#
+# On Solaris, use mcs to write the version into the comment section of
+# the shared library. On other platforms set this to false at the
+# make command line.
+#
+$(ACTUAL_LIBRARY):: $(COMPILE_FILES_o) $(FILES_m) $(FILES_reorder)
+ @$(prep-target)
+ @$(ECHO) "STATS: LIBRARY=$(LIBRARY), PRODUCT=$(PRODUCT), _OPT=$(_OPT)"
+ @$(ECHO) "Rebuilding $@ because of $?"
+ifeq ($(LIBRARY), fdlibm)
+ $(AR) -r $@ $(FILES_o)
+else # LIBRARY
+ $(LINKER) $(SHARED_LIBRARY_FLAG) -o $@ $(FILES_o) $(LDLIBS)
+ifeq ($(WRITE_LIBVERSION),true)
+ $(MCS) -d -a "$(FULL_VERSION)" $@
+endif # WRITE_LIBVERSION
+endif # LIBRARY
+
+endif # PLATFORM
+
+#
+# Cross check all linted files against each other
+#
+ifeq ($(PLATFORM),solaris)
+lint.errors : $(FILES_ln)
+ $(LINT.c) $(FILES_ln) $(LDLIBS)
+endif
+
+else # COMPILE_IT
+
+# OpenJDK rule is first so any lib is preferentially copied from that location.
+ifndef USE_BINARY_PLUG_LIBRARY
+
+# In this case we are just copying the file.
+ifneq ($(LIBRARY), fdlibm)
+# Copies in the file from the JDK_IMPORT_PATH area
+$(ACTUAL_LIBRARY_DIR)/%: $(JDK_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/%
+ $(install-import-file)
+$(ACTUAL_LIBRARY_DIR)/%: $(JDK_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/native_threads/%
+ $(install-import-file)
+$(ACTUAL_LIBRARY_DIR)/%: $(JDK_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/headless/%
+ $(install-import-file)
+$(ACTUAL_LIBRARY_DIR)/%: $(JDK_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/xawt/%
+ $(install-import-file)
+else # fdlibm
+$(ACTUAL_LIBRARY_DIR)/%:
+ $(prep-target)
+endif # fdlibm
+
+endif # USE_BINARY_PLUG_LIBRARY
+
+endif # COMPILE_IT
+
+#
+# Class libraries with JNI native methods get a include to the package.
+#
+ifdef PACKAGE
+vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)
+OTHER_INCLUDES += -I$(SHARE_SRC)/native/common -I$(PLATFORM_SRC)/native/common
+OTHER_INCLUDES += -I$(SHARE_SRC)/native/$(PKGDIR) \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)
+endif
+
+#
+# Clean/clobber rules
+#
+clean::
+ $(RM) -r $(ACTUAL_LIBRARY)
+
+clobber:: clean
+
+#
+# INCREMENTAL_BUILD means that this workspace will be built over and over
+# possibly incrementally. This means tracking the object file dependencies
+# on include files so that sources get re-compiled when the include files
+# change. When building from scratch and doing a one time build (like
+# release engineering or nightly builds) set INCREMENTAL_BUILD=false.
+#
+
+ifeq ($(INCREMENTAL_BUILD),true)
+
+#
+# Workaround: gnumake sometimes says files is empty when it shouldn't
+# was: files := $(foreach file, $(wildcard $(OBJDIR)/*.$(DEPEND_SUFFIX)), $(file))
+#
+files := $(shell $(LS) $(OBJDIR)/*.$(DEPEND_SUFFIX) 2>/dev/null)
+
+#
+# Only include these files if we have any.
+#
+ifneq ($(strip $(files)),)
+
+include $(files)
+
+endif # files
+
+endif # INCREMENTAL_BUILD
+
+#
+# Default dependencies
+#
+
+all: build
+
+build: library
+
+debug:
+ $(MAKE) VARIANT=DBG build
+
+fastdebug:
+ $(MAKE) VARIANT=DBG FASTDEBUG=true build
+
+openjdk:
+ $(MAKE) OPENJDK=true build
+
+.PHONY: all build debug fastdebug
+
diff --git a/jdk/make/common/Mapfile-vers.gmk b/jdk/make/common/Mapfile-vers.gmk
new file mode 100644
index 0000000..1c0f60b
--- /dev/null
+++ b/jdk/make/common/Mapfile-vers.gmk
@@ -0,0 +1,98 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for linking with mapfiles.
+#
+# NOTE: Not using a mapfile will expose all your extern functions and
+# extern data symbols as part of your interface, so unless your
+# extern names are safe from being mistaken as names from other
+# libraries, you better use a mapfile, or use a unique naming
+# convention on all your extern symbols.
+#
+# The mapfile will establish versioning by defining the exported interface.
+#
+# The mapfile can also force certain .o files or elf sections into the
+# the different segments of the resulting library/program image.
+#
+# The macro FILES_m can contain any number of mapfiles.
+#
+
+# Always make sure 'all' is the default rule
+mapfile_default_rule: all
+
+ifeq ($(PLATFORM), solaris)
+
+ifeq ($(VARIANT), OPT)
+ # OPT build MUST have a mapfile?
+ ifndef FILES_m
+ FILES_m = mapfile-vers
+ endif
+
+ # If we are re-ordering functions in this solaris library, we need to make
+ # sure that -xF is added to the compile lines. This option is critical and
+ # enables the functions to be reordered.
+ ifdef FILES_reorder
+ CFLAGS_OPT += -xF
+ CXXFLAGS_OPT += -xF
+ endif
+
+INIT += $(TEMPDIR)/mapfile-vers
+
+$(TEMPDIR)/mapfile-vers : $(FILES_m) $(FILES_reorder)
+ $(prep-target)
+ $(CAT) $(FILES_m) > $@
+ ifdef FILES_reorder
+ $(SED) -e 's=OUTPUTDIR=$(OUTPUTDIR)=' $(FILES_reorder) >> $@
+ endif
+endif # VARIANT
+
+ifndef LDNOMAP
+ LDMAPFLAGS_OPT = -M$(TEMPDIR)/mapfile-vers
+ LDMAPFLAGS_DBG = $(FILES_m:%=-M%)
+endif
+
+endif # PLATFORM
+
+
+ifeq ($(PLATFORM), linux)
+
+ifeq ($(VARIANT), OPT)
+ # OPT build MUST have a mapfile?
+ ifndef FILES_m
+ FILES_m = mapfile-vers
+ endif
+endif # VARIANT
+
+ifndef LDNOMAP
+ LDMAPFLAGS_OPT = $(FILES_m:%=-Xlinker -version-script=%)
+ LDMAPFLAGS_DBG = $(FILES_m:%=-Xlinker -version-script=%)
+endif
+
+endif # PLATFORM
+
+LDFLAGS_OPT += $(LDMAPFLAGS_OPT)
+LDFLAGS_DBG += $(LDMAPFLAGS_DBG)
+
diff --git a/jdk/make/common/Program.gmk b/jdk/make/common/Program.gmk
new file mode 100644
index 0000000..85a5be3
--- /dev/null
+++ b/jdk/make/common/Program.gmk
@@ -0,0 +1,294 @@
+#
+# Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Generic makefile for building executables.
+#
+
+# WARNING: This file is shared with other workspaces.
+# So when it includes other files, it must use JDK_TOPDIR.
+#
+
+#
+# If building programs, use a normal compile approach
+#
+ifeq ($(COMPILE_APPROACH),batch)
+ override COMPILE_APPROACH = normal
+endif
+
+ifndef LAUNCHER_PLATFORM_SRC
+LAUNCHER_PLATFORM_SRC = $(PLATFORM_SRC)
+endif
+
+ifndef LAUNCHER_SHARE_SRC
+LAUNCHER_SHARE_SRC = $(SHARE_SRC)
+endif
+
+ACTUAL_PROGRAM_NAME = $(PROGRAM)$(EXE_SUFFIX)
+ACTUAL_PROGRAM_DIR = $(BINDIR)
+ACTUAL_PROGRAM = $(ACTUAL_PROGRAM_DIR)/$(ACTUAL_PROGRAM_NAME)
+
+JVMCFG = $(LIBDIR)/$(LIBARCH)/jvm.cfg
+
+# Make sure the default rule is all
+program_default_rule: all
+
+program: $(ACTUAL_PROGRAM)
+
+include $(JDK_TOPDIR)/make/common/Rules.gmk
+
+ifdef NEVER_ACT_AS_SERVER_CLASS_MACHINE
+OTHER_CPPFLAGS += -DNEVER_ACT_AS_SERVER_CLASS_MACHINE
+endif
+
+#
+# Create a dependency on libjli (Java Launcher Infrastructure)
+#
+# On UNIX, this is a relative dependency using $ORIGIN. Unfortunately, to
+# do this reliably on Linux takes a different syntax than Solaris.
+#
+# On Windows, this is done by using the same directory as the executable
+# itself, as with all the Windows libraries.
+#
+ifneq (,$(findstring $(PLATFORM), linux solaris)) # UNIX systems
+ LDFLAGS += -L $(LIBDIR)/$(LIBARCH)/jli
+ OTHER_LDLIBS += -ljli
+ ifeq ($(PLATFORM), solaris)
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ LDFLAGS += -R \$$ORIGIN/../lib/$(LIBARCH)/jli
+ LDFLAGS += -R \$$ORIGIN/../jre/lib/$(LIBARCH)/jli
+ else
+ LDFLAGS += -R \$$ORIGIN/../../lib/$(LIBARCH)/jli
+ LDFLAGS += -R \$$ORIGIN/../../jre/lib/$(LIBARCH)/jli
+ endif
+ endif
+ ifeq ($(PLATFORM), linux)
+ LDFLAGS += -z origin
+ LDFLAGS += -Wl,--allow-shlib-undefined
+ LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../lib/$(LIBARCH)/jli
+ LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../jre/lib/$(LIBARCH)/jli
+ endif
+endif
+ifeq ($(PLATFORM), windows)
+ JLI_LCF = $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/jli.lcf
+ ifdef STATIC_JLI
+ LDFLAGS += -libpath:$(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static
+ else
+ LDFLAGS += -libpath:$(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)
+ endif
+ OTHER_LDLIBS += jli.lib
+endif
+
+#
+# Launcher specific files.
+#
+FILES_o = \
+ $(OBJDIR)/main.$(OBJECT_SUFFIX)
+
+# We either need to import (copy) binaries in, or build them
+ifneq ($(IMPORT_NATIVE_BINARIES),true)
+ COMPILE_IT=true
+else
+ COMPILE_IT=false
+endif
+
+ifeq ($(COMPILE_IT),true)
+
+$(ACTUAL_PROGRAM):: classes $(JVMCFG) $(INIT)
+
+#
+# Windows only
+#
+ifeq ($(PLATFORM), windows)
+
+# J2SE name required here
+RC_FLAGS += /D "J2SE_FNAME=$(PROGRAM)$(EXE_SUFFIX)" \
+ /D "J2SE_INTERNAL_NAME=$(PROGRAM)" \
+ /D "J2SE_FTYPE=0x1L"
+
+$(OBJDIR)/$(PROGRAM).res: $(VERSIONINFO_RESOURCE)
+ @$(prep-target)
+ifndef LOCAL_RESOURCE_FILE
+ $(RC) $(RC_FLAGS) $(CC_OBJECT_OUTPUT_FLAG)$(@) $(VERSIONINFO_RESOURCE)
+endif
+
+$(OBJDIR)/$(PROGRAM).lcf: $(OBJDIR)/$(PROGRAM).res $(FILES_o)
+ @$(prep-target)
+ @$(ECHO) $(FILES_o) > $@
+ ifndef LOCAL_RESOURCE_FILE
+ @$(ECHO) $(OBJDIR)/$(PROGRAM).res >> $@
+ endif
+ @$(ECHO) setargv.obj >> $@
+ @$(ECHO) Created $@
+
+$(ACTUAL_PROGRAM):: $(OBJDIR)/$(PROGRAM)$(EXE_SUFFIX)
+ @$(install-file)
+
+ifeq ($(ARCH_DATA_MODEL), 32)
+ STACK_SIZE=327680
+else
+# We need more Stack for Windows 64bit
+ STACK_SIZE=1048576
+endif
+
+$(OBJDIR)/$(PROGRAM)$(EXE_SUFFIX):: $(OBJDIR)/$(PROGRAM).lcf $(FILES_o) $(JLI_LCF)
+ @$(prep-target)
+ @set -- $?; \
+ $(ECHO) Rebuilding $@ because of $$1 $$2 $$3 $$4 $$5 $$6 $${7:+...};
+ $(LINK) -out:$@ /STACK:$(STACK_SIZE) \
+ -map:$(OBJDIR)/$(PROGRAM).map $(LFLAGS) $(LDFLAGS) \
+ @$(OBJDIR)/$(PROGRAM).lcf $(LDLIBS)
+
+else # PLATFORM
+
+#
+# Note that we have to link -lthread even when USE_PTHREADS is true.
+# This is becuase checkForCorrectLibthread() croaks otherwise.
+#
+LIBTHREAD = -lthread
+ifeq ($(USE_PTHREADS),true)
+ THREADLIBS = -lpthread $(LIBTHREAD)
+else # USE_PTHREADS
+ THREADLIBS = $(LIBTHREAD)
+endif # USE_PTHREADS
+
+#
+# This rule only applies on unix. It supports quantify and its ilk.
+#
+$(ACTUAL_PROGRAM):: $(FILES_o)
+ @$(prep-target)
+ @set -- $?; \
+ $(ECHO) Rebuilding $@ because of $$1 $$2 $$3 $$4 $$5 $$6 $${7:+...};
+ @$(MKDIR) -p $(TEMPDIR)
+ $(LINK_PRE_CMD) $(CC) $(CC_OBJECT_OUTPUT_FLAG)$@ $(LDFLAGS) \
+ $(FILES_o) $(THREADLIBS) $(LDLIBS)
+
+endif # PLATFORM
+
+else # COMPILE_IT
+
+$(ACTUAL_PROGRAM):: $(JVMCFG)
+
+# Copies in the file from the JDK_IMPORT_PATH area
+$(ACTUAL_PROGRAM_DIR)/%: $(JDK_IMPORT_PATH)/jre/bin/%
+ @$(install-import-file)
+$(ACTUAL_PROGRAM_DIR)/%: $(JDK_IMPORT_PATH)/bin/%
+ @$(install-import-file)
+
+endif # COMPILE_IT
+
+
+clean::
+ifeq ($(PLATFORM), windows)
+ $(RM) $(OBJDIR)/$(PROGRAM).rc
+ $(RM) $(OBJDIR)/$(PROGRAM).ico
+ $(RM) $(OBJDIR)/$(PROGRAM).lcf
+ $(RM) $(OBJDIR)/$(PROGRAM).map
+ $(RM) $(OBJDIR)/$(PROGRAM).exp
+ $(RM) $(OBJDIR)/$(PROGRAM).lib
+ $(RM) $(OBJDIR)/$(PROGRAM)$(EXE_SUFFIX)
+ $(RM) $(OBJDIR)/$(PROGRAM).ilk
+ $(RM) *.pdb
+endif
+
+
+clobber::
+ $(RM) $(ACTUAL_PROGRAM)
+
+#
+# Now include make dependencies (created during compilation, see Rules.gmk)
+#
+ifeq ($(INCREMENTAL_BUILD),true)
+# Workaround: gnumake sometimes says files is empty when it shouldn't
+# was: files := $(foreach file, $(wildcard */$(ARCH)/*.$(DEPEND_SUFFIX)), $(file))
+files := $(shell $(LS) $(OBJDIR)/*.$(DEPEND_SUFFIX) 2>/dev/null)
+ifneq ($(strip $(files)),)
+include $(files)
+endif # files
+endif # INCREMENTAL_BUILD
+
+ifdef JAVA_ARGS
+OTHER_CPPFLAGS += -DJAVA_ARGS=$(JAVA_ARGS)
+OTHER_CPPFLAGS += -DLAUNCHER_NAME=\"$(LAUNCHER_NAME)\"
+endif
+
+ifeq ($(PLATFORM), windows)
+ifdef RELEASE
+OTHER_CPPFLAGS += -DVERSION="$(RELEASE)"
+endif
+endif
+
+
+ifneq ($(PLATFORM), windows)
+HAVE_GETHRTIME=true
+endif
+
+ifeq ($(HAVE_GETHRTIME),true)
+OTHER_CPPFLAGS += -DHAVE_GETHRTIME
+endif
+
+OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC)/bin -I$(LAUNCHER_PLATFORM_SRC)/bin
+OTHER_INCLUDES += -I$(SHARE_SRC)/native/java/util/zip/zlib-1.1.3
+
+# this may not be necessary...
+ifeq ($(PLATFORM), windows)
+OTHER_CPPFLAGS += -DPROGNAME="\"$(PROGRAM)\""
+VERSION_DEFINES += -DFULL_VERSION="\"$(FULL_VERSION)\""
+else
+OTHER_CPPFLAGS += -DPROGNAME='"$(PROGRAM)"'
+VERSION_DEFINES += -DFULL_VERSION='"$(FULL_VERSION)"'
+endif
+
+VERSION_DEFINES += -DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \
+ -DJDK_MINOR_VERSION='"$(JDK_MINOR_VERSION)"'
+
+
+
+$(OBJDIR)/main.$(OBJECT_SUFFIX): $(LAUNCHER_SHARE_SRC)/bin/main.c
+ @$(prep-target)
+ $(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$(OBJDIR)/main.$(OBJECT_SUFFIX) \
+ $(VERSION_DEFINES) $<
+
+#
+# How to install jvm.cfg.
+#
+$(JVMCFG): $(LAUNCHER_PLATFORM_SRC)/bin/$(ARCH)/jvm.cfg
+ $(install-file)
+
+#
+# Default dependencies
+#
+
+all: build
+
+build: program
+
+debug:
+ $(MAKE) VARIANT=DBG build
+
+fastdebug:
+ $(MAKE) VARIANT=DBG FASTDEBUG=true build
+
+.PHONY: all build program clean clobber debug fastdebug
diff --git a/jdk/make/common/Release.gmk b/jdk/make/common/Release.gmk
new file mode 100644
index 0000000..f3a6c62
--- /dev/null
+++ b/jdk/make/common/Release.gmk
@@ -0,0 +1,1262 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+include $(JDK_TOPDIR)/make/docs/CORE_PKGS.gmk
+include $(JDK_TOPDIR)/make/docs/NON_CORE_PKGS.gmk
+
+#
+# Perform release engineering tasks.
+#
+# images An image is what the product looks like when it is
+# installed.
+#
+
+IMAGE_BINDIR = bin
+
+# The compiler should not issue a "Sun Propietary" warning when compiling
+# classes in the com.sun.java.swing.plaf packages, since we've always
+# allowed, and even advocated, extending them (see bug 6476749).
+#
+# This approach is NOT to be used as a general purpose way to avoid such
+# compiler warnings for non-core packages. The correct way is to document
+# the packages in NON_CORE_PKGS.gmk, and include them in the NON_CORE_PKGS
+# definition.
+#
+# Swing has taken this approach only as a temporary measure to avoid
+# the compiler warnings until we can properly document these packages.
+# This is covered under 6491853.
+EXCLUDE_PROPWARN_PKGS = com.sun.java.swing.plaf \
+ com.sun.java.swing.plaf.windows \
+ com.sun.java.swing.plaf.motif \
+ com.sun.java.swing.plaf.gtk
+
+# 64-bit solaris has a few special cases. We define the variable
+# SOLARIS64 for use in this Makefile to easily test those cases
+ifeq ($(PLATFORM), solaris)
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ SOLARIS64 = true
+ IMAGE_BINDIR = bin/$(ARCH)
+ endif
+endif
+
+JTG_DOCS = $(JDK_TOPDIR)/src/solaris/doc
+
+# Choose the right set of documents for the images
+ifdef OPENJDK
+ SHARE_JDK_DOC_SRC = $(JDK_TOPDIR)/make
+ SHARE_JRE_DOC_SRC = $(JDK_TOPDIR)/make
+else
+ SHARE_JDK_DOC_SRC = $(CLOSED_SHARE_SRC)/doc/jdk
+ SHARE_JRE_DOC_SRC = $(CLOSED_SHARE_SRC)/doc/jre
+endif
+
+#We use this for man page header
+jdkversion := $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
+
+# Text documents on windows use this suffix
+ifeq ($(PLATFORM), windows)
+ TEXT_SUFFIX = .txt
+endif
+
+# The base names of all the license and document files for the jdk and jre
+ifdef OPENJDK
+ # Same files for jdk and jre, no name changes
+ LICENSE_DOCLIST_JDK = LICENSE ASSEMBLY_EXCEPTION
+ LICENSE_DOCLIST_JRE = LICENSE ASSEMBLY_EXCEPTION
+ OTHER_DOCLIST_JDK = README.html THIRD_PARTY_README
+ OTHER_DOCLIST_JRE = README.html THIRD_PARTY_README
+else
+ # Select the pre-release or FCS license version based on the build milestone.
+ LICENSE_VERSION=.pre
+ ifeq ($(MILESTONE), fcs)
+ LICENSE_VERSION=.fcs
+ endif
+ ifeq ($(PLATFORM), windows)
+ LICENSE_DOCLIST_JDK = $(subst $(LICENSE_VERSION),,\
+ $(shell $(CD) $(SHARE_JDK_DOC_SRC) && \
+ $(LS) *LICENSE*$(LICENSE_VERSION)))
+ LICENSE_DOCLIST_JRE = $(subst $(LICENSE_VERSION),,\
+ $(shell $(CD) $(SHARE_JRE_DOC_SRC) && \
+ $(LS) *LICENSE*$(LICENSE_VERSION)))
+ else
+ LICENSE_DOCLIST_JDK = $(subst $(LICENSE_VERSION),,\
+ $(shell $(CD) $(SHARE_JDK_DOC_SRC) && \
+ $(LS) *LICENSE*$(LICENSE_VERSION) | $(GREP) -v rtf))
+ LICENSE_DOCLIST_JRE = $(subst $(LICENSE_VERSION),,\
+ $(shell $(CD) $(SHARE_JRE_DOC_SRC) && \
+ $(LS) *LICENSE*$(LICENSE_VERSION) | $(GREP) -v rtf))
+ endif
+ OTHER_DOCLIST_JDK = COPYRIGHT README.html README_ja.html README_zh_CN.html
+ OTHER_DOCLIST_JRE = COPYRIGHT Welcome.html
+ JRE_NAMECHANGE_DOCLIST = README
+endif
+
+# Paths to these files we need
+JDK_LICENSES = $(LICENSE_DOCLIST_JDK:%=$(JDK_IMAGE_DIR)/%)
+JDK64_LICENSES = $(LICENSE_DOCLIST_JDK:%=$(JDK_IMAGE_DIR)/%64)
+JDK_DOCFILES = $(OTHER_DOCLIST_JDK:%=$(JDK_IMAGE_DIR)/%)
+
+JRE_LICENSES = $(LICENSE_DOCLIST_JRE:%=$(JRE_IMAGE_DIR)/%)
+JRE64_LICENSES = $(LICENSE_DOCLIST_JRE:%=$(JRE_IMAGE_DIR)/%64)
+JRE_DOCFILES = $(OTHER_DOCLIST_JRE:%=$(JRE_IMAGE_DIR)/%)
+JRE_DOCFILES += $(JRE_NAMECHANGE_DOCLIST:%=$(JRE_IMAGE_DIR)/%$(TEXT_SUFFIX))
+
+# absolute directory names: note, these must exist prior to build
+# time - they are created in the main Makefile.
+JRE_IMAGE_BINDIR = $(JRE_IMAGE_DIR)/bin
+JRE_IMAGE_THREADIR = $(JRE_IMAGE_DIR)/bin/*/native_threads
+
+MAINMANIFEST = $(JDK_TOPDIR)/make/tools/manifest.mf
+BEANMANIFEST = $(JDK_TOPDIR)/make/javax/swing/beaninfo/manifest
+
+#
+# Man pages
+#
+
+JRE_MAN_PAGES = \
+ java.1 \
+ keytool.1 \
+ orbd.1 \
+ pack200.1 \
+ policytool.1 \
+ rmid.1 \
+ rmiregistry.1 \
+ servertool.1 \
+ tnameserv.1 \
+ unpack200.1
+
+ifeq ($(ARCH_DATA_MODEL),32)
+ JRE_MAN_PAGES += javaws.1
+endif
+
+JDK_MAN_PAGES = \
+ $(JRE_MAN_PAGES) \
+ appletviewer.1 \
+ apt.1 \
+ extcheck.1 \
+ idlj.1 \
+ jar.1 \
+ jarsigner.1 \
+ javac.1 \
+ javadoc.1 \
+ javah.1 \
+ javap.1 \
+ jconsole.1 \
+ jdb.1 \
+ jhat.1 \
+ jinfo.1 \
+ jmap.1 \
+ jps.1 \
+ jrunscript.1 \
+ jsadebugd.1 \
+ jstack.1 \
+ jstat.1 \
+ jstatd.1 \
+ native2ascii.1 \
+ rmic.1 \
+ schemagen.1 \
+ serialver.1 \
+ wsgen.1 \
+ wsimport.1 \
+ xjc.1
+
+ifeq ($(PLATFORM), solaris)
+ MANBASEDIRS=$(JDK_TOPDIR)/src/solaris/doc $(IMPORTDOCDIR)
+ MAN1SUBDIR=sun/man/man1
+endif # solaris
+
+ifeq ($(PLATFORM), linux)
+ MANBASEDIRS=$(JDK_TOPDIR)/src/linux/doc $(IMPORTDOCDIR)
+ MAN1SUBDIR=man
+ JA_DIRNAME=ja_JP.$(JA_SOURCE_ENCODING)
+endif # linux
+
+define copy-man-pages
+$(MKDIR) -p $1/man/man1
+for manbase in $(MANBASEDIRS:%=%/$(MAN1SUBDIR)) ; do \
+ for manpage in $2; do \
+ if [ -f $${manbase}/$${manpage} ] ; then \
+ $(CP) $${manbase}/$${manpage} $1/man/man1 ; \
+ for ja_encoding in $(JA_TARGET_ENCODINGS); do \
+ ja_dir="ja"; \
+ if [ "$${ja_encoding}" != "$(JA_SOURCE_ENCODING)" ]; then \
+ ja_dir="ja_JP.$${ja_encoding}"; \
+ fi; \
+ $(MKDIR) -p $1/man/$${ja_dir}/man1; \
+ $(CAT) $${manbase}/ja/$${manpage} \
+ | $(NATIVE2ASCII) -encoding $(JA_SOURCE_ENCODING) \
+ | $(SED) 's/@@VERSION@@/$(jdkversion)/g' \
+ | $(NATIVE2ASCII) -reverse -encoding $${ja_encoding} \
+ > $1/man/$${ja_dir}/man1/$${manpage}; \
+ done; \
+ fi; \
+ done; \
+done
+$(java-vm-cleanup)
+if [ "$(JA_DIRNAME)" != "" ] ; then \
+ $(MV) $1/man/ja $1/man/$(JA_DIRNAME); \
+ $(CD) $1/man && $(LN) -s $(JA_DIRNAME) ja; \
+fi
+endef
+
+#
+# Targets.
+#
+INITIAL_IMAGE_JRE=initial-image-jre
+INITIAL_IMAGE_JDK=initial-image-jdk
+ifeq ($(PLATFORM), solaris)
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ INITIAL_IMAGE_JRE=initial-image-jre-sol64
+ INITIAL_IMAGE_JDK=initial-image-jdk-sol64
+ endif
+endif
+
+images images-clobber \
+initial-image-jre initial-image-jdk \
+initial-image-jre-sol64 initial-image-jdk-sol64 \
+trim-image-jre trim-image-jdk \
+process-image-jre process-image-jdk \
+compare-image \
+sec-files sec-files-win jgss-files ::
+ @$(ECHO) ">>>Making "$@" @ `$(DATE)` ..."
+
+#
+# Export binary plugs if not building OPENJDK
+#
+ifdef OPENJDK
+ EXPORT_BINARY_PLUGS =
+else # !OPENJDK
+ EXPORT_BINARY_PLUGS = export-binary-plugs test-binary-plugs
+endif # OPENJDK
+
+# Order is important here, trim jre after jdk image is created
+images:: sanity-images post-sanity-images \
+ $(EXPORT_BINARY_PLUGS) \
+ $(INITIAL_IMAGE_JRE) $(INITIAL_IMAGE_JDK) \
+ trim-image-jre trim-image-jdk \
+ process-image-jre process-image-jdk sec-files sec-files-win jgss-files
+
+# Don't use these
+image-jre:: initial-image-jre trim-image-jre process-image-jre
+image-jdk:: initial-image-jdk trim-image-jdk process-image-jdk
+
+#
+# Sources we ship in the SDK.
+#
+SOURCES = \
+ java/applet \
+ java/awt \
+ java/beans \
+ java/io \
+ java/lang \
+ java/math \
+ java/net \
+ java/nio \
+ java/rmi \
+ java/security \
+ java/sql \
+ java/text \
+ java/util \
+ com/sun/corba \
+ com/sun/image/codec/jpeg \
+ com/sun/imageio \
+ com/sun/java/swing \
+ com/sun/javadoc \
+ com/sun/jmx \
+ com/sun/mirror \
+ com/sun/source \
+ com/sun/naming \
+ com/sun/security/auth \
+ com/sun/security/jgss \
+ javax/accessibility \
+ javax/annotation \
+ javax/script \
+ javax/imageio \
+ javax/lang \
+ javax/management \
+ javax/naming \
+ javax/print \
+ javax/rmi \
+ javax/security \
+ javax/sound \
+ javax/sql \
+ javax/swing \
+ javax/tools \
+ javax/xml \
+ com/sun/org/apache \
+ com/sun/java_cup \
+ com/sun/jlex \
+ org/ietf \
+ org/omg \
+ org/w3c/dom \
+ org/xml/sax \
+ sunw
+#
+# Directories where sources may be found. If a file with the same path
+# name exists in more than one of these places, the one found last on this
+# list wins.
+#
+SOURCE_DIRS = $(SHARE_SRC)/classes $(PLATFORM_SRC)/classes
+SOURCE_DIRS += $(GENSRCDIR)
+SOURCE_DIRS += $(IMPORTSRCDIR)
+ifndef OPENJDK
+ SOURCE_DIRS += $(CLOSED_SRC)/share/classes
+endif
+
+
+#
+# Specific files and directories that will be filtered out from above areas.
+#
+SOURCE_FILTERs = $(SCM_DIRs) 'X-*' '*-X-*' '*-template.java' ',*'
+SOURCE_FILES_filter = $(SOURCE_FILTERs:%=-name % -prune -o)
+
+#
+# Bug 4249883 - excluding some unnecessary packages from com.sun.tools
+#
+# Bug 5008685 - exclude jconsole from sun/tools
+#
+TOOLS = \
+ META-INF/services/com.sun.jdi.connect.Connector \
+ META-INF/services/com.sun.jdi.connect.spi.TransportService \
+ sun/tools/asm \
+ sun/tools/jar \
+ sun/tools/java \
+ sun/tools/javac \
+ sun/tools/javap \
+ sun/tools/jps \
+ sun/tools/jstat \
+ sun/tools/jstatd \
+ sun/tools/native2ascii \
+ sun/tools/serialver \
+ sun/tools/tree \
+ sun/tools/util \
+ sun/security/tools/JarBASE64Encoder.class \
+ sun/security/tools/JarSigner.class \
+ sun/security/tools/JarSignerParameters.class \
+ sun/security/tools/JarSignerResources.class \
+ sun/security/tools/JarSignerResources_ja.class \
+ sun/security/tools/JarSignerResources_zh_CN.class \
+ sun/security/tools/SignatureFile\$$Block.class \
+ sun/security/tools/SignatureFile.class \
+ sun/security/tools/TimestampedSigner.class \
+ sun/rmi/rmic \
+ sun/applet \
+ sun/jvmstat \
+ com/sun/javadoc \
+ com/sun/jdi \
+ com/sun/jarsigner \
+ com/sun/mirror \
+ com/sun/source \
+ com/sun/tools/doclets \
+ com/sun/tools/example/debug/expr \
+ com/sun/tools/example/debug/tty \
+ com/sun/tools/extcheck \
+ com/sun/tools/hat \
+ com/sun/tools/javac \
+ com/sun/tools/javadoc \
+ com/sun/tools/apt \
+ com/sun/tools/javah \
+ com/sun/tools/corba \
+ com/sun/tools/internal/xjc \
+ com/sun/tools/internal/ws \
+ META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory \
+ META-INF/services/com.sun.tools.xjc.Plugin \
+ com/sun/istack/internal/tools \
+ com/sun/istack/internal/ws \
+ com/sun/codemodel \
+ com/sun/tools/internal/jxc \
+ com/sun/xml/internal/rngom \
+ com/sun/xml/internal/xsom \
+ org/relaxng/datatype \
+ com/sun/xml/internal/dtdparser \
+ com/sun/tools/jdi \
+ com/sun/tools/script/shell \
+ META-INF/services/com.sun.tools.attach.spi.AttachProvider \
+ com/sun/tools/attach \
+ sun/tools/attach \
+ sun/tools/jstack \
+ sun/tools/jinfo \
+ sun/tools/jmap
+
+# classes that go into jsse.jar
+JSSE_CLASSES_DIRS = \
+ sun/security/provider/Sun.class \
+ sun/security/rsa/SunRsaSign.class \
+ sun/security/ssl \
+ com/sun/net/ssl/internal/ssl
+
+# files under $(OUTPUTDIR) that need to go into sec-bin.zip for builds
+# where the corresponding sources are not available
+SEC_FILES_DIRS = \
+ classes/javax/net \
+ classes/javax/security/cert \
+ classes/com/sun/net/ssl \
+ classes/com/sun/security/cert \
+ classes/sun/net/www/protocol/https \
+ classes/sun/security/pkcs12 \
+ classes/sun/security/ssl \
+ classes/sun/security/krb5/*.class \
+ classes/sun/security/krb5/internal/*.class \
+ classes/sun/security/krb5/internal/ccache \
+ classes/sun/security/krb5/internal/crypto \
+ classes/sun/security/krb5/internal/ktab \
+ classes/sun/security/krb5/internal/rcache \
+ classes/sun/security/krb5/internal/util \
+ classes/sun/security/jgss/spi/GSSContextSpi.class
+
+# files under $(OUTPUTDIR) that need to go into sec-windows-win.zip for builds
+# where the corresponding sources are not available
+SEC_FILES_WIN_DIRS = \
+ classes/sun/security/krb5/internal/tools
+
+# files under $(BINDIR) that need to go into jgss_files.zip for builds
+# where the corresponding sources are not available
+JGSS_FILES_DIRS = \
+ bin/w2k_lsa_auth.dll \
+ bin/w2k_lsa_auth.map \
+ bin/w2k_lsa_auth.pdb
+
+# The following get removed from the SDK image.
+NOTJDKTOOLS = \
+ java_vm
+
+# The following get removed from the JRE after the bulk-copy of BINDIR...
+NOTJRETOOLS = \
+ appletviewer$(EXE_SUFFIX) \
+ extcheck$(EXE_SUFFIX) \
+ idlj$(EXE_SUFFIX) \
+ jar$(EXE_SUFFIX) \
+ jarsigner$(EXE_SUFFIX) \
+ java-rmi.cgi \
+ javac$(EXE_SUFFIX) \
+ javadoc$(EXE_SUFFIX) \
+ apt$(EXE_SUFFIX) \
+ javah$(EXE_SUFFIX) \
+ javap$(EXE_SUFFIX) \
+ jdb$(EXE_SUFFIX) \
+ jps$(EXE_SUFFIX) \
+ jrunscript$(EXE_SUFFIX) \
+ jstat$(EXE_SUFFIX) \
+ jstatd$(EXE_SUFFIX) \
+ jstack$(EXE_SUFFIX) \
+ packagebean$(SCRIPT_SUFFIX) \
+ rmic$(EXE_SUFFIX) \
+ serialver$(EXE_SUFFIX) \
+ unregbean$(EXE_SUFFIX) \
+ jconsole$(EXE_SUFFIX) \
+ jinfo$(EXE_SUFFIX) \
+ jmap$(EXE_SUFFIX) \
+ native2ascii$(EXE_SUFFIX) \
+ xjc$(EXE_SUFFIX) \
+ wsgen$(EXE_SUFFIX) \
+ wsimport$(EXE_SUFFIX) \
+ schemagen$(EXE_SUFFIX) \
+ jsadebugd$(EXE_SUFFIX) \
+ jhat$(EXE_SUFFIX)
+
+# The following get removed from the JRE after the bulk-copy of LIBDIR...
+NOTJRELIBS = tools.jar \
+ jconsole.jar
+
+ifeq ($(INCLUDE_SA), true)
+ NOTJRELIBS += sa-jdi.jar
+
+ # The following get removed from the JRE after the bulk-copy of LIBDIR...
+ NOTJRE_SHARED_LIBS = $(SALIB_NAME)
+else
+ NOTJRE_SHARED_LIBS =
+endif
+
+# Attach library is JDK only
+NOTJRE_SHARED_LIBS += $(LIB_PREFIX)attach.$(LIBRARY_SUFFIX)
+
+#
+###### RULES
+
+# Processing license files from source area to image area
+# These will be modified to have the platform specific EOL chars.
+define process-doc-file
+$(prep-target)
+$(SED) 's/$$//g' $< > $@
+$(CHMOD) 444 $@
+endef
+
+# JDK files
+$(JDK_IMAGE_DIR)/%: $(SHARE_JDK_DOC_SRC)/%
+ $(process-doc-file)
+# Removes LICENSE_VERSION or not
+ifdef LICENSE_VERSION
+$(JDK_IMAGE_DIR)/%: $(SHARE_JDK_DOC_SRC)/%$(LICENSE_VERSION)
+ $(process-doc-file)
+$(JDK_IMAGE_DIR)/%64: $(SHARE_JDK_DOC_SRC)/%$(LICENSE_VERSION)
+ $(process-doc-file)
+else
+$(JDK_IMAGE_DIR)/%64: $(SHARE_JDK_DOC_SRC)/%
+ $(process-doc-file)
+endif
+
+# JRE files
+$(JRE_IMAGE_DIR)/%: $(SHARE_JRE_DOC_SRC)/%
+ $(process-doc-file)
+# Add $(TEXT_SUFFIX) suffix
+ifdef TEXT_SUFFIX
+$(JRE_IMAGE_DIR)/%$(TEXT_SUFFIX): $(SHARE_JRE_DOC_SRC)/%
+ $(process-doc-file)
+endif
+# Removes LICENSE_VERSION or not
+ifdef LICENSE_VERSION
+$(JRE_IMAGE_DIR)/%: $(SHARE_JRE_DOC_SRC)/%$(LICENSE_VERSION)
+ $(process-doc-file)
+$(JRE_IMAGE_DIR)/%64: $(SHARE_JRE_DOC_SRC)/%$(LICENSE_VERSION)
+ $(process-doc-file)
+else
+$(JRE_IMAGE_DIR)/%64: $(SHARE_JRE_DOC_SRC)/%
+ $(process-doc-file)
+endif
+
+# Differences tool
+DIRDIFF_JARFILE = $(BUILDTOOLJARDIR)/dirdiff.jar
+
+######################################################
+# List of directories in classes directory that should NOT be in rt.jar
+######################################################
+
+NOT_RT_JAR_LIST = $(ABS_TEMPDIR)/not_rt_jar.list
+
+$(NOT_RT_JAR_LIST): FRC
+ $(prep-target)
+ $(ECHO) "#\n" >> $@
+ $(ECHO) "# List of subdirectories not in include in rt.jar" >> $@
+ $(ECHO) "# Directories must contain trailing '/'." >> $@
+ $(ECHO) "com/sun/javadoc/" >> $@
+ $(ECHO) "com/sun/jdi/" >> $@
+ $(ECHO) "com/sun/jarsigner/" >> $@
+ $(ECHO) "com/sun/mirror/" >> $@
+ $(ECHO) "com/sun/source/" >> $@
+ $(ECHO) "com/sun/istack/internal/tools/" >> $@
+ $(ECHO) "com/sun/istack/internal/ws/" >> $@
+ $(ECHO) "META-INF/services/com.sun.jdi.connect.Connector" >> $@
+ $(ECHO) "META-INF/services/com.sun.jdi.connect.spi.TransportService" >> $@
+ $(ECHO) "META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory" >> $@
+ $(ECHO) "META-INF/services/com.sun.tools.xjc.Plugin" >> $@
+ $(ECHO) "com/sun/tools/" >> $@
+ $(ECHO) "sun/jvmstat/" >> $@
+ $(ECHO) "sun/rmi/rmic/" >> $@
+ $(ECHO) "sun/tools/asm/" >> $@
+ $(ECHO) "sun/tools/java/" >> $@
+ $(ECHO) "sun/tools/javac/" >> $@
+ $(ECHO) "sun/tools/javap/" >> $@
+ $(ECHO) "sun/tools/jconsole/" >> $@
+ $(ECHO) "sun/tools/jps/" >> $@
+ $(ECHO) "sun/tools/jstat/" >> $@
+ $(ECHO) "sun/tools/jstatd/" >> $@
+ $(ECHO) "sun/tools/native2ascii/" >> $@
+ $(ECHO) "sun/tools/serialver/" >> $@
+ $(ECHO) "sun/tools/tree/" >> $@
+ $(ECHO) "sun/tools/util/" >> $@
+ $(ECHO) "sun/security/tools/JarBASE64Encoder.class" >> $@
+ $(ECHO) "sun/security/tools/JarSigner.class" >> $@
+ $(ECHO) "sun/security/tools/JarSignerParameters.class" >> $@
+ $(ECHO) "sun/security/tools/JarSignerResources.class" >> $@
+ $(ECHO) "sun/security/tools/JarSignerResources_ja.class" >> $@
+ $(ECHO) "sun/security/tools/JarSignerResources_zh_CN.class" >> $@
+ $(ECHO) "sun/security/tools/SignatureFile\$$Block.class" >> $@
+ $(ECHO) "sun/security/tools/SignatureFile.class" >> $@
+ $(ECHO) "sun/security/tools/TimestampedSigner.class" >> $@
+ $(ECHO) "sun/security/provider/Sun.class" >> $@
+ $(ECHO) "sun/security/rsa/SunRsaSign.class" >> $@
+ $(ECHO) "sun/security/ssl/" >> $@
+ $(ECHO) "com/sun/net/ssl/internal/ssl/" >> $@
+ $(ECHO) "javax/crypto/" >> $@
+ $(ECHO) "sun/security/internal/" >> $@
+ $(ECHO) "com/sun/crypto/provider/" >> $@
+ $(ECHO) "META-INF/services/com.sun.tools.attach.spi.AttachProvider" >> $@
+ $(ECHO) "com/sun/tools/attach/" >> $@
+ $(ECHO) "org/relaxng/datatype/" >> $@
+ $(ECHO) "com/sun/codemodel/" >> $@
+ $(ECHO) "com/sun/xml/internal/dtdparser/" >> $@
+ $(ECHO) "com/sun/xml/internal/rngom/" >> $@
+ $(ECHO) "com/sun/xml/internal/xsom/" >> $@
+ $(ECHO) "com/sun/tools/script/shell/" >> $@
+ $(ECHO) "sun/tools/attach/" >> $@
+ $(ECHO) "sun/tools/jstack/" >> $@
+ $(ECHO) "sun/tools/jinfo/" >> $@
+ $(ECHO) "sun/tools/jmap/" >> $@
+
+
+# File order list for rt.jar
+# - sun.applet is included, till hotjava stops relying on it.
+# - sun.tools.jar is included, needs cleanup.
+#
+REORDER_TEMPDIR=$(ABS_TEMPDIR)/reorder
+TOTAL_JAR_FILELIST=$(REORDER_TEMPDIR)/file_list
+
+JARFILELISTS_TEMPDIR=$(ABS_TEMPDIR)/jarfilelists
+RT_JAR_FILELIST=$(JARFILELISTS_TEMPDIR)/rt_jar_list
+RES_JAR_FILELIST=$(JARFILELISTS_TEMPDIR)/resources_jar_list
+
+JARREORDER_JARFILE = $(ABS_BUILDTOOLJARDIR)/jarreorder.jar
+
+$(TOTAL_JAR_FILELIST): $(JARREORDER_JARFILE) $(NOT_RT_JAR_LIST)
+ $(prep-target)
+ $(RM) $@.temp
+ ($(CD) $(CLASSBINDIR) && \
+ $(BOOT_JAVA_CMD) -jar $(JARREORDER_JARFILE) \
+ -o $@.temp $(ABS_LIBDIR)/classlist $(NOT_RT_JAR_LIST) . )
+ $(MV) $@.temp $@
+ @($(CD) $(CLASSBINDIR) && $(java-vm-cleanup))
+
+# Create the rt.jar file list & non-class files list
+
+JARSPLIT_JARFILE = $(BUILDTOOLJARDIR)/jarsplit.jar
+
+$(RT_JAR_FILELIST) + $(RES_JAR_FILELIST): \
+ $(TOTAL_JAR_FILELIST) $(JARSPLIT_JARFILE)
+ @$(RM) $(RT_JAR_FILELIST) $(RES_JAR_FILELIST)
+ $(MKDIR) -p $(JARFILELISTS_TEMPDIR)
+ $(BOOT_JAVA_CMD) -jar $(JARSPLIT_JARFILE) \
+ $(TOTAL_JAR_FILELIST) \
+ -o $(RT_JAR_FILELIST) $(RES_JAR_FILELIST)
+ @$(java-vm-cleanup)
+
+# Create the manifest file.
+JAR_MANIFEST_FILE=$(TEMPDIR)/manifest.tmp
+$(JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST)
+ $(prep-target)
+ $(SED) -e "s/@@RELEASE@@/$(RELEASE)/" $(MAINMANIFEST) >> $@
+ $(ECHO) >> $@
+ $(CAT) $(BEANMANIFEST) >> $@
+
+# Create resources.jar containing non-class files
+RESOURCES_JAR=$(TEMPDIR)/resources-orig.jar
+RES_JAR_ARGLIST=$(RES_JAR_FILELIST)_args
+$(RES_JAR_ARGLIST): $(RES_JAR_FILELIST)
+ $(prep-target)
+ $(SED) -e "s@^@-C $(CLASSBINDIR) @" $< > $@
+$(RESOURCES_JAR): $(RES_JAR_ARGLIST) $(JAR_MANIFEST_FILE)
+ $(prep-target)
+ $(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
+ @$(RES_JAR_ARGLIST) $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+# Create jsse.jar containing SunJSSE implementation classes
+JSSE_JAR=$(TEMPDIR)/jsse-orig.jar
+$(JSSE_JAR): $(JAR_MANIFEST_FILE)
+ $(prep-target)
+ $(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
+ $(JSSE_CLASSES_DIRS:%=-C $(CLASSBINDIR) %) \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+# Create sec-bin.zip
+SEC_FILES_ZIP=$(ABS_TEMPDIR)/sec-bin.zip
+sec-files::
+ $(prep-target)
+ $(RM) $(SEC_FILES_ZIP)
+ $(CD) $(OUTPUTDIR) && \
+ $(ZIPEXE) -rq9 $(SEC_FILES_ZIP) $(SEC_FILES_DIRS)
+ @$(java-vm-cleanup)
+
+# Create sec-windows-bin.zip
+SEC_FILES_WIN_ZIP=$(ABS_TEMPDIR)/sec-windows-bin.zip
+sec-files-win::
+ifeq ($(PLATFORM), windows)
+ $(prep-target)
+ $(RM) $(SEC_FILES_WIN_ZIP)
+ $(CD) $(OUTPUTDIR) && \
+ $(ZIPEXE) -rq9 $(SEC_FILES_WIN_ZIP) $(SEC_FILES_WIN_DIRS)
+ @$(java-vm-cleanup)
+endif
+
+# Create JGSS files that contains the native Kerberos library
+JGSS_WIN32_FILES_ZIP=$(ABS_TEMPDIR)/jgss-windows-i586-bin.zip
+JGSS_WIN64_FILES_ZIP=$(ABS_TEMPDIR)/jgss-windows-x64-bin.zip
+jgss-files::
+ifeq ($(PLATFORM), windows)
+ $(prep-target)
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ $(RM) $(JGSS_WIN32_FILES_ZIP)
+ $(CD) $(OUTPUTDIR) && \
+ $(ZIPEXE) -rq9 $(JGSS_WIN32_FILES_ZIP) $(JGSS_FILES_DIRS)
+ else
+ $(RM) $(JGSS_WIN64_FILES_ZIP)
+ $(CD) $(OUTPUTDIR) && \
+ $(ZIPEXE) -rq9 $(JGSS_WIN64_FILES_ZIP) $(JGSS_FILES_DIRS)
+ endif
+ @$(java-vm-cleanup)
+endif
+
+# Create rt.jar
+RT_JAR=$(ABS_TEMPDIR)/rt-orig.jar
+RT_JAR_ARGLIST=$(RT_JAR_FILELIST)_args
+$(RT_JAR_ARGLIST): $(RT_JAR_FILELIST)
+ $(prep-target)
+ $(SED) -e "s@^@-C $(CLASSBINDIR) @" $< > $@
+$(RT_JAR): $(RT_JAR_ARGLIST) $(JAR_MANIFEST_FILE)
+ $(prep-target)
+ $(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
+ @$(RT_JAR_ARGLIST) $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+# Meta-index construction to make core class loaders lazier
+
+BUILDMETAINDEX_JARFILE = $(ABS_BUILDTOOLJARDIR)/buildmetaindex.jar
+
+######################################################
+# JRE Image
+######################################################
+
+initial-image-jre-setup:
+ $(RM) -r $(JRE_IMAGE_DIR)
+ $(MKDIR) -p $(JRE_IMAGE_DIR)
+
+# 64-bit solaris jre image contains only the 64-bit add-on files.
+initial-image-jre-sol64:: initial-image-jre-setup \
+ $(JRE_LICENSES) $(JRE64_LICENSES)
+ @# Use tar instead of cp to preserve the symbolic links
+ for dir in bin lib ; do \
+ ( $(CD) $(OUTPUTDIR) && \
+ $(TAR) cf - `$(FIND) $$dir -name '$(ARCH)' -print` | \
+ ($(CD) $(JRE_IMAGE_DIR) && $(TAR) xf -) ) ; \
+ done
+ @# Remove some files from the jre area
+ for t in $(NOTJRETOOLS) ; do \
+ $(RM) $(JRE_IMAGE_DIR)/bin$(ISA_DIR)/$$t ; \
+ done
+ for l in $(NOTJRELIBS) ; do \
+ $(RM) $(JRE_IMAGE_DIR)/lib/$$l ; \
+ done
+ $(RM) `$(FIND) $(JRE_IMAGE_DIR)/lib -name 'orb.idl'`
+ $(RM) `$(FIND) $(JRE_IMAGE_DIR)/lib -name 'ir.idl'`
+
+# Construct an initial jre image (initial jdk jre) no trimming or stripping
+initial-image-jre:: initial-image-jre-setup \
+ $(JRE_LICENSES) $(JRE_DOCFILES) \
+ $(RT_JAR) $(RESOURCES_JAR) $(JSSE_JAR) \
+ $(BUILDMETAINDEX_JARFILE)
+ @# Copy in bin directory
+ $(CD) $(OUTPUTDIR) && $(FIND) bin -depth | $(CPIO) -pdum $(JRE_IMAGE_DIR)
+ @# CTE plugin security change require new empty directory lib/applet
+ $(MKDIR) -p $(JRE_IMAGE_DIR)/lib/applet
+ @# Copy in lib directory
+ $(CD) $(OUTPUTDIR) && $(FIND) lib -depth | $(CPIO) -pdum $(JRE_IMAGE_DIR)
+ @# Make sure all directories are read/execute for everyone
+ $(CHMOD) a+rx `$(FIND) $(JRE_IMAGE_DIR) -type d`
+ @# Remove some files from the jre area
+ for t in $(NOTJRETOOLS) ; do \
+ $(RM) $(JRE_IMAGE_DIR)/bin$(ISA_DIR)/$$t ; \
+ done
+ for l in $(NOTJRELIBS) ; do \
+ $(RM) $(JRE_IMAGE_DIR)/lib/$$l ; \
+ done
+ @# Remove orb.idl and ir.idl from jre
+ $(FIND) $(JRE_IMAGE_DIR)/lib -name 'orb.idl' -exec $(RM) \{} \;
+ $(FIND) $(JRE_IMAGE_DIR)/lib -name 'ir.idl' -exec $(RM) \{} \;
+ @# Copy in rt.jar & resources.jar file
+ $(CP) $(RT_JAR) $(JRE_IMAGE_DIR)/lib/rt.jar
+ $(CP) $(RESOURCES_JAR) $(JRE_IMAGE_DIR)/lib/resources.jar
+ $(CP) $(JSSE_JAR) $(JRE_IMAGE_DIR)/lib/jsse.jar
+ @# Generate meta-index to make boot and extension class loaders lazier
+ $(CD) $(JRE_IMAGE_DIR)/lib && \
+ $(BOOT_JAVA_CMD) -jar $(BUILDMETAINDEX_JARFILE) \
+ -o meta-index *.jar
+ @$(CD) $(JRE_IMAGE_DIR)/lib && $(java-vm-cleanup)
+ $(CD) $(JRE_IMAGE_DIR)/lib/ext && \
+ $(BOOT_JAVA_CMD) -jar $(BUILDMETAINDEX_JARFILE) \
+ -o meta-index *.jar
+ @$(CD) $(JRE_IMAGE_DIR)/lib/ext && $(java-vm-cleanup)
+ifeq ($(PLATFORM), windows)
+ @# Remove certain *.lib files
+ $(CD) $(JRE_IMAGE_DIR)/lib && \
+ $(RM) java.$(LIB_SUFFIX) jvm.$(LIB_SUFFIX) \
+ hpi.$(LIB_SUFFIX) awt.$(LIB_SUFFIX) jawt.$(LIB_SUFFIX)
+endif # Windows
+ifneq ($(PLATFORM), windows)
+ $(call copy-man-pages,$(JRE_IMAGE_DIR),$(JRE_MAN_PAGES))
+endif # !windows
+
+# Trim out any extra files not for the jre shipment but wanted in the jdk jre.
+# (Note the jdk WILL want the jre image before this trimming)
+# Removes server VM on Windows 32bit.
+# Remove certain shared libraries that should not be in the jre image
+# but should be in the jdk jre image.
+trim-image-jre::
+ifeq ($(PLATFORM), windows)
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ $(RM) -r $(JRE_IMAGE_DIR)/bin/server
+ endif
+ ifdef NOTJRE_SHARED_LIBS
+ for l in $(NOTJRE_SHARED_LIBS) ; do \
+ $(RM) $(JRE_IMAGE_DIR)/bin/$$l ; \
+ done ;
+ endif
+else # PLATFORM
+ ifdef NOTJRE_SHARED_LIBS
+ for l in $(NOTJRE_SHARED_LIBS) ; do \
+ $(RM) $(JRE_IMAGE_DIR)/lib/$(LIBARCH)/$$l ; \
+ done ;
+ endif
+endif # PLATFORM
+
+# Get list of all Elf files in the jre
+JRE_ELF_LIST=$(TEMPDIR)/jre-elf-files.list
+$(JRE_ELF_LIST):
+ifneq ($(PLATFORM), windows)
+ $(RM) $@
+ $(FIND) $(JRE_IMAGE_DIR)/lib -type f -name \*.$(LIB_SUFFIX) >> $@
+ $(FILE) `$(FIND) $(JRE_IMAGE_DIR)/bin -type f -name \*$(EXE_SUFFIX)` \
+ | $(EGREP) 'ELF' | $(CUT) -d':' -f1 >> $@
+endif
+
+# Post process the image (strips and mcs on Elf files we are shipping)
+# (Note the jdk WILL want the jre image before this processing)
+process-image-jre:: $(JRE_ELF_LIST)
+ifneq ($(POST_STRIP_PROCESS), )
+ for f in `$(CAT) $(JRE_ELF_LIST)`; do \
+ $(CHMOD) u+w $${f}; \
+ $(ECHO) $(POST_STRIP_PROCESS) $${f}; \
+ $(POST_STRIP_PROCESS) $${f}; \
+ $(CHMOD) go-w $${f}; \
+ done
+endif
+ifneq ($(POST_MCS_PROCESS), )
+ for f in `$(CAT) $(JRE_ELF_LIST)`; do \
+ $(CHMOD) u+w $${f}; \
+ $(ECHO) $(POST_MCS_PROCESS) $${f}; \
+ $(POST_MCS_PROCESS) $${f}; \
+ $(CHMOD) go-w $${f}; \
+ done
+endif
+ $(RM) $(JRE_ELF_LIST)
+
+######################################################
+# JDK Image
+######################################################
+# Note: cpio ($(CPIO)) sometimes leaves directories without rx access.
+
+initial-image-jdk-setup:
+ $(RM) -r $(JDK_IMAGE_DIR)
+ $(MKDIR) -p $(JDK_IMAGE_DIR)/jre
+ ($(CD) $(JRE_IMAGE_DIR) && $(FIND) . -depth -print \
+ | $(CPIO) -pdum $(JDK_IMAGE_DIR)/jre )
+ $(RM) -rf $(JDK_IMAGE_DIR)/jre/man
+ $(CHMOD) a+rx `$(FIND) $(JDK_IMAGE_DIR) -type d`
+
+initial-image-jdk64-bindemos:
+ for dir in bin demo ; do \
+ ( $(CD) $(OUTPUTDIR) && \
+ $(TAR) cf - `$(FIND) $$dir -name '$(LIBARCH)' -print` | \
+ ($(CD) $(JDK_IMAGE_DIR) && $(TAR) xf -) ) ; \
+ done
+
+# Solaris 64 bit image is special
+initial-image-jdk-sol64:: initial-image-jdk-setup \
+ initial-image-jdk64-bindemos \
+ $(JDK_LICENSES) $(JDK64_LICENSES)
+
+# DB files to add
+ifdef OPENJDK
+
+initial-image-jdk-db:
+
+else
+
+# Create the list of db *.zip files to bundle with jdk
+ABS_DB_PATH :=$(call FullPath,$(CLOSED_SHARE_SRC)/db)
+DB_ZIP_LIST = $(shell $(LS) $(ABS_DB_PATH)/*.zip 2>/dev/null)
+
+initial-image-jdk-db: $(DB_ZIP_LIST)
+ $(MKDIR) -p $(JDK_IMAGE_DIR)/db
+ for d in $(DB_ZIP_LIST); do \
+ ($(CD) $(JDK_IMAGE_DIR)/db && $(UNZIP) -o $$d); \
+ done
+
+endif
+
+# Standard jdk image
+initial-image-jdk:: initial-image-jdk-setup \
+ initial-image-jdk-db \
+ $(JDK_LICENSES) $(JDK_DOCFILES)
+ $(MKDIR) $(JDK_IMAGE_DIR)/lib
+ @#
+ @# Copy in the jars in lib that only belong in the JDK
+ @#
+ for l in $(NOTJRELIBS); do \
+ if [ -r $(LIBDIR)/$$l ]; then \
+ $(CP) $(LIBDIR)/$$l $(JDK_IMAGE_DIR)/lib; \
+ fi; \
+ done
+ ifeq ($(PLATFORM), windows)
+ @#
+ @# Audio soundbank - Bug# 4236400
+ @# Windows only: adding audio files to JDK's jre/lib directory.
+ @#
+ ($(CD) $(LIBDIR) && $(TAR) cf - \
+ `$(FIND) audio -depth -print`) | \
+ ($(CD) $(JDK_IMAGE_DIR)/jre/lib && $(TAR) xf -)
+ @#
+ @#
+ @# lib/
+ @#
+ $(CP) $(LIBDIR)/$(LIB_PREFIX)jvm.$(LIB_SUFFIX) $(JDK_IMAGE_DIR)/lib
+ $(CP) $(LIBDIR)/$(LIB_PREFIX)jawt.$(LIB_SUFFIX) $(JDK_IMAGE_DIR)/lib
+ @#
+ @# bin/
+ @#
+ @# copy all EXE files and only certain DLL files from BINDIR
+ $(MKDIR) -p $(JDK_IMAGE_DIR)/bin
+ $(CP) $(BINDIR)/*$(EXE_SUFFIX) $(JDK_IMAGE_DIR)/bin
+ $(CP) $(BINDIR)/jli.$(LIBRARY_SUFFIX) $(JDK_IMAGE_DIR)/bin
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ ifeq ($(COMPILER_VERSION), VS2003)
+ $(CP) $(BINDIR)/msvc*71.$(LIBRARY_SUFFIX) $(JDK_IMAGE_DIR)/bin
+ endif
+ endif
+ else # PLATFORM
+ @#
+ @# bin/
+ @#
+ ($(CD) $(BINDIR)/.. && $(TAR) cf - \
+ `$(FIND) bin \( -type f -o -type l \) -print `) | \
+ ($(CD) $(JDK_IMAGE_DIR) && $(TAR) xf -)
+ endif # PLATFORM
+ @#
+ @# files that might not exist need to be touched.
+ @#
+ $(TOUCH) $(CLASSBINDIR)/META-INF/services/com.sun.tools.xjc.Plugin
+ @#
+ @# lib/tools.jar
+ @#
+ $(BOOT_JAR_CMD) c0f $(LIBDIR)/tools.jar $(addprefix \
+ -C $(CLASSBINDIR) , $(TOOLS)) \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+ $(CP) $(LIBDIR)/tools.jar $(JDK_IMAGE_DIR)/lib/tools.jar
+ @#
+ @# lib/ct.sym
+ @#
+ $(MKDIR) -p $(OUTPUTDIR)/symbols/META-INF/sym
+ $(JAVAC_CMD) -XDprocess.packages -proc:only \
+ -processor com.sun.tools.javac.sym.CreateSymbols \
+ -Acom.sun.tools.javac.sym.Jar=$(RT_JAR) \
+ -Acom.sun.tools.javac.sym.Dest=$(OUTPUTDIR)/symbols/META-INF/sym/rt.jar \
+ $(CORE_PKGS) $(NON_CORE_PKGS) $(EXCLUDE_PROPWARN_PKGS)
+ $(BOOT_JAR_CMD) c0f $(LIBDIR)/ct.sym \
+ -C $(OUTPUTDIR)/symbols META-INF $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+ $(CP) $(LIBDIR)/ct.sym $(JDK_IMAGE_DIR)/lib/ct.sym
+ @#
+ @# CORBA supported orb.idl and ir.idl should be copied to lib
+ @#
+ $(CP) $(LIBDIR)/orb.idl $(JDK_IMAGE_DIR)/lib/orb.idl
+ $(CP) $(LIBDIR)/ir.idl $(JDK_IMAGE_DIR)/lib/ir.idl
+ ifeq ($(PLATFORM), linux)
+ @#
+ @# on Linux copy jexec from jre/lib to /lib
+ @#
+ $(CP) $(LIBDIR)/jexec $(JDK_IMAGE_DIR)/lib/jexec
+ endif # PLATFORM
+ @#
+ @# src.zip
+ @#
+ $(MKDIR) -p $(JDK_IMAGE_DIR)/src
+ @#
+ @# The '*-*' pattern in the find command excludes files named with dashes,
+ @# such as the java.nio templates for generated classes
+ @#
+ @# The Linux 'tar' command cannot handle the huge command line argument
+ @# generated by the more efficient solaris/windows method of copying files.
+ @# So for Linux, make use of the -T option (like Solaris' -I option) of
+ @# obtaining the list of files from a file. MKS tar has no such option.
+ ifeq ($(PLATFORM), linux)
+ for d in $(SOURCE_DIRS); do \
+ $(RM) $(ABS_TEMPDIR)/src-files.list; \
+ ($(CD) $$d && \
+ for sd in $(SOURCES) ; do \
+ if [ -d $$sd ] ; then \
+ $(FIND) $$sd $(SOURCE_FILES_filter) \
+ -name '*.java' -print \
+ >> $(ABS_TEMPDIR)/src-files.list ; \
+ fi; \
+ done ; \
+ ) ; \
+ if [ -f $(ABS_TEMPDIR)/src-files.list ] ; then \
+ ($(CD) $$d && $(TAR) cf - -T $(ABS_TEMPDIR)/src-files.list ) \
+ | ($(CD) $(JDK_IMAGE_DIR)/src && $(TAR) xf -); \
+ fi; \
+ done
+ else
+ for d in $(SOURCE_DIRS); do \
+ $(RM) $(ABS_TEMPDIR)/src-files.list; \
+ ($(CD) $$d && \
+ for sd in $(SOURCES) ; do \
+ if [ -d $$sd ] ; then \
+ $(FIND) $$sd $(SOURCE_FILES_filter) \
+ -name '*.java' -print \
+ >> $(ABS_TEMPDIR)/src-files.list ; \
+ fi; \
+ done ; \
+ ) ; \
+ if [ -f $(ABS_TEMPDIR)/src-files.list ] ; then \
+ ($(CD) $$d && $(TAR) cf - `$(CAT) $(ABS_TEMPDIR)/src-files.list`) \
+ | ($(CD) $(JDK_IMAGE_DIR)/src && $(TAR) xf -); \
+ fi; \
+ done
+ endif
+ $(RM) $(ABS_TEMPDIR)/src-files.list
+ $(CHMOD) -R +w $(JDK_IMAGE_DIR)/src
+ $(MKDIR) -p $(JDK_IMAGE_DIR)/src/launcher
+ $(CP) $(SHARE_SRC)/bin/java.c $(JDK_IMAGE_DIR)/src/launcher
+ $(CP) $(SHARE_SRC)/bin/java.h $(JDK_IMAGE_DIR)/src/launcher
+ $(CP) $(SHARE_SRC)/bin/manifest_info.h $(JDK_IMAGE_DIR)/src/launcher
+ $(CP) $(SHARE_SRC)/bin/parse_manifest.c $(JDK_IMAGE_DIR)/src/launcher
+ $(CP) $(SHARE_SRC)/bin/version_comp.c $(JDK_IMAGE_DIR)/src/launcher
+ $(CP) $(SHARE_SRC)/bin/version_comp.h $(JDK_IMAGE_DIR)/src/launcher
+ $(CP) $(SHARE_SRC)/bin/wildcard.h $(JDK_IMAGE_DIR)/src/launcher
+ $(CP) $(SHARE_SRC)/bin/wildcard.c $(JDK_IMAGE_DIR)/src/launcher
+ $(CP) $(SHARE_SRC)/bin/jli_util.h $(JDK_IMAGE_DIR)/src/launcher
+ $(CP) $(SHARE_SRC)/bin/jli_util.c $(JDK_IMAGE_DIR)/src/launcher
+ $(CP) $(SHARE_SRC)/bin/splashscreen_stubs.c $(JDK_IMAGE_DIR)/src/launcher
+ $(CP) $(SHARE_SRC)/bin/splashscreen.h $(JDK_IMAGE_DIR)/src/launcher
+ $(CP) $(PLATFORM_SRC)/bin/java_md.c $(JDK_IMAGE_DIR)/src/launcher
+ $(CP) $(PLATFORM_SRC)/bin/java_md.h $(JDK_IMAGE_DIR)/src/launcher
+ $(CD) $(JDK_IMAGE_DIR)/src && $(ZIPEXE) -qr ../src.zip *
+ $(RM) -r $(JDK_IMAGE_DIR)/src
+ @#
+ @# demo, include
+ @#
+ $(CP) -r -f $(DEMODIR) $(JDK_IMAGE_DIR)
+ $(CP) -r -f $(SAMPLEDIR) $(JDK_IMAGE_DIR)
+ $(CP) -r $(INCLUDEDIR) $(JDK_IMAGE_DIR)
+ @#
+ @# Swing BeanInfo generation
+ @#
+ $(CD) javax/swing/beaninfo && $(MAKE) swing-1.2-beans
+ifneq ($(PLATFORM), windows)
+ $(call copy-man-pages,$(JDK_IMAGE_DIR),$(JDK_MAN_PAGES))
+endif # !windows
+
+# Trim out files we don't want to ship
+trim-image-jdk::
+ @# Remove tools that should not be part of SDK.
+ for t in $(NOTJDKTOOLS); do \
+ $(RM) $(JDK_IMAGE_DIR)/bin/$${t}$(EXE_SUFFIX) \
+ $(JDK_IMAGE_DIR)/bin/*/native_threads/$${t}$(EXE_SUFFIX); \
+ done
+
+# Get list of Elf files in the jdk
+JDK_ELF_LIST=$(TEMPDIR)/jdk-elf-files.list
+$(JDK_ELF_LIST):
+ifneq ($(PLATFORM), windows)
+ $(RM) $@
+ $(FIND) $(JDK_IMAGE_DIR)/jre/lib -type f -name \*.$(LIB_SUFFIX) >> $@
+ $(FILE) `$(FIND) $(JDK_IMAGE_DIR)/jre/bin -type f -name \*$(EXE_SUFFIX)` \
+ | $(EGREP) 'ELF' | $(CUT) -d':' -f1 >> $@
+ file `$(FIND) $(JDK_IMAGE_DIR)/bin -type f -name \*$(EXE_SUFFIX)` \
+ | $(EGREP) 'ELF' | $(CUT) -d':' -f1 >> $@
+endif
+
+# Post process the image (strips and mcs on files we are shipping)
+process-image-jdk:: $(JDK_ELF_LIST)
+ifneq ($(POST_STRIP_PROCESS), )
+ for f in `$(CAT) $(JDK_ELF_LIST)`; do \
+ $(CHMOD) u+w $${f}; \
+ $(ECHO) $(POST_STRIP_PROCESS) $${f}; \
+ $(POST_STRIP_PROCESS) $${f}; \
+ $(CHMOD) go-w $${f}; \
+ done
+endif
+ifneq ($(POST_MCS_PROCESS), )
+ for f in `$(CAT) $(JDK_ELF_LIST)`; do \
+ $(CHMOD) u+w $${f}; \
+ $(ECHO) $(POST_MCS_PROCESS) $${f}; \
+ $(POST_MCS_PROCESS) $${f}; \
+ $(CHMOD) go-w $${f}; \
+ done
+endif
+ $(RM) $(JDK_ELF_LIST)
+
+###################################################################
+# What do we compare against
+###################################################################
+
+# The temporary files and areas created
+TEMP_PREV_JRE_BASE_DIR=$(TEMPDIR)/previous_jre
+TEMP_PREV_JDK_BASE_DIR=$(TEMPDIR)/previous_jdk
+TEMP_PREV_JRE_COMPARISON=$(TEMP_PREV_JRE_BASE_DIR)/previous_jre_comparison.txt
+TEMP_PREV_JDK_COMPARISON=$(TEMP_PREV_JDK_BASE_DIR)/previous_jdk_comparison.txt
+TEMP_PREV_JRE_IMAGE_DIR=$(TEMP_PREV_JRE_BASE_DIR)/jre$(PREVIOUS_JDK_VERSION)
+TEMP_PREV_JDK_IMAGE_DIR=$(TEMP_PREV_JDK_BASE_DIR)/jdk$(PREVIOUS_JDK_VERSION)
+
+# unbundle(sourcedir,bundlename,destdir)
+# logic is slightly different if a .tar.gz file (linux)
+define unbundle
+$(RM) -r $3
+$(MKDIR) -p $3
+$(CP) $1 $3
+if [ "`$(BASENAME) $2 .gz`" != "$2" ] ; then \
+ ( $(CD) $3 && ( $(GUNZIP) -dc $2 | $(TAR) xf - ) && $(RM) $2 ); \
+else \
+ ( $(CD) $3 && $(TAR) xf $2 && $(RM) $2 ); \
+fi
+( $(CD) $3 && $(RM) $2 )
+endef
+
+# In general, ignore the fastdebug tree, and changes in the demo and sample area
+COMPARE_FILTER = | $(EGREP) -v /fastdebug/ | $(EGREP) -v /demo/ | $(EGREP) -v /sample/
+
+# If a previuous image is provided, no need to install it.
+ifdef PREVIOUS_JDK_IMAGE
+
+ # Just use the pre-installed images
+ PREV_JRE_IMAGE_DIR=$(PREVIOUS_JDK_IMAGE)/jre
+ PREV_JDK_IMAGE_DIR=$(PREVIOUS_JDK_IMAGE)
+
+else
+
+ # Use the temp images we will create
+ PREV_JRE_IMAGE_DIR=$(TEMP_PREV_JRE_IMAGE_DIR)
+ PREV_JDK_IMAGE_DIR=$(TEMP_PREV_JDK_IMAGE_DIR)
+
+# Force the installation in this case
+compare-image:: install-previous-sanity install-previous-jre install-previous-jdk
+
+# Unbundle the jre
+$(TEMP_PREV_JRE_IMAGE_DIR)/bin/java$(EXE_SUFFIX): $(PREVIOUS_JRE_BUNDLE)
+ $(call unbundle,$(PREVIOUS_JRE_BUNDLE),$(PREVIOUS_JRE_FILE),$(TEMP_PREV_JRE_BASE_DIR))
+ $(TOUCH) $@
+
+# Unbundle the jdk
+$(TEMP_PREV_JDK_IMAGE_DIR)/bin/java$(EXE_SUFFIX): $(PREVIOUS_JDK_BUNDLE)
+ $(call unbundle,$(PREVIOUS_JDK_BUNDLE),$(PREVIOUS_JDK_FILE),$(TEMP_PREV_JDK_BASE_DIR))
+ $(TOUCH) $@
+
+endif
+
+# Make sure all images have a java in them (used as the touch file)
+install-previous-sanity:
+ @if [ ! -f $(PREVIOUS_JRE_BUNDLE) ]; then \
+ $(ECHO) "ERROR: You do not have access to the previous java release jre bundles. \n" \
+ " Please check your access to \n" \
+ " $(PREVIOUS_JRE_BUNDLE) \n" \
+ " and/or check your value of ALT_PREVIOUS_RELEASE_PATH or ALT_PREVIOUS_JRE_FILE \n" \
+ " This will affect you if you build the images target. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @if [ ! -f $(PREVIOUS_JDK_BUNDLE) ]; then \
+ $(ECHO) "ERROR: You do not have access to the previous java release sdk bundles. \n" \
+ " Please check your access to \n" \
+ " $(PREVIOUS_sdk_BUNDLE) \n" \
+ " and/or check your value of ALT_PREVIOUS_RELEASE_PATH or ALT_PREVIOUS_JDK_FILE. \n" \
+ " This will affect you if you build the images target. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+install-previous-jre: $(PREV_JRE_IMAGE_DIR)/bin/java$(EXE_SUFFIX)
+install-previous-jdk: $(PREV_JDK_IMAGE_DIR)/bin/java$(EXE_SUFFIX)
+
+# Create the jre comparison report
+$(TEMP_PREV_JRE_COMPARISON): install-previous-jre $(DIRDIFF_JARFILE)
+ $(prep-target)
+ $(BOOT_JAVA_CMD) -jar $(DIRDIFF_JARFILE) \
+ $(PREV_JRE_IMAGE_DIR) $(JRE_IMAGE_DIR) | $(SORT) > $@
+ @$(java-vm-cleanup)
+
+# Create the jdk comparison report
+$(TEMP_PREV_JDK_COMPARISON): install-previous-jdk $(DIRDIFF_JARFILE)
+ $(prep-target)
+ $(BOOT_JAVA_CMD) -jar $(DIRDIFF_JARFILE) \
+ $(PREV_JDK_IMAGE_DIR) $(JDK_IMAGE_DIR) | $(SORT) > $@
+ @$(java-vm-cleanup)
+
+# Clean up names in the messages printed out
+CAT_FILTER = $(SED) -e "s@$(JDK_IMAGE_DIR)@JDK_IMAGE@g" \
+ -e "s@$(JRE_IMAGE_DIR)@JRE_IMAGE@g"
+
+# Report on the jre image comparison
+compare-image-jre: $(TEMP_PREV_JRE_COMPARISON)
+ @$(ECHO) "JRE Image Comparison to version $(PREVIOUS_JDK_VERSION)"
+ @$(ECHO) " Previous: $(PREV_JRE_IMAGE_DIR)"
+ @$(ECHO) " Current: $(JRE_IMAGE_DIR)"
+ @$(CAT) $< $(COMPARE_FILTER) | $(CAT_FILTER)
+ ( $(ECHO) " " ; $(CAT) $< | $(CAT_FILTER) ; $(ECHO) " " ) >> $(WARNING_FILE)
+
+# Report on the jdk image comparison
+compare-image-jdk: $(TEMP_PREV_JDK_COMPARISON)
+ @$(ECHO) "JDK Image Comparison to version $(PREVIOUS_JDK_VERSION)"
+ @$(ECHO) " Previous: $(PREV_JDK_IMAGE_DIR)"
+ @$(ECHO) " Current: $(JDK_IMAGE_DIR)"
+ $(CAT) $< $(COMPARE_FILTER) | $(CAT_FILTER)
+ ( $(ECHO) " " ; $(CAT) $< | $(CAT_FILTER) ; $(ECHO) " " ) >> $(WARNING_FILE)
+
+# Do both image comparisons
+compare-image:: compare-image-jre compare-image-jdk
+
+# Clean up any temp images and reports
+compare-image-clobber:
+ $(RM) -r $(TEMP_PREV_JRE_BASE_DIR)
+ $(RM) -r $(TEMP_PREV_JDK_BASE_DIR)
+
+######################################################
+# clobber
+######################################################
+images-clobber::
+ $(RM) -r $(REORDER_TEMPDIR)
+ $(RM) -r $(JARFILELISTS_TEMPDIR)
+ifeq ($(ARCH_DATA_MODEL), 32)
+ $(CD) javax/swing/beaninfo && $(MAKE) swingbeans.clobber
+ $(RM) -r $(CLASSBINDIR)/META-INF
+ $(RM) $(TEMPDIR)/tmp.jar
+endif
+ifeq ($(PLATFORM), linux)
+ $(RM) -r $(OUTPUTDIR)/$(ARCH)
+endif
+ifeq ($(PLATFORM), windows)
+ $(RM) $(TEMPDIR)/rebase.input
+endif
+ $(RM) -r $(JDK_IMAGE_DIR)
+ $(RM) -r $(JDK_DEBUG_IMAGE_DIR)
+ $(RM) -r $(JRE_IMAGE_DIR)
+
+images images-clobber::
+ @$(ECHO) ">>>Finished making "$@" @ `$(DATE)` ..."
+ @$(java-vm-cleanup)
+
+.PHONY: images image-jre image-jdk \
+ initial-image-jre initial-image-jdk \
+ initial-image-jre-sol64 initial-image-jdk-sol64 \
+ initial-image-jdk-setup \
+ initial-image-jdk-db \
+ initial-image-jdk64-bindemos \
+ initial-image-jre-setup \
+ trim-image-jre trim-image-jdk \
+ process-image-jre process-image-jdk \
+ install-previous-jre install-previous-jdk \
+ compare-image-jre compare-image-jdk \
+ compare-image compare-image-clobber \
+ images-clobber
+
+# Force rule
+FRC:
+
diff --git a/jdk/make/common/Rules-SCCS.gmk b/jdk/make/common/Rules-SCCS.gmk
new file mode 100644
index 0000000..6e65bcd
--- /dev/null
+++ b/jdk/make/common/Rules-SCCS.gmk
@@ -0,0 +1,70 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Only get these rules if SCCS is available
+#
+
+ifdef SCCS
+
+# SCCS command to extract out latest source
+SCCS_GET=$(SCCS) get -s
+
+#
+# Make sure all files in workspace are fresh
+#
+TEMP_ALL_FILES=$(JDK_TOPDIR)/temp_filelist
+$(TEMP_ALL_FILES): $(JDK_TOPDIR)/Codemgr_wsdata/nametable
+ $(prep-target)
+ @$(CUT) -d' ' -f1 $< \
+ | $(GREP) -v '^VERSION' \
+ | $(GREP) -v '^deleted_files' \
+ | $(GREP) -v '^Codemgr_wsdata' > $@
+
+sccs_get: $(TEMP_ALL_FILES)
+ @$(PRINTF) "Workspace has %d files\n" `$(CAT) $< | $(WC) -l`
+ @count=0; \
+ for i in `$(CAT) $<` ; do \
+ f=$(JDK_TOPDIR)/$$i; \
+ count=`$(EXPR) $$count '+' 1`; \
+ if [ `$(EXPR) $$count '%' 100` = 0 ] ; then \
+ $(PRINTF) "\rChecked $$count files"; \
+ fi; \
+ if [ ! -f $$f ] ; then \
+ $(PRINTF) "\r$(SCCS_GET) $$f\n"; \
+ (cd `$(DIRNAME) $$f` && $(SCCS_GET) `$(BASENAME) $$f`); \
+ elif /usr/bin/test $$f -ot `$(DIRNAME) $$f`/SCCS/s.`$(BASENAME) $$f` ; then \
+ $(PRINTF) "\r$(SCCS_GET) $$f\n"; \
+ (cd `$(DIRNAME) $$f` && $(SCCS_GET) `$(BASENAME) $$f`); \
+ fi; \
+ done; \
+ $(PRINTF) "\rChecked $$count files\n"
+
+#
+# Phonies to avoid accidents.
+#
+.PHONY: sccs_get
+
+endif
diff --git a/jdk/make/common/Rules.gmk b/jdk/make/common/Rules.gmk
new file mode 100644
index 0000000..6fb7ca1
--- /dev/null
+++ b/jdk/make/common/Rules.gmk
@@ -0,0 +1,335 @@
+#
+# Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+#
+# Rules shared by all Java makefiles.
+#
+# Used to apply to source file $<, checks code conventions, issues warnings.
+define check-conventions
+ if [ "$(CONVENTION_WATCH)" = "true" ] ; then \
+ if [ "`$(CAT) -n -v -t $< | $(EGREP) -v '\@\(\#\)' | $(EGREP) '\^[MLI]'`" != "" ] ; then \
+ $(ECHO) "WARNING: File contains tabs, ^M, or ^L characters: $<"; \
+ if [ "$(CONVENTION_DETAILS)" = "true" ] ; then \
+ $(CAT) -n -v -t $< | $(EGREP) -v '\@\(\#\)' | $(EGREP) '\^[MLI]' ; \
+ fi; \
+ fi; \
+ fi
+endef
+
+# Make sure the default rule is all
+rules_default_rule: all
+
+#
+# Directory set up. (Needed by deploy workspace)
+#
+$(CLASSDESTDIR) $(CLASSHDRDIR) $(OBJDIR) $(OUTPUTDIR) $(BINDIR) $(LIBDIR) $(LIBDIR)/$(LIBARCH) $(TEMPDIR) $(EXTDIR):
+ $(MKDIR) -p $@
+
+#
+# All source tree areas for java/properties files (a few may be closed)
+#
+ifdef OPENJDK
+ ALL_CLASSES_SRC = $(SHARE_SRC)/classes $(PLATFORM_SRC)/classes
+else
+ ALL_CLASSES_SRC = \
+ $(CLOSED_SHARE_SRC)/classes $(CLOSED_PLATFORM_SRC)/classes \
+ $(SHARE_SRC)/classes $(PLATFORM_SRC)/classes
+endif
+
+#
+# If AUTO_FILES_PROPERTIES_DIRS used, automatically find properties files
+#
+ifdef AUTO_FILES_PROPERTIES_DIRS
+ AUTO_FILES_PROPERTIES_FILTERS1 = $(SCM_DIRs) 'X-*' '*-X-*' ',*'
+ AUTO_FILES_PROPERTIES_FILTERS1 += $(AUTO_PROPERTIES_PRUNE)
+ FILES_properties_find_filters1 = $(AUTO_FILES_PROPERTIES_FILTERS1:%=-name % -prune -o)
+ FILES_properties_auto1 := \
+ $(shell \
+ for dir in $(ALL_CLASSES_SRC) ; do \
+ if [ -d $$dir ] ; then \
+ ( $(CD) $$dir; \
+ for sdir in $(AUTO_FILES_PROPERTIES_DIRS); do \
+ if [ -d $$sdir ] ; then \
+ $(FIND) $$sdir $(FILES_properties_find_filters1) \
+ -name '*.properties' -print ; \
+ fi ; \
+ done \
+ ); \
+ fi; \
+ done \
+ )
+else
+ FILES_properties_auto1 =
+endif # AUTO_FILES_PROPERTIES_DIRS
+
+# Add any automatically found properties files to the properties file list
+FILES_properties += $(FILES_properties_auto1)
+
+#
+# Get Resources help
+#
+include $(JDK_TOPDIR)/make/common/internal/Resources.gmk
+
+#
+# Compiling .java files.
+#
+
+#
+# Automatically add to FILES_java if AUTO_FILES_JAVA_DIRS is defined
+#
+# There are two basic types of sources, normal source files and the
+# generated ones. The Normal sources will be located in:
+# $(ALL_CLASSES_SRC)
+# The generated sources, which might show up late to dinner, are at:
+# $(GENSRCDIR)
+# and since they could be generated late, we need to be careful that
+# we look for these sources late and not use the ':=' assignment which
+# might miss their generation.
+
+ifdef AUTO_FILES_JAVA_DIRS
+ # Filter out these files or directories
+ AUTO_FILES_JAVA_SOURCE_FILTERS1 = $(SCM_DIRs) 'X-*' '*-X-*' '*-template.java' ',*'
+ AUTO_FILES_JAVA_SOURCE_FILTERS2 =
+ AUTO_FILES_JAVA_SOURCE_FILTERS1 += $(AUTO_JAVA_PRUNE)
+ AUTO_FILES_JAVA_SOURCE_FILTERS2 += $(AUTO_JAVA_PRUNE)
+
+ # First list is the normal sources that should always be there,
+ # by using the ':=', which means we do this processing once.
+ FILES_java_find_filters1 = $(AUTO_FILES_JAVA_SOURCE_FILTERS1:%=-name % -prune -o)
+ FILES_java_auto1 := \
+ $(shell \
+ for dir in $(ALL_CLASSES_SRC) ; do \
+ if [ -d $$dir ] ; then \
+ ( $(CD) $$dir; \
+ for sdir in $(AUTO_FILES_JAVA_DIRS); do \
+ if [ -d $$sdir ] ; then \
+ $(FIND) $$sdir $(FILES_java_find_filters1) \
+ -name '*.java' -print ; \
+ fi ; \
+ done \
+ ); \
+ fi; \
+ done \
+ )
+ # Second list is the generated sources that should be rare, but will likely
+ # show up late and we need to look for them at the last minute, so we
+ # cannot use the ':=' assigment here. But if this gets expanded multiple
+ # times, the if tests should make them relatively cheap.
+ FILES_java_find_filters2 = $(AUTO_FILES_JAVA_SOURCE_FILTERS2:%=-name % -prune -o)
+ FILES_java_auto2 = \
+ $(shell \
+ for dir in $(GENSRCDIR); do \
+ if [ -d $$dir ] ; then \
+ ( $(CD) $$dir; \
+ for sdir in $(AUTO_FILES_JAVA_DIRS); do \
+ if [ -d $$sdir ] ; then \
+ $(FIND) $$sdir $(FILES_java_find_filters2) \
+ -name '*.java' -print ; \
+ fi ; \
+ done \
+ ); \
+ fi; \
+ done \
+ )
+else
+ FILES_java_auto1 =
+ FILES_java_auto2 =
+endif
+
+# Add all found java sources to FILES_java macro (if AUTO_FILES_JAVA_DIRS used)
+FILES_java += $(FILES_java_auto1) $(FILES_java_auto2)
+
+# File that will hold java source names that need compiling
+JAVA_SOURCE_LIST=$(TEMPDIR)/.classes.list
+
+# Add a java source to the list
+define add-java-file
+$(ECHO) "$?" >> $(JAVA_SOURCE_LIST)
+$(check-conventions)
+endef
+
+ifdef DEMOS
+$(CLASSDESTDIR)/%.class: $(SOURCEPATH)/%.java
+ @$(add-java-file)
+#Redirect zh_HK java files to tmp directory which created from zh_TW
+#$(CLASSDESTDIR)/%_zh_HK.class: $(JDK_L10N_TMP_OUTPUTDIR)/%_zh_HK.java
+# @$(add-java-file)
+else
+
+#
+# Rules for closed files
+#
+# If filenames are duplicated between open/closed workspaces, prefer
+# the closed files.
+#
+# Rule ordering in this Makefile is important: some targets depend
+# on closed files replacing open ones, and thus the closed file rules
+# must be found before the open ones.
+#
+# Don't reorder without consulting teams that depend on this behavior.
+#
+ifndef OPENJDK
+$(CLASSDESTDIR)/%.class: $(CLOSED_PLATFORM_SRC)/classes/%.java
+ @$(add-java-file)
+$(CLASSDESTDIR)/%.class: $(CLOSED_SHARE_SRC)/classes/%.java
+ @$(add-java-file)
+endif
+
+$(CLASSDESTDIR)/%.class: $(GENSRCDIR)/%.java
+ @$(add-java-file)
+$(CLASSDESTDIR)/%.class: $(PLATFORM_SRC)/classes/%.java
+ @$(add-java-file)
+$(CLASSDESTDIR)/%.class: $(SHARE_SRC)/classes/%.java
+ @$(add-java-file)
+
+#Redirect zh_HK java files to tmp directory which created from zh_TW
+$(CLASSDESTDIR)/%_zh_HK.class: $(JDK_L10N_TMP_OUTPUTDIR)/%_zh_HK.java
+ @$(add-java-file)
+endif
+
+# List of class files needed
+FILES_class = $(FILES_java:%.java=$(CLASSDESTDIR)/%.class)
+
+# Got to include exported files.
+FILES_class += $(FILES_export:%.java=$(CLASSDESTDIR)/%.class)
+
+# Construct list of java sources we need to compile
+source_list_prime:
+ @$(MKDIR) -p $(TEMPDIR)
+# Note that we slip resources in so that compiled properties files get created:
+$(JAVA_SOURCE_LIST) : source_list_prime resources $(FILES_class)
+ @$(TOUCH) $@
+
+.delete.classlist:
+ @$(RM) $(JAVA_SOURCE_LIST)
+
+# Make sure all newer sources are compiled (in a batch)
+classes : $(CLASSES_INIT) .delete.classlist .compile.classlist
+
+.compile.classlist : $(JAVA_SOURCE_LIST)
+ @$(MKDIR) -p $(CLASSDESTDIR)
+ @if [ `$(CAT) $(JAVA_SOURCE_LIST) | $(WC) -l` -ge 1 ] ; then \
+ $(ECHO) "# Java sources to be compiled: (listed in file $(JAVA_SOURCE_LIST))"; \
+ $(CAT) $(JAVA_SOURCE_LIST); \
+ $(ECHO) "# Running javac:"; \
+ $(ECHO) $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
+ $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
+ fi
+ @$(java-vm-cleanup)
+
+clobber clean::
+ $(RM) $(JAVA_SOURCE_LIST)
+
+ifndef DONT_CLOBBER_CLASSES
+ ifndef PACKAGE
+ DONT_CLOBBER_CLASSES = true
+ else
+ DONT_CLOBBER_CLASSES = false
+ endif
+endif
+
+packages.clean:
+ifeq ($(DONT_CLOBBER_CLASSES),false)
+ ifdef AUTO_FILES_JAVA_DIRS
+ @for sdir in $(AUTO_FILES_JAVA_DIRS); do \
+ $(ECHO) "$(RM) -r $(CLASSDESTDIR)/$$sdir"; \
+ $(RM) -r $(CLASSDESTDIR)/$$sdir; \
+ done
+ else
+ $(RM) -r $(CLASSDESTDIR)/$(PKGDIR)
+ endif
+endif
+
+ifdef DEMOS
+classes.clean:
+ $(RM) -r $(DEMODST) $(CLASSDESTDIR)
+else
+classes.clean: packages.clean
+ $(RM) $(JAVA_SOURCE_LIST)
+endif
+
+#
+# C and C++ make dependencies
+#
+include $(JDK_TOPDIR)/make/common/internal/NativeCompileRules.gmk
+
+#
+# Running Javah to generate stuff into CClassHeaders.
+#
+
+ifdef FILES_export
+
+CLASSES.export = $(subst /,.,$(FILES_export:%.java=%))
+CLASSES.export += $(subst /,.,$(FILES_export2:%.java=%))
+CLASSES.export += $(subst /,.,$(FILES_export3:%.java=%))
+CLASSES_export = $(FILES_export:%.java=$(CLASSDESTDIR)/%.class)
+CLASSES_export += $(FILES_export2:%.java=$(CLASSDESTDIR)/%.class)
+CLASSES_export += $(FILES_export3:%.java=$(CLASSDESTDIR)/%.class)
+
+# Fix when deploy workspace makefiles don't depend on this name
+#CLASSHDR_DOTFILE=$(CLASSHDRDIR)/.classheaders
+
+CLASSHDR_DOTFILE=$(OBJDIR)/.class.headers.$(ARCH)
+
+classheaders: classes $(CLASSHDR_DOTFILE)
+
+$(CLASSHDR_DOTFILE): $(CLASSES_export)
+ $(prep-target)
+ @$(ECHO) "# Running javah:"
+ $(JAVAH_CMD) -d $(CLASSHDRDIR)/ \
+ $(CLASSES.export) $(subst $$,\$$,$(EXPORTED_inner))
+ @$(java-vm-cleanup)
+ @$(TOUCH) $@
+
+classheaders.clean:
+ $(RM) $(CLASSHDR_DOTFILE)
+ $(RM) -r $(CLASSHDRDIR)
+
+else # FILES_export
+
+classheaders: classes
+
+classheaders.clean:
+
+endif # FILES_export
+
+clean clobber:: classheaders.clean classes.clean .delete.classlist
+
+#
+# Default dependencies
+#
+
+all: build
+
+build: classheaders
+
+default: all
+
+.PHONY: all build clean clobber \
+ .delete.classlist classes .compile.classlist classes.clean \
+ classheaders classheaders.clean \
+ batch_compile
+
diff --git a/jdk/make/common/Sanity.gmk b/jdk/make/common/Sanity.gmk
new file mode 100644
index 0000000..a4ae86f
--- /dev/null
+++ b/jdk/make/common/Sanity.gmk
@@ -0,0 +1,124 @@
+#
+# Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Settings and rules to validate the JDK build environment.
+
+.PHONY: \
+ pre-sanity \
+ sanity \
+ sanity-base \
+ sanity-docs \
+ sanity-images \
+ post-sanity-all \
+ post-sanity-docs \
+ post-sanity-images \
+ sanity-all
+
+# Bring in common sanity check rules
+include $(JDK_MAKE_SHARED_DIR)/Sanity.gmk
+
+# EXTERNALSANITYCONTROL means that this workspace build is being controlled by
+# the control workspace, and that workspace is managing what is done to the sanity
+# check files, and this sanity check run is only appending to those files.
+
+pre-sanity: $(SANITY_FILES)
+ifndef EXTERNALSANITYCONTROL
+ @$(RM) $(SANITY_FILES)
+endif
+
+sanity-base: pre-sanity \
+ sane-settings \
+ sane-insane \
+ sane-make \
+ sane-build_number \
+ sane-os_version \
+ sane-makeflags \
+ sane-alt_outputdir \
+ sane-outputdir \
+ sane-devtools_path \
+ sane-compiler_path \
+ sane-unixcommand_path \
+ sane-usrbin_path \
+ sane-math_iso \
+ sane-libCrun \
+ sane-unixccs_path \
+ sane-odbcdir \
+ sane-msdevtools_path \
+ sane-dxsdk \
+ sane-compiler \
+ sane-cacerts \
+ sane-ant_version \
+ sane-findbugs_version \
+ sane-zip_version \
+ sane-msvcrt_path
+
+# The rules sanity-* have a one-to-one correspondence with the major targets
+# Each sanity-* rule should have no body to ensure that the post-sanity-* is the
+# last rule executed. The pre-sanity rule should be the first dependency. This design
+# expects the execution of pre-sanity only once per gnumake command invocation,
+# thus, info written to ERROR_FILE and/or WARNING_FILE will not be removed by subsequent
+# targets in the same 'gnumake' command line.
+
+sanity-all:: sanity-base \
+ sane-classpath \
+ sane-java_home \
+ sane-fonts \
+ sane-binary-plugs \
+ sane-variant \
+ sane-ld_library_path \
+ sane-ld_library_path_64 \
+ sane-ld_options \
+ sane-ld_run_path \
+ sane-alt_bootdir \
+ sane-bootdir \
+ sane-alsa-headers
+
+ifdef OPENJDK
+sanity-all:: sane-freetype
+endif
+
+
+# Always check cups header paths on solaris & linux
+ifneq ($(PLATFORM), windows)
+sanity-all:: \
+ sane-cups
+endif
+
+# Always check hotspot binary paths even if we are building them from scratch
+HOTSPOT_IMPORT_CHECK=true
+ifeq ($(HOTSPOT_IMPORT_CHECK),true)
+sanity-all:: \
+ sane-hotspot_binaries \
+ sane-hotspot_import
+endif
+
+sanity-docs: sanity-base sane-docs_import
+
+sanity-images:: sanity-base
+
+sanity:: sanity-all post-sanity
+
+# this should be the last rule in any target's sanity rule.
+post-sanity post-sanity-all post-sanity-docs post-sanity-images: sane-lastrule
diff --git a/jdk/make/common/internal/BinaryPlugs.gmk b/jdk/make/common/internal/BinaryPlugs.gmk
new file mode 100644
index 0000000..c4f1060
--- /dev/null
+++ b/jdk/make/common/internal/BinaryPlugs.gmk
@@ -0,0 +1,396 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+########################################################################
+
+# Definitions for openjdk plugs (used by both import and export)
+
+# Names of native shared libraries
+
+PLUG_JSOUND_LIBRARY=$(LIB_PREFIX)jsoundhs.$(LIBRARY_SUFFIX)
+PLUG_LIBRARY_NAMES = \
+ $(PLUG_JSOUND_LIBRARY)
+
+# Sub-directory where native shared libraries are located (e.g. jre/bin or...)
+
+PLUG_LOCATION_SUBDIR=$(ARCH_VM_SUBDIR)
+
+# Explicit classfile lists
+
+# WARNING: These classlists will not work with pattern rules, only used in
+# shell commands.
+# The \$$ patterns will fail in pattern rules, which want $$,
+# but the $$ fails in shell commands.
+# The shell commands are more important.
+# Also, the $1 pattern in these names causes problems with the
+# GNU make define feature, so you can't use these in define's.
+
+PLUG_JMF_CLASS_NAMES = \
+com/sun/jmx/snmp/SnmpDataTypeEnums.class \
+com/sun/jmx/snmp/SnmpDefinitions.class \
+com/sun/jmx/snmp/SnmpOid.class \
+com/sun/jmx/snmp/SnmpOidDatabase.class \
+com/sun/jmx/snmp/SnmpOidDatabaseSupport.class \
+com/sun/jmx/snmp/SnmpOidRecord.class \
+com/sun/jmx/snmp/SnmpOidTable.class \
+com/sun/jmx/snmp/SnmpOidTableSupport.class \
+com/sun/jmx/snmp/SnmpParameters.class \
+com/sun/jmx/snmp/SnmpPduPacket.class \
+com/sun/jmx/snmp/SnmpPeer.class \
+com/sun/jmx/snmp/SnmpTimeticks.class \
+com/sun/jmx/snmp/SnmpVarBind.class \
+com/sun/jmx/snmp/SnmpVarBindList.class \
+com/sun/jmx/snmp/Timestamp.class \
+com/sun/jmx/snmp/daemon/SendQ.class \
+com/sun/jmx/snmp/daemon/SnmpInformRequest.class \
+com/sun/jmx/snmp/daemon/SnmpQManager.class \
+com/sun/jmx/snmp/daemon/SnmpRequestCounter.class \
+com/sun/jmx/snmp/daemon/SnmpResponseHandler.class \
+com/sun/jmx/snmp/daemon/SnmpSendServer.class \
+com/sun/jmx/snmp/daemon/SnmpSession.class \
+com/sun/jmx/snmp/daemon/SnmpSocket.class \
+com/sun/jmx/snmp/daemon/SnmpTimerServer.class \
+com/sun/jmx/snmp/daemon/WaitQ.class
+
+PLUG_SOUND_CLASS_NAMES = \
+com/sun/media/sound/AbstractPlayer.class \
+com/sun/media/sound/CircularBuffer.class \
+com/sun/media/sound/HeadspaceInstrument.class \
+com/sun/media/sound/HeadspaceMixer\$$1.class \
+com/sun/media/sound/HeadspaceMixer\$$MidiLine.class \
+com/sun/media/sound/HeadspaceMixer\$$MidiLineInfo.class \
+com/sun/media/sound/HeadspaceMixer\$$MixerInfo.class \
+com/sun/media/sound/HeadspaceMixer\$$MixerReverbControl\$$MixerReverbType.class \
+com/sun/media/sound/HeadspaceMixer\$$MixerReverbControl.class \
+com/sun/media/sound/HeadspaceMixer.class \
+com/sun/media/sound/HeadspaceMixerProvider.class \
+com/sun/media/sound/HeadspaceSample.class \
+com/sun/media/sound/HeadspaceSoundbank.class \
+com/sun/media/sound/HsbParser.class \
+com/sun/media/sound/MixerClip\$$1.class \
+com/sun/media/sound/MixerClip\$$MixerClipApplyReverbControl.class \
+com/sun/media/sound/MixerClip\$$MixerClipGainControl.class \
+com/sun/media/sound/MixerClip\$$MixerClipMuteControl.class \
+com/sun/media/sound/MixerClip\$$MixerClipPanControl.class \
+com/sun/media/sound/MixerClip\$$MixerClipSampleRateControl.class \
+com/sun/media/sound/MixerClip.class \
+com/sun/media/sound/MixerMidiChannel.class \
+com/sun/media/sound/MixerSequencer\$$1.class \
+com/sun/media/sound/MixerSequencer\$$ControllerVectorElement.class \
+com/sun/media/sound/MixerSequencer\$$MixerSequencerInfo.class \
+com/sun/media/sound/MixerSequencer\$$RecordingTrack.class \
+com/sun/media/sound/MixerSequencer.class \
+com/sun/media/sound/MixerSequencerProvider.class \
+com/sun/media/sound/MixerSourceLine\$$1.class \
+com/sun/media/sound/MixerSourceLine\$$MixerSourceLineApplyReverbControl.class \
+com/sun/media/sound/MixerSourceLine\$$MixerSourceLineGainControl.class \
+com/sun/media/sound/MixerSourceLine\$$MixerSourceLineMuteControl.class \
+com/sun/media/sound/MixerSourceLine\$$MixerSourceLinePanControl.class \
+com/sun/media/sound/MixerSourceLine\$$MixerSourceLineSampleRateControl.class \
+com/sun/media/sound/MixerSourceLine.class \
+com/sun/media/sound/MixerSynth\$$1.class \
+com/sun/media/sound/MixerSynth\$$MixerSynthInfo.class \
+com/sun/media/sound/MixerSynth\$$SynthReceiver.class \
+com/sun/media/sound/MixerSynth.class \
+com/sun/media/sound/MixerSynthProvider.class \
+com/sun/media/sound/MixerThread.class \
+com/sun/media/sound/RmfFileReader.class \
+com/sun/media/sound/SimpleInputDevice\$$1.class \
+com/sun/media/sound/SimpleInputDevice\$$InputDeviceDataLine.class \
+com/sun/media/sound/SimpleInputDevice\$$InputDevicePort.class \
+com/sun/media/sound/SimpleInputDevice\$$InputDevicePortInfo.class \
+com/sun/media/sound/SimpleInputDevice.class \
+com/sun/media/sound/SimpleInputDeviceProvider\$$1.class \
+com/sun/media/sound/SimpleInputDeviceProvider\$$InputDeviceInfo.class \
+com/sun/media/sound/SimpleInputDeviceProvider.class
+
+PLUG_AWT_CLASS_NAMES = \
+java/awt/color/CMMException.class \
+java/awt/color/ColorSpace.class \
+java/awt/color/ICC_ColorSpace.class \
+java/awt/color/ICC_Profile\$$1.class \
+java/awt/color/ICC_Profile\$$2.class \
+java/awt/color/ICC_Profile\$$3.class \
+java/awt/color/ICC_Profile.class \
+java/awt/color/ICC_ProfileGray.class \
+java/awt/color/ICC_ProfileRGB.class \
+java/awt/image/BandedSampleModel.class \
+java/awt/image/ColorConvertOp.class \
+java/awt/image/ComponentSampleModel.class \
+java/awt/image/DataBuffer\$$1.class \
+java/awt/image/DataBuffer.class \
+java/awt/image/DataBufferByte.class \
+java/awt/image/DataBufferInt.class \
+java/awt/image/DataBufferShort.class \
+java/awt/image/DataBufferUShort.class \
+java/awt/image/MultiPixelPackedSampleModel.class \
+java/awt/image/Raster.class \
+java/awt/image/RenderedImage.class \
+java/awt/image/SampleModel.class \
+java/awt/image/SinglePixelPackedSampleModel.class \
+java/awt/image/WritableRaster.class \
+java/awt/image/WritableRenderedImage.class \
+java/awt/image/renderable/ContextualRenderedImageFactory.class \
+java/awt/image/renderable/ParameterBlock.class \
+java/awt/image/renderable/RenderContext.class \
+java/awt/image/renderable/RenderableImage.class \
+java/awt/image/renderable/RenderableImageOp.class \
+java/awt/image/renderable/RenderableImageProducer.class \
+java/awt/image/renderable/RenderedImageFactory.class
+
+# Class list temp files (used by both import and export of plugs)
+
+PLUG_TEMPDIR=$(ABS_TEMPDIR)/plugs
+PLUG_CLASS_AREAS = jmf sound awt
+PLUG_CLISTS = $(PLUG_CLASS_AREAS:%=$(PLUG_TEMPDIR)/%.clist)
+
+# Create jargs file command
+
+define plug-create-jargs
+@$(prep-target)
+$(SED) -e "s@^@-C $(CLASSDESTDIR) @" $< > $@
+endef # plug-create-clist-jargs
+
+# Create clist (class name list) and jargs file (input to jar)
+# Need these files to avoid long command lines which fail on some systems.
+
+$(PLUG_TEMPDIR)/jmf.clist:
+ @$(prep-target)
+ @for i in $(PLUG_JMF_CLASS_NAMES) ; do \
+ $(ECHO) "$$i" >> $@; \
+ done
+$(PLUG_TEMPDIR)/sound.clist:
+ @$(prep-target)
+ @for i in $(PLUG_SOUND_CLASS_NAMES) ; do \
+ $(ECHO) "$$i" >> $@ ; \
+ done
+$(PLUG_TEMPDIR)/awt.clist:
+ @$(prep-target)
+ @for i in $(PLUG_AWT_CLASS_NAMES) ; do \
+ $(ECHO) "$$i" >> $@ ; \
+ done
+$(PLUG_TEMPDIR)/all.clist: $(PLUG_CLISTS)
+ @$(prep-target)
+ $(CAT) $(PLUG_CLISTS) > $@
+$(PLUG_TEMPDIR)/jmf.jargs: $(PLUG_TEMPDIR)/jmf.clist
+ $(plug-create-jargs)
+$(PLUG_TEMPDIR)/sound.jargs: $(PLUG_TEMPDIR)/sound.clist
+ $(plug-create-jargs)
+$(PLUG_TEMPDIR)/awt.jargs: $(PLUG_TEMPDIR)/awt.clist
+ $(plug-create-jargs)
+$(PLUG_TEMPDIR)/all.jargs: $(PLUG_TEMPDIR)/all.clist
+ $(plug-create-jargs)
+
+#
+# Specific to OPENJDK import of binary plugs
+#
+
+ifdef OPENJDK
+
+# Import
+
+PLUG_IMPORT_DIR=$(BINARY_PLUGS_PATH)
+PLUG_IMPORT_JARFILE=$(BINARY_PLUGS_JARFILE)
+
+# Import file command
+
+define import-binary-plug-file
+@$(ECHO) "PLUG IMPORT: $(@F)"
+$(install-file)
+endef # import-binary-plug-file
+
+# Import classes command
+
+define import-binary-plug-classes
+@$(MKDIR) -p $(CLASSDESTDIR)
+@$(CAT) $1 | $(SED) -e 's/^/PLUG IMPORT: /'
+($(CD) $(CLASSDESTDIR) && $(BOOT_JAR_CMD) xf $(PLUG_IMPORT_JARFILE) @$1)
+endef # import-binary-plug-classes
+
+# Import specific area classes (the classes are always created)
+
+import-binary-plug-jmf-classes: $(PLUG_IMPORT_JARFILE) $(PLUG_TEMPDIR)/jmf.clist
+ $(call import-binary-plug-classes,$(PLUG_TEMPDIR)/jmf.clist)
+import-binary-plug-sound-classes: $(PLUG_IMPORT_JARFILE) $(PLUG_TEMPDIR)/sound.clist
+ $(call import-binary-plug-classes,$(PLUG_TEMPDIR)/sound.clist)
+import-binary-plug-awt-classes: $(PLUG_IMPORT_JARFILE) $(PLUG_TEMPDIR)/awt.clist
+ $(call import-binary-plug-classes,$(PLUG_TEMPDIR)/awt.clist)
+
+# Import all classes from the jar file
+
+import-binary-plug-jar: \
+ import-binary-plug-jmf-classes \
+ import-binary-plug-sound-classes \
+ import-binary-plug-awt-classes
+
+# Import native libraries
+
+$(LIB_LOCATION)/$(PLUG_JSOUND_LIBRARY): \
+ $(PLUG_IMPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_JSOUND_LIBRARY)
+ $(import-binary-plug-file)
+
+# Rules only used by lower level makefiles
+
+import-binary-plug-jsound-library: \
+ $(LIB_LOCATION)/$(PLUG_JSOUND_LIBRARY)
+
+# Binary plug start/complete messages
+
+import-binary-plugs-started:
+ @$(ECHO) "BinaryPlugs import started: `date`"
+ @$(ECHO) "BINARY_PLUGS_PATH=$(BINARY_PLUGS_PATH)"
+import-binary-plugs-completed:
+ @$(ECHO) "BinaryPlugs import completed: `date`"
+
+# Import lib files (only if they don't exist already)
+
+import-binary-plugs-libs: \
+ $(PLUG_LIBRARY_NAMES:%=$(LIB_LOCATION)/%)
+
+# Import everything
+
+import-binary-plugs: \
+ import-binary-plugs-started \
+ import-binary-plugs-libs \
+ import-binary-plug-jar \
+ import-binary-plugs-completed
+
+# All these targets are phony (no filenames)
+
+.PHONY: import-binary-plugs-started \
+ import-binary-plugs-completed \
+ import-binary-plugs-libs \
+ import-binary-plugs \
+ import-binary-plug-jar \
+ import-binary-plug-jmf-classes \
+ import-binary-plug-sound-classes \
+ import-binary-plug-awt-classes \
+ import-binary-plug-jsound-library
+
+else # !OPENJDK
+
+#
+# Specific to exporting binary plugs for OPENJDK (e.g. OPENJDK is NOT defined)
+#
+
+# Export names (See make/common/Defs.gmk for BINARY_PLUGS_JARNAME definition)
+
+PLUG_EXPORT_DIRNAME=openjdk-binary-plugs-image
+PLUG_EXPORT_DIR=$(OUTPUTDIR)/$(PLUG_EXPORT_DIRNAME)
+PLUG_EXPORT_JARFILE=$(PLUG_EXPORT_DIR)/jre/lib/$(BINARY_PLUGS_JARNAME)
+
+# Export file command
+
+define export-binary-plug-file
+@$(ECHO) "PLUG EXPORT: $(@F)"
+$(install-file)
+endef # export-binary-plug-file
+
+# OpenJDK Binary Plug License
+
+$(PLUG_EXPORT_DIR)/LICENSE: $(CLOSED_SHARE_SRC)/doc/openjdk/binary-plugs/LICENSE
+ $(export-binary-plug-file)
+export-binary-plugs-license: $(PLUG_EXPORT_DIR)/LICENSE
+
+# Create jar file of plug classes (always created)
+
+$(PLUG_EXPORT_JARFILE): $(PLUG_TEMPDIR)/all.clist $(PLUG_TEMPDIR)/all.jargs
+ @$(prep-target)
+ @$(ECHO) "PLUG EXPORT: $(@F)"
+ @$(CAT) $(PLUG_TEMPDIR)/all.clist | $(SED) -e 's/^/PLUG EXPORT: /'
+ $(BOOT_JAR_CMD) cf $@ @$(PLUG_TEMPDIR)/all.jargs
+export-binary-plugs-jar: $(PLUG_EXPORT_JARFILE)
+
+# Export native libraries
+
+$(PLUG_EXPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_JSOUND_LIBRARY): \
+ $(LIB_LOCATION)/$(PLUG_JSOUND_LIBRARY)
+ $(export-binary-plug-file)
+
+# Export binary plug start/complete messages
+
+export-binary-plugs-started:
+ @$(ECHO) "BinaryPlugs export started: `date`"
+ @$(ECHO) "PLUG_EXPORT_DIR=$(PLUG_EXPORT_DIR)"
+ $(RM) -r $(PLUG_EXPORT_DIR)
+ @$(MKDIR) -p $(PLUG_EXPORT_DIR)
+ @$(MKDIR) -p $(PLUG_TEMPDIR)
+export-binary-plugs-completed:
+ @$(RM) -r $(PLUG_TEMPDIR)
+ @$(ECHO) "BinaryPlugs export completed: `date`"
+
+# Export lib files (only if they don't exist already)
+
+export-binary-plugs-libs: \
+ $(PLUG_LIBRARY_NAMES:%=$(PLUG_EXPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/%)
+
+# Export everything
+
+export-binary-plugs: \
+ export-binary-plugs-started \
+ export-binary-plugs-libs \
+ export-binary-plugs-license \
+ export-binary-plugs-jar \
+ export-binary-plugs-completed
+
+# All these targets are phony (no filenames)
+
+.PHONY: export-binary-plugs-started \
+ export-binary-plugs-license \
+ export-binary-plugs-jar \
+ export-binary-plugs-libs \
+ export-binary-plugs-completed \
+ export-binary-plugs
+
+# Rules that test the export and import of plugs (only when you can export)
+
+TEST_OUTPUTDIR=$(ABS_OUTPUTDIR)/../$(PLATFORM)-$(ARCH)-testing-plugs
+TEST_PLUG_COPY=$(TEST_OUTPUTDIR)/$(PLUG_EXPORT_DIRNAME)-testcopy
+
+# Run export-binary-plugs first, then use this rule to test an import
+
+test-binary-plugs: $(TEST_PLUG_COPY)
+ $(RM) -r $(TEST_OUTPUTDIR)/$(PLUG_EXPORT_DIRNAME)
+ $(MKDIR) -p $(TEST_OUTPUTDIR)
+ @$(ECHO) "Testing import of plugs"
+ ($(CD) $(JDK_TOPDIR)/make && \
+ $(MAKE) OPENJDK=true \
+ ALT_OUTPUTDIR=$(TEST_OUTPUTDIR) \
+ ALT_JDK_IMPORT_PATH=$(JDK_IMPORT_PATH) \
+ ALT_BINARY_PLUGS_PATH=$(TEST_PLUG_COPY) \
+ import-binary-plugs )
+ $(RM) -r $(TEST_OUTPUTDIR)
+ @$(ECHO) "Testing of plugs was successful"
+
+$(TEST_PLUG_COPY):
+ @$(ECHO) "Creating test plug copy"
+ $(RM) -r $@
+ $(MKDIR) -p $(@D)
+ $(CP) -r -p $(PLUG_EXPORT_DIR) $@
+
+.PHONY: test-binary-plugs
+
+endif # !OPENJDK
+
diff --git a/jdk/make/common/internal/Defs-corba.gmk b/jdk/make/common/internal/Defs-corba.gmk
new file mode 100644
index 0000000..b265826
--- /dev/null
+++ b/jdk/make/common/internal/Defs-corba.gmk
@@ -0,0 +1,63 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# The specific packages that come from or go to rt.jar and tools.jar
+IMPORT_RT_PACKAGES += \
+ org/omg/CORBA \
+ org/omg/CORBA_2_3 \
+ org/omg/CosNaming \
+ org/omg/Dynamic \
+ org/omg/DynamicAny \
+ org/omg/IOP \
+ org/omg/Messaging \
+ org/omg/PortableInterceptor \
+ org/omg/PortableServer \
+ org/omg/SendingContext \
+ org/omg/stub/java/rmi \
+ javax/rmi \
+ javax/rmi/CORBA \
+ javax/activity \
+ javax/transaction \
+ com/sun/corba/se/GiopIDL \
+ com/sun/corba/se/PortableActivationIDL \
+ com/sun/corba/se/impl \
+ com/sun/corba/se/internal \
+ com/sun/corba/se/org/omg/CORBA \
+ com/sun/corba/se/pept \
+ com/sun/corba/se/spi \
+ com/sun/org/omg/CORBA \
+ com/sun/org/omg/SendingContext \
+ com/sun/tools/corba/se/logutil \
+ sun/corba \
+ sun/rmi/rmic/iiop
+
+IMPORT_TOOLS_PACKAGES += \
+ com/sun/tools/corba/se/idl \
+ sun/rmi/rmic/iiop
+
+IMPORT_CORBA_BINARIES += \
+ lib/orb.idl \
+ lib/ir.idl
+
diff --git a/jdk/make/common/internal/Defs-jaxp.gmk b/jdk/make/common/internal/Defs-jaxp.gmk
new file mode 100644
index 0000000..5649cbb
--- /dev/null
+++ b/jdk/make/common/internal/Defs-jaxp.gmk
@@ -0,0 +1,53 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# The specific packages that come from or go to rt.jar and tools.jar
+IMPORT_RT_PACKAGES += \
+ org/w3c/dom \
+ org/xml/sax \
+ javax/xml/XMLConstants.class \
+ javax/xml/datatype \
+ javax/xml/namespace \
+ javax/xml/parsers \
+ javax/xml/stream \
+ javax/xml/transform \
+ javax/xml/validation \
+ javax/xml/xpath \
+ com/sun/java_cup \
+ com/sun/org/apache/bcel \
+ com/sun/org/apache/regexp \
+ com/sun/org/apache/xalan \
+ com/sun/org/apache/xerces \
+ com/sun/org/apache/xml/internal/dtm \
+ com/sun/org/apache/xml/internal/res \
+ com/sun/org/apache/xml/internal/resolver \
+ com/sun/org/apache/xml/internal/serialize \
+ com/sun/org/apache/xml/internal/serializer \
+ com/sun/org/apache/xml/internal/utils \
+ com/sun/org/apache/xpath \
+ com/sun/xml/internal/stream
+
+IMPORT_TOOLS_PACKAGES +=
+
diff --git a/jdk/make/common/internal/Defs-jaxws.gmk b/jdk/make/common/internal/Defs-jaxws.gmk
new file mode 100644
index 0000000..9649bd8
--- /dev/null
+++ b/jdk/make/common/internal/Defs-jaxws.gmk
@@ -0,0 +1,60 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# The specific packages that come from or go to rt.jar and tools.jar
+IMPORT_RT_PACKAGES += \
+ META-INF/mailcap.default \
+ META-INF/mimetypes.default \
+ javax/activation \
+ com/sun/activation \
+ javax/xml/bind \
+ javax/xml/soap \
+ javax/xml/ws \
+ javax/jws \
+ javax/annotation \
+ com/sun/istack/internal \
+ com/sun/xml/internal/bind \
+ com/sun/xml/internal/fastinfoset \
+ com/sun/xml/internal/messaging \
+ com/sun/xml/internal/org/jvnet \
+ com/sun/xml/internal/txw2 \
+ com/sun/xml/internal/ws \
+ com/sun/xml/internal/stream/buffer
+NOT_USED_PACKAGES += \
+ com/sun/tools/internal/txw2
+
+IMPORT_TOOLS_PACKAGES += \
+ com/sun/codemodel \
+ com/sun/istack/internal/tools \
+ com/sun/istack/internal/ws \
+ com/sun/xml/internal/rngom \
+ com/sun/xml/internal/xsom \
+ com/sun/xml/internal/dtdparser \
+ com/sun/tools/internal/xjc \
+ com/sun/tools/internal/ws \
+ com/sun/tools/internal/jxc \
+ META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory \
+ META-INF/services/com.sun.tools.xjc.Plugin
+
diff --git a/jdk/make/common/internal/Defs-langtools.gmk b/jdk/make/common/internal/Defs-langtools.gmk
new file mode 100644
index 0000000..4a1444b
--- /dev/null
+++ b/jdk/make/common/internal/Defs-langtools.gmk
@@ -0,0 +1,43 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# The specific packages that come from or go to rt.jar and tools.jar
+
+IMPORT_RT_PACKAGES += \
+ javax/annotation/processing \
+ javax/lang/model \
+ javax/tools
+
+IMPORT_TOOLS_PACKAGES += \
+ com/sun/mirror \
+ com/sun/source \
+ com/sun/tools/apt \
+ com/sun/tools/javac \
+ com/sun/tools/javah \
+ com/sun/tools/javadoc \
+ com/sun/tools/doclets \
+ com/sun/javadoc \
+ sun/tools/javap
+
diff --git a/jdk/make/common/internal/ImportComponents.gmk b/jdk/make/common/internal/ImportComponents.gmk
new file mode 100644
index 0000000..d089f23
--- /dev/null
+++ b/jdk/make/common/internal/ImportComponents.gmk
@@ -0,0 +1,172 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# JDK jars where component classes come from as second choice
+JDK_RT_JAR = $(JDK_IMPORT_PATH)/jre/lib/rt.jar
+JDK_TOOLS_JAR = $(JDK_IMPORT_PATH)/lib/tools.jar
+JDK_RESOURCES_JAR = $(JDK_IMPORT_PATH)/jre/lib/resources.jar
+
+# The specific packages that come from or go to rt.jar and tools.jar
+# IF the component deliverables are not available.
+IMPORT_TOOLS_PACKAGES =
+IMPORT_RT_PACKAGES =
+
+# The following will add to IMPORT_TOOLS_PACKAGES and/or IMPORT_RT_PACKAGES
+ifndef LANGTOOLS_DIST
+ include $(BUILDDIR)/common/internal/Defs-langtools.gmk
+endif
+ifndef CORBA_DIST
+ include $(BUILDDIR)/common/internal/Defs-corba.gmk
+endif
+ifndef JAXP_DIST
+ include $(BUILDDIR)/common/internal/Defs-jaxp.gmk
+endif
+ifndef JAXWS_DIST
+ include $(BUILDDIR)/common/internal/Defs-jaxws.gmk
+endif
+
+# Clean up these lists so empty lists are empty
+IMPORT_TOOLS_PACKAGES := $(strip $(IMPORT_TOOLS_PACKAGES))
+IMPORT_RT_PACKAGES := $(strip $(IMPORT_RT_PACKAGES))
+
+# Relative paths to import component deliverables
+CLASSES_JAR_FILE=lib/classes.jar
+SRC_ZIP_FILE=lib/src.zip
+BIN_ZIP_FILE=lib/bin.zip
+DOC_ZIP_FILE=lib/doc.zip
+
+#################################################################
+# Macros:
+
+# Importing component class files
+define import-one-classes
+@if [ "$($1)" != "" ] ; then \
+ $(ECHO) "Importing classes from component $1"; \
+ $(call Unjar,$2,$($1)/$(CLASSES_JAR_FILE),); \
+fi
+endef
+
+# Importing optional component doc files (for man pages?)
+define import-one-docs
+@if [ "$($1)" != "" -a -f $($1)/$(DOC_ZIP_FILE) ] ; then \
+ $(ECHO) "Importing docs from component $1"; \
+ $(call Unzipper,$2,$($1)/$(DOC_ZIP_FILE)); \
+fi
+endef
+
+# Importing optional component src files (for jdk src.zip and javadoc)
+define import-one-sources
+@if [ "$($1)" != "" ] ; then \
+ $(ECHO) "Importing sources from component $1"; \
+ $(call Unzipper,$2,$($1)/$(SRC_ZIP_FILE)); \
+fi
+endef
+
+# Importing optional component bin files (for install image)
+define import-one-binaries
+@if [ "$($1)" != "" -a -f $($1)/$(BIN_ZIP_FILE) ] ; then \
+ $(ECHO) "Importing binaries from component $1"; \
+ $(call Unzipper,$2,$($1)/$(BIN_ZIP_FILE)); \
+fi
+endef
+
+# Unzip zip file $2 into directory $1 (if $2 exists)
+# Warning: $2 must be absolute path not relative
+define Unzipper
+( \
+ $(MKDIR) -p $1; \
+ $(ECHO) "( $(CD) $1 && $(UNZIP) -o $2 )"; \
+ ( $(CD) $1 && $(UNZIP) -o $2 ) \
+)
+endef
+
+# Unjar directories $3 from jar file $2 into directory $1 (if $2 exists)
+# Warning: $2 must be absolute path not relative
+define Unjar
+( \
+ $(MKDIR) -p $1; \
+ $(ECHO) "( $(CD) $1 && $(BOOT_JAR_CMD) xfv $2 $3 )" ; \
+ ( $(CD) $1 && $(BOOT_JAR_CMD) xfv $2 $3 ) \
+)
+endef
+
+# Import all component sources into directory $1
+define import-component-sources
+$(call import-one-sources,LANGTOOLS_DIST,$1)
+$(call import-one-sources,CORBA_DIST,$1)
+$(call import-one-sources,JAXP_DIST,$1)
+$(call import-one-sources,JAXWS_DIST,$1)
+endef
+
+# Import all component docs into directory $1 (optional)
+define import-component-docs
+$(call import-one-docs,LANGTOOLS_DIST,$1)
+$(call import-one-docs,CORBA_DIST,$1)
+$(call import-one-docs,JAXP_DIST,$1)
+$(call import-one-docs,JAXWS_DIST,$1)
+endef
+
+# Import all component bins into directory $1 (optional)
+define import-component-binaries
+$(call import-one-binaries,LANGTOOLS_DIST,$1)
+$(call import-one-binaries,CORBA_DIST,$1)
+$(call import-one-binaries,JAXP_DIST,$1)
+$(call import-one-binaries,JAXWS_DIST,$1)
+if [ "$(CORBA_DIST)" = "" ] ; then \
+ $(MKDIR) -p $(OUTPUTDIR)/lib ; \
+ ( $(CD) $(JDK_IMPORT_PATH) && $(CP) $(IMPORT_CORBA_BINARIES) $(ABS_OUTPUTDIR)/lib ) ; \
+fi
+endef
+
+# Import all component classes into directory $1
+# Here we special case classes coming from JDK when component not supplied
+define import-component-classes
+$(ECHO) "Import classes from $(JDK_IMPORT_PATH)"
+if [ "$(IMPORT_TOOLS_PACKAGES)" != "" ] ; then \
+ $(call Unjar,$1,$(JDK_RESOURCES_JAR),$(IMPORT_TOOLS_PACKAGES)); \
+ $(call Unjar,$1,$(JDK_TOOLS_JAR),$(IMPORT_TOOLS_PACKAGES)); \
+fi
+if [ "$(IMPORT_RT_PACKAGES)" != "" ] ; then \
+ $(call Unjar,$1,$(JDK_RESOURCES_JAR),$(IMPORT_RT_PACKAGES)); \
+ $(call Unjar,$1,$(JDK_RT_JAR),$(IMPORT_RT_PACKAGES)); \
+fi
+$(call import-one-classes,LANGTOOLS_DIST,$1)
+$(call import-one-classes,CORBA_DIST,$1)
+$(call import-one-classes,JAXP_DIST,$1)
+$(call import-one-classes,JAXWS_DIST,$1)
+endef
+
+# Clean up import files
+define import-component-sources-clean
+$(RM) -r $1
+endef
+define import-component-docs-clean
+$(RM) -r $1
+endef
+define import-component-classes-clean
+$(RM) -r $(IMPORT_TOOLS_PACKAGES:%=$1/%)
+$(RM) -r $(IMPORT_RT_PACKAGES:%=$1/%)
+endef
+
diff --git a/jdk/make/common/internal/NativeCompileRules.gmk b/jdk/make/common/internal/NativeCompileRules.gmk
new file mode 100644
index 0000000..688de97
--- /dev/null
+++ b/jdk/make/common/internal/NativeCompileRules.gmk
@@ -0,0 +1,214 @@
+#
+# Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Native C/C++ Compile Rules
+#
+
+#
+# INCREMENTAL_BUILD: Record the #include file dependencies.
+#
+# NOTE: We build make include files with the suffix
+# $(DEPEND_SUFFIX) on every compilation. These are initially
+# created as temp files just in case a ^C kills it in the middle.
+# Compiler is smart enough to handle ^C and not create the .o file, or
+# is supposed to be that smart, but the .$(DEPEND_SUFFIX) file
+# creation here isn't.
+# These .$(DEPEND_SUFFIX) files are included by Library.gmk and
+# Program.gmk, when they exist (Search for 'make dependencies').
+#
+
+ifeq ($(INCREMENTAL_BUILD),true)
+
+$(OBJDIR)/%.$(DEPEND_SUFFIX): %.c
+ @$(prep-target)
+ @$(ECHO) "Creating $@"
+ @$(RM) $@.temp
+ @$(CC) $(CC_DEPEND) $(CPPFLAGS) $< 2> $(DEV_NULL) | \
+ $(CC_DEPEND_FILTER) > $@.temp
+ @$(MV) $@.temp $@
+
+$(OBJDIR)/%.$(DEPEND_SUFFIX): %.cpp
+ @$(prep-target)
+ @$(ECHO) "Creating $@"
+ @$(RM) $@.temp
+ @$(CXX) $(CC_DEPEND) $(CPPFLAGS) $(CXXFLAGS) $< 2> $(DEV_NULL) | \
+ $(CC_DEPEND_FILTER) > $@.temp
+ @$(MV) $@.temp $@
+
+endif # INCREMENTAL_BUILD
+
+#
+# C, C++, asm files.
+#
+# Normal or parallel compile rule is the same, but batch compiles require
+# we save up the sources files that use the same compile line so that we
+# can do one compile line.
+#
+
+ifneq ($(COMPILE_APPROACH), batch)
+
+$(OBJDIR)/%.$(OBJECT_SUFFIX): %.c
+ @$(prep-target)
+ $(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$@ $(CFLAGS_GPROF) $<
+ @$(check-conventions)
+
+$(OBJDIR)/%.$(OBJECT_SUFFIX): %.cpp
+ @$(prep-target)
+ $(COMPILE.cc) $(CC_OBJECT_OUTPUT_FLAG)$@ $(CFLAGS_GPROF) $<
+ @$(check-conventions)
+
+else
+
+ #
+ # Batch compiling might be faster if the compiler was smart about recognizing
+ # optimization opportunities available when all files are being compiled
+ # the same way. Unfortunately this is rare.
+ # Automatic pre-compiled headers (pch) might be a possibility so we
+ # add any auto pch options here.
+ # So we save all the source files that have the same compile line as the
+ # first file. A normal compile pass is made after the batch compile
+ # to catch anything missed.
+ # If the compilers had a -o option that allowed us to direct where to
+ # write the object files to, then we would not need to save the object
+ # file list or move them from the make directory to the build directory.
+ #
+
+ # Source names
+ COMPILE_LIST.c = $(OBJDIR)/.source_names_c
+ COMPILE_LIST.cpp = $(OBJDIR)/.source_names_cpp
+
+ # Object file list
+ COMPILE_OBJ_LIST.c = $(OBJDIR)/.obj_names_c
+ COMPILE_OBJ_LIST.cpp = $(OBJDIR)/.obj_names_cpp
+
+ # The compile line
+ COMPILE_BATCH.c = $(OBJDIR)/.compile_c
+ COMPILE_BATCH.cpp = $(OBJDIR)/.compile_cpp
+
+ # The compile line for the current target
+ THIS_COMPILE_BATCH.c = $(COMPILE_BATCH.c)-$(@F)
+ THIS_COMPILE_BATCH.cpp = $(COMPILE_BATCH.cpp)-$(@F)
+
+$(OBJDIR)/%.$(OBJECT_SUFFIX): %.c
+ @$(prep-target)
+ @$(ECHO) "$(COMPILE.c) $(CFLAGS_GPROF)" > $(THIS_COMPILE_BATCH.c)
+ @if [ ! -s $(COMPILE_BATCH.c) ] ; then \
+ $(CP) $(THIS_COMPILE_BATCH.c) $(COMPILE_BATCH.c) ; \
+ $(ECHO) $< > $(COMPILE_LIST.c); \
+ $(ECHO) $(@F) > $(COMPILE_OBJ_LIST.c); \
+ elif [ "`$(DIFF) -w -b $(THIS_COMPILE_BATCH.c) $(COMPILE_BATCH.c)`" \
+ = "" ] ; then \
+ $(ECHO) $< >> $(COMPILE_LIST.c); \
+ $(ECHO) $(@F) >> $(COMPILE_OBJ_LIST.c); \
+ fi
+ @$(RM) $(THIS_COMPILE_BATCH.c)
+ @$(check-conventions)
+
+$(OBJDIR)/%.$(OBJECT_SUFFIX): %.cpp
+ @$(prep-target)
+ @$(ECHO) "$(COMPILE.cpp) $(CFLAGS_GPROF)" > $(THIS_COMPILE_BATCH.cpp)
+ @if [ ! -s $(COMPILE_BATCH.cpp) ] ; then \
+ $(CP) $(THIS_COMPILE_BATCH.cpp) $(COMPILE_BATCH.cpp) ; \
+ $(ECHO) $< > $(COMPILE_LIST.cpp); \
+ $(ECHO) $(@F) > $(COMPILE_OBJ_LIST.cpp); \
+ elif [ "`$(DIFF) -w -b $(THIS_COMPILE_BATCH.cpp) $(COMPILE_BATCH.cpp)`"\
+ = "" ] ; then \
+ $(ECHO) $< >> $(COMPILE_LIST.cpp); \
+ $(ECHO) $(@F) >> $(COMPILE_OBJ_LIST.cpp); \
+ fi
+ @$(RM) $(THIS_COMPILE_BATCH.cpp)
+ @$(check-conventions)
+
+batch_compile: $(FILES_o)
+ @$(ECHO) "Doing batch compilations"
+ @if [ -s $(COMPILE_LIST.c) ] ; then \
+ $(ECHO) "$(COMPILE.c) $(CFLAGS_GPROF) $(AUTOMATIC_PCH_OPTION) \
+ `$(CAT) $(COMPILE_LIST.c)`" ; \
+ ( $(COMPILE.c) $(CFLAGS_GPROF) $(AUTOMATIC_PCH_OPTION) \
+ `$(CAT) $(COMPILE_LIST.c)` && \
+ $(ECHO) "$(MV) `$(CAT) $(COMPILE_OBJ_LIST.c)` $(OBJDIR)" && \
+ $(MV) `$(CAT) $(COMPILE_OBJ_LIST.c)` $(OBJDIR) ) || exit 1 ; \
+ fi
+ @if [ -s $(COMPILE_LIST.cpp) ] ; then \
+ $(ECHO) "$(COMPILE.cpp) $(CFLAGS_GPROF) $(AUTOMATIC_PCH_OPTION) \
+ `$(CAT) $(COMPILE_LIST.cpp)`" ; \
+ ( $(COMPILE.cpp) $(CFLAGS_GPROF) $(AUTOMATIC_PCH_OPTION) \
+ `$(CAT) $(COMPILE_LIST.cpp)` && \
+ $(ECHO) "$(MV) `$(CAT) $(COMPILE_OBJ_LIST.cpp)` $(OBJDIR)" && \
+ $(MV) `$(CAT) $(COMPILE_OBJ_LIST.cpp)` $(OBJDIR) ) || exit 1 ; \
+ fi
+ @$(RM) $(COMPILE_BATCH.c) $(COMPILE_LIST.c) $(COMPILE_OBJ_LIST.c)
+ @$(RM) $(COMPILE_BATCH.cpp) $(COMPILE_LIST.cpp) $(COMPILE_OBJ_LIST.cpp)
+
+endif
+
+# newer as does not handle c++ style comments
+$(OBJDIR)/%.$(OBJECT_SUFFIX): %.s
+ ifneq ($(CC_VERSION), gcc)
+ @$(prep-target)
+ $(COMPILE.s) $(CC_OBJECT_OUTPUT_FLAG)$@ $<
+ else
+ @$(prep-target)
+ $(CPP) -x assembler-with-cpp $< | $(COMPILE.s) -o $@
+ endif
+ @$(check-conventions)
+
+#
+# Quick hack for making the compiler generate just the assembly file.
+# $ gnumake obj/sparc/myfile.s
+#
+$(OBJDIR)/%.s: %.c
+ @$(prep-target)
+ $(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$@ -S $<
+ @$(check-conventions)
+
+# remove the intermediate files from the directories.
+# (If VARIANT=OPT, this removes all debug and fastdebug files too)
+clobber clean::
+ $(RM) -r $(OBJDIR)
+ $(RM) -r $(OBJDIR)_*
+
+#
+# Lint support
+# (The 'lint' rule below is an older rule not using the .$(LINT_SUFFIX) files)
+#
+
+ifeq ($(PLATFORM), solaris)
+$(OBJDIR)/%.$(LINT_SUFFIX): %.c
+ @$(prep-target)
+ $(LINT.c) -dirout=$(OBJDIR) -c $<
+lint.clean:
+ $(RM) $(OBJDIR)/*.$(LINT_SUFFIX)
+# Old rule
+lint: $(FILES_c)
+ ifneq ($(FILES_c),)
+ $(LINT.c) -Ncheck -Nlevel=3 $? $(LDLIBS) > lint.$(ARCH) 2>&1
+ endif
+endif
+
+.PHONY: batch_compile
+
+
diff --git a/jdk/make/common/internal/Resources.gmk b/jdk/make/common/internal/Resources.gmk
new file mode 100644
index 0000000..dbc11ef
--- /dev/null
+++ b/jdk/make/common/internal/Resources.gmk
@@ -0,0 +1,265 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Generic mechanism for installing properties files, resource bundles,
+# and other resource files.
+#
+# FILES_properties should be defined.
+# FILES_compiled_properties should be defined.
+#
+# If COMPILED_PROPERTIES_SUPERCLASS is defined, ALL the FILES_properties
+# files will be compiled into java with this super class.
+#
+# You can add locales to LOCALE_SUFFIXES explicitly, or use the
+# LOCALE_SET_DEFINITION variable to add some pre-defined locale lists.
+# The LOCALE_SET_DEFINITION can have the value: jre, plugin, or jdk.
+#
+# Resource bundles to be installed are identified using the following variables.
+# Note that only the file name of the base bundle is given; localized versions
+# are added automatically. For Java files, use a format suitable for inclusion
+# in the FILES_java list; dito for properties, all relative paths.
+#
+# NEW_RESOURCE_BUNDLES_JAVA - new resource bundles implemented in
+# Java, not localized
+# NEW_RESOURCE_BUNDLES_PROPERTIES - new resource bundles implemented as
+# properties files, not localized
+# RESOURCE_BUNDLES_JAVA - resource bundles implemented in
+# Java, localized
+# RESOURCE_BUNDLES_PROPERTIES - new resource bundles implemented as
+# properties files, localized
+#
+# The following variable is now used for most .properties files in the JDK.
+# These properties files are converted into java and compiled with javac.
+# The resulting .class files are usually smaller and are always faster to load.
+# The relative path to the properties file becomes a relative path to a
+# java source file.
+#
+# RESOURCE_BUNDLES_COMPILED_PROPERTIES - resource bundles implemented as
+# properties files, localized
+# NEW_RESOURCE_BUNDLES_COMPILED_PROPERTIES - same as above, not localized
+#
+# Other properties files to be installed are identified using the variable:
+#
+# OTHER_PROPERTIES
+#
+
+# Compile properties files into java source?
+ifdef COMPILED_PROPERTIES_SUPERCLASS
+ # Add all properties files to the compiled properties list (all or nothing)
+ COMPILED_PROPERTIES += $(FILES_compiled_properties) $(FILES_properties)
+else
+ COMPILED_PROPERTIES_SUPERCLASS = ListResourceBundle
+ COMPILED_PROPERTIES += $(FILES_compiled_properties)
+endif
+
+# Determine the locale suffixes needed beyond the base bundle
+
+ifeq ($(LOCALE_SET_DEFINITION), plugin)
+ LOCALE_SUFFIXES += $(PLUGIN_LOCALES)
+endif
+ifeq ($(LOCALE_SET_DEFINITION), jdk)
+ LOCALE_SUFFIXES += $(JDK_LOCALES)
+endif
+ifeq ($(LOCALE_SET_DEFINITION), jre)
+ LOCALE_SUFFIXES += $(JRE_LOCALES)
+endif
+
+# Java files get tacked onto the standard list of files to compile
+RESOURCE_BUNDLE_FILES_java += $(NEW_RESOURCE_BUNDLES_JAVA)
+RESOURCE_BUNDLE_FILES_java += $(RESOURCE_BUNDLES_JAVA) \
+ $(foreach file,$(RESOURCE_BUNDLES_JAVA), \
+ $(foreach locale,$(LOCALE_SUFFIXES), \
+ $(basename $(file))_$(locale).java))
+
+# Add to java sources list
+FILES_java += $(RESOURCE_BUNDLE_FILES_java)
+
+# Compiled properties files are translated to .java.
+# The .java files are generated into GENSRCDIR.
+COMPILED_PROPERTIES += $(NEW_RESOURCE_BUNDLES_COMPILED_PROPERTIES)
+COMPILED_PROPERTIES += $(RESOURCE_BUNDLES_COMPILED_PROPERTIES) \
+ $(foreach file,$(RESOURCE_BUNDLES_COMPILED_PROPERTIES),\
+ $(foreach locale,$(LOCALE_SUFFIXES),\
+ $(basename $(file))_$(locale)$(suffix $(file))))
+
+# Add to java sources list
+FILES_java += $(COMPILED_PROPERTIES:%.properties=%.java)
+
+# Non-compiled files
+PROPERTIES_FILES += $(NEW_RESOURCE_BUNDLES_PROPERTIES)
+PROPERTIES_FILES += $(RESOURCE_BUNDLES_PROPERTIES) \
+ $(foreach file,$(RESOURCE_BUNDLES_PROPERTIES), \
+ $(foreach locale,$(LOCALE_SUFFIXES), \
+ $(basename $(file))_$(locale)$(suffix $(file))))
+PROPERTIES_FILES += $(OTHER_PROPERTIES)
+
+#
+# Compile Properties tool
+#
+COMPILEPROPERTIES_JARFILE = $(BUILDTOOLJARDIR)/compileproperties.jar
+
+#
+# Strip Properties tool
+#
+STRIPPROPERTIES_JARFILE = $(BUILDTOOLJARDIR)/stripproperties.jar
+
+#
+# Process and strip all non-compiled properties files (in a batch mode)
+#
+STRIP_PROP_FILES = $(PROPERTIES_FILES:%=$(CLASSDESTDIR)/%)
+# To efficiently strip properties we use one run of StripProperties.
+# This macro gathers an option for use later.
+STRIP_PROP_options=$(TEMPDIR)/strip_prop_options
+define install-properties-file
+$(install-file)
+$(CHMOD) a+rw $@
+@$(ECHO) "# Adding to strip properties list: $@"
+$(ECHO) "$@" >> $(STRIP_PROP_options)
+endef
+
+# Constructs command line options file
+$(STRIP_PROP_options): $(STRIP_PROP_FILES)
+ @$(TOUCH) $@
+strip_prop_options_clean:
+ @$(RM) $(STRIP_PROP_options)
+
+# Strip the properties files
+strip_all_props: $(STRIPPROPERTIES_JARFILE) $(STRIP_PROP_options)
+ @if [ -s $(STRIP_PROP_options) ] ; then \
+ $(ECHO) "$(BOOT_JAVA_CMD) -jar $(STRIPPROPERTIES_JARFILE) -optionsfile $(STRIP_PROP_options)" ; \
+ $(BOOT_JAVA_CMD) -jar $(STRIPPROPERTIES_JARFILE) -optionsfile $(STRIP_PROP_options) ; \
+ fi
+ @$(java-vm-cleanup)
+
+#
+# Creates files in CLASSDESTDIR
+#
+
+# In some cases, we move files from package to resources subdir
+$(CLASSDESTDIR)/$(PKGDIR)/resources/%.properties: \
+ $(SHARE_SRC)/classes/$(PKGDIR)/%.properties
+ $(install-properties-file)
+$(CLASSDESTDIR)/%.properties: $(SHARE_SRC)/classes/%.properties
+ $(install-properties-file)
+$(CLASSDESTDIR)/%.res: $(SHARE_SRC)/classes/%.res
+ $(install-file)
+$(CLASSDESTDIR)/%.dtd: $(SHARE_SRC)/classes/%.dtd
+ $(install-file)
+$(CLASSDESTDIR)/%.xml: $(SHARE_SRC)/classes/%.xml
+ $(install-file)
+$(CLASSDESTDIR)/%.prp: $(SHARE_SRC)/classes/%.prp
+ $(install-file)
+
+#
+# To efficiently compile properties into java sources we use one run
+# of compileproperties. This macro gathers an option for use later.
+# Note: The properties file and java source name can be different
+# locales, e.g. zh_TW and zh_HK. The java source filename
+# determines the name of the class.
+COMPILE_PROP_options=$(TEMPDIR)/compile_prop_options
+define add-property-java-file
+@$(prep-target)
+@$(ECHO) "# Adding to compile properties list: $? -> $@"
+$(ECHO) "-compile $? $@ $(COMPILED_PROPERTIES_SUPERCLASS)" \
+ >> $(COMPILE_PROP_options)
+endef
+
+$(GENSRCDIR)/%.java: $(PLATFORM_SRC)/classes/%.properties
+ $(add-property-java-file)
+$(GENSRCDIR)/%.java: $(SHARE_SRC)/classes/%.properties
+ $(add-property-java-file)
+$(GENSRCDIR)/%.java: $(GENSRCDIR)/%.properties
+ $(add-property-java-file)
+ifndef OPENJDK
+$(GENSRCDIR)/%.java: $(CLOSED_PLATFORM_SRC)/classes/%.properties
+ $(add-property-java-file)
+$(GENSRCDIR)/%.java: $(CLOSED_SHARE_SRC)/classes/%.properties
+ $(add-property-java-file)
+endif
+
+# Create HK java file from zh_TW (explicit resource bundles only)
+define create-hk-java-file
+@$(prep-target)
+$(CAT) $< | $(SED) -e '/class/s/_zh_TW/_zh_HK/' > $@
+endef
+
+# Explicit resource bundles
+$(GENSRCDIR)/%_zh_HK.java: $(PLATFORM_SRC)/classes/%_zh_TW.java
+ $(create-hk-java-file)
+$(GENSRCDIR)/%_zh_HK.java: $(SHARE_SRC)/classes/%_zh_TW.java
+ $(create-hk-java-file)
+
+# Compile of zh_HK properties just uses the zh_TW properties files
+$(GENSRCDIR)/%_zh_HK.java: $(PLATFORM_SRC)/classes/%_zh_TW.properties
+ $(add-property-java-file)
+$(GENSRCDIR)/%_zh_HK.java: $(SHARE_SRC)/classes/%_zh_TW.properties
+ $(add-property-java-file)
+
+# Simple delivery of zh_HK properties files just copies zh_TW properties files
+$(CLASSDESTDIR)/%_zh_HK.properties: \
+ $(PLATFORM_SRC)/classes/%_zh_TW.properties
+ $(install-properties-file)
+$(CLASSDESTDIR)/%_zh_HK.properties: \
+ $(SHARE_SRC)/classes/%_zh_TW.properties
+ $(install-properties-file)
+
+# List of java files converted from properties files needed
+COMPILE_PROP_JAVA_FILES = $(COMPILED_PROPERTIES:%.properties=$(GENSRCDIR)/%.java)
+
+# Constructs command line options file
+$(COMPILE_PROP_options): $(COMPILE_PROP_JAVA_FILES)
+ @$(TOUCH) $@
+compile_prop_options_clean:
+ @$(RM) $(COMPILE_PROP_options)
+
+# Make sure all are compiled, one compiler run
+compile_all_props: $(COMPILEPROPERTIES_JARFILE) $(COMPILE_PROP_options)
+ @if [ `$(CAT) $(COMPILE_PROP_options) | $(WC) -l` -ge 1 ] ; then \
+ $(MKDIR) -p $(GENSRCDIR); \
+ $(ECHO) "$(BOOT_JAVA_CMD) -jar $(COMPILEPROPERTIES_JARFILE) -optionsfile $(COMPILE_PROP_options)";\
+ $(BOOT_JAVA_CMD) -jar $(COMPILEPROPERTIES_JARFILE) -optionsfile $(COMPILE_PROP_options) ; \
+ $(java-vm-cleanup); \
+ fi
+
+# Make sure the build rule creates all the properties
+resources:
+
+ifneq ($(PROPERTIES_FILES),)
+ resources: strip_prop_options_clean strip_all_props
+ clobber clean::
+ $(RM) $(STRIP_PROP_FILES) $(STRIP_PROP_options)
+endif
+
+ifneq ($(COMPILED_PROPERTIES),)
+ resources: compile_prop_options_clean compile_all_props
+ clobber clean::
+ $(RM) $(COMPILE_PROP_JAVA_FILES) $(COMPILE_PROP_options)
+endif
+
+.PHONY: resources \
+ compile_prop_options_clean compile_all_props \
+ strip_prop_options_clean strip_all_props
+
diff --git a/jdk/make/common/shared/Compiler-gcc.gmk b/jdk/make/common/shared/Compiler-gcc.gmk
new file mode 100644
index 0000000..74f9807
--- /dev/null
+++ b/jdk/make/common/shared/Compiler-gcc.gmk
@@ -0,0 +1,125 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# GCC Compiler settings
+#
+
+COMPILER_NAME=GCC
+
+ifeq ($(PLATFORM), windows)
+
+ # Settings specific to Windows, pretty stale, hasn't been used
+ CC = $(COMPILER_PATH)gcc
+ CPP = $(COMPILER_PATH)gcc -E
+ CXX = $(COMPILER_PATH)g++
+ CCC = $(COMPILER_PATH)g++
+ LIBEXE = $(COMPILER_PATH)lib
+ LINK = $(COMPILER_PATH)link
+ RC = $(MSDEVTOOLS_PATH)link
+ LINK32 = $(LINK)
+ RSC = $(RC)
+ # unset any GNU Make settings of MFLAGS and MAKEFLAGS which may mess up nmake
+ NMAKE = MFLAGS= MAKEFLAGS= $(COMPILER_PATH)nmake -nologo
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ CC_VER = UNKNOWN
+ CC_TYPE = UNKNOWN
+ else
+ CC_VER = UNKNOWN
+ CC_TYPE = UNKNOWN
+ endif
+ _LINK_VER :=$(shell $(LINK) 2>&1 | $(HEAD) -n 1)
+ LINK_VER :=$(call GetVersion,"$(_LINK_VER)")
+
+endif
+
+ifeq ($(PLATFORM), linux)
+
+ # Settings specific to Linux
+ CC = $(COMPILER_PATH)gcc
+ CPP = $(COMPILER_PATH)gcc -E
+ # statically link libstdc++ before C++ ABI is stablized on Linux
+ STATIC_CXX = true
+ ifeq ($(STATIC_CXX),true)
+ # g++ always dynamically links libstdc++, even we use "-Wl,-Bstatic -lstdc++"
+ # We need to use gcc to statically link the C++ runtime. gcc and g++ use
+ # the same subprocess to compile C++ files, so it is OK to build using gcc.
+ CXX = $(COMPILER_PATH)gcc
+ else
+ CXX = $(COMPILER_PATH)g++
+ endif
+ ifneq ("$(findstring sparc,$(ARCH))", "")
+ # sparc or sparcv9
+ REQUIRED_CC_VER = 4.0
+ REQUIRED_GCC_VER = 4.0.*
+ else
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ # i586
+ REQUIRED_CC_VER = 3.2
+ REQUIRED_GCC_VER = 3.2.1*
+ REQUIRED_GCC_VER_INT = 3.2.1-7a
+ else
+ ifeq ($(ARCH), amd64)
+ # amd64
+ REQUIRED_CC_VER = 3.2
+ REQUIRED_GCC_VER = 3.2.*
+ endif
+ ifeq ($(ARCH), ia64)
+ # ia64
+ REQUIRED_CC_VER = 3.2
+ REQUIRED_GCC_VER = 2.9[56789].*
+ endif
+ endif
+ endif
+ # Option used to create a shared library
+ SHARED_LIBRARY_FLAG = -shared -mimpure-text
+ SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 )
+
+endif
+
+ifeq ($(PLATFORM), solaris)
+
+ # Settings specific to Solaris
+ CC = $(COMPILER_PATH)gcc
+ CPP = $(COMPILER_PATH)gcc -E
+ CXX = $(COMPILER_PATH)g++
+ REQUIRED_CC_VER = 3.2
+
+ # Option used to create a shared library
+ SHARED_LIBRARY_FLAG = -G
+ # But gcc is still needed no matter what on 32bit
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ REQUIRED_GCC_VER = 2.95
+ GCC =$(GCC_COMPILER_PATH)gcc
+ _GCC_VER :=$(shell $(GCC) -dumpversion 2>&1 )
+ GCC_VER :=$(call GetVersion,"$(_GCC_VER)")
+ endif
+
+endif
+
+# Get gcc version
+_CC_VER :=$(shell $(CC) -dumpversion 2>&1 )
+CC_VER :=$(call GetVersion,"$(_CC_VER)")
+
diff --git a/jdk/make/common/shared/Compiler-msvc.gmk b/jdk/make/common/shared/Compiler-msvc.gmk
new file mode 100644
index 0000000..fbb8e8a
--- /dev/null
+++ b/jdk/make/common/shared/Compiler-msvc.gmk
@@ -0,0 +1,138 @@
+#
+# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# MSVC Compiler settings
+#
+
+ifeq ($(PLATFORM), windows)
+ CC = $(COMPILER_PATH)cl
+ CPP = $(COMPILER_PATH)cl
+ CXX = $(COMPILER_PATH)cl
+ CCC = $(COMPILER_PATH)cl
+ LIBEXE = $(COMPILER_PATH)lib
+ LINK = $(COMPILER_PATH)link
+ RC = $(MSDEVTOOLS_PATH)rc
+ LINK32 = $(LINK)
+ RSC = $(RC)
+
+ # Fill in unknown values
+ COMPILER_NAME=Unknown MSVC Compiler
+ COMPILER_VERSION=
+ REQUIRED_CC_VER=
+ REQUIRED_LINK_VER=
+
+ # unset any GNU Make settings of MFLAGS and MAKEFLAGS which may mess up nmake
+ NMAKE = MFLAGS= MAKEFLAGS= $(COMPILER_PATH)nmake -nologo
+
+ # SDK-64 and MSVC6 put REBASE.EXE in a different places - go figure...
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ CC_VER := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(NAWK) '{print $$8}')
+ LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}')
+ CC_TYPE := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(NAWK) '{print $$5}')
+ CC_MAJORVER :=$(call MajorVersion,$(CC_VER))
+ REQUIRED_CCTYPE = Optimizing
+ REQUIRED_CC_VER = 13.10.3077
+ REQUIRED_LINK_VER = 7.10.3077
+ ifeq ($(CC_MAJORVER), 12)
+ # This should be: CC_VER=12.00.8168 LINK_VER=6.00.8447
+ COMPILER_NAME=Visual C++ 6.0 Professional + VC6-SP 3
+ COMPILER_VERSION=VC6
+ REBASE = $(COMPILER_PATH)rebase
+ MTL = $(COMPILER_PATH)midl
+ endif
+ ifeq ($(CC_MAJORVER), 13)
+ # This should be: CC_VER=13.10.3077 LINK_VER=7.10.3077
+ COMPILER_NAME=Visual Studio .NET 2003 Professional C++
+ COMPILER_VERSION=VS2003
+ REBASE = $(COMPILER_PATH)../../Common7/Tools/Bin/rebase
+ MTL = $(COMPILER_PATH)../../Common7/Tools/Bin/midl
+ ifndef COMPILER_PATH
+ COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
+ endif
+ endif
+ ifeq ($(CC_MAJORVER), 14)
+ # This should be: CC_VER=14.00.0000 LINK_VER=8.00.0000
+ # NOTE: This compiler has not been tried yet on 32bit systems
+ COMPILER_NAME=Visual Studio .NET 2005
+ COMPILER_VERSION=VS2005
+ REBASE = $(COMPILER_PATH)../../Common8/Tools/Bin/rebase
+ MTL = $(COMPILER_PATH)../../Common8/Tools/Bin/midl
+ ifndef COMPILER_PATH
+ COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
+ endif
+ endif
+ else
+ CC_VER := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(NAWK) '{print $$7}')
+ LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}')
+ CC_TYPE := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(NAWK) '{print $$4}')
+ CC_MAJORVER :=$(call MajorVersion,$(CC_VER))
+ CC_MINORVER :=$(call MinorVersion,$(CC_VER))
+ CC_MICROVER :=$(call MicroVersion,$(CC_VER))
+ ifeq ($(ARCH), ia64)
+ REQUIRED_CC_VER = 13.00.9337.7
+ REQUIRED_LINK_VER = 7.00.9337.7
+ endif
+ ifeq ($(ARCH), amd64)
+ REQUIRED_CC_VER = 14.00.40310.41
+ REQUIRED_LINK_VER = 8.00.40310.39
+ endif
+ ifeq ($(CC_MAJORVER), 13)
+ ifeq ($(ARCH), ia64)
+ # This should be: CC_VER=13.00.9337.7 LINK_VER=7.00.9337.7
+ COMPILER_NAME=Microsoft Platform SDK - November 2001 Edition
+ COMPILER_VERSION=VS2003
+ endif
+ endif
+ ifeq ($(CC_MAJORVER), 14)
+ ifeq ($(ARCH), amd64)
+ ifeq ($(CC_MICROVER), 30701)
+ # This should be: CC_VER=14.00.30701 LINK_VER=8.00.30701
+ # WARNING: it says 14, but it is such an early build it doesn't
+ # have all the VS2005 compiler option changes, so treat
+ # this like a VS2003 compiler.
+ COMPILER_NAME=Microsoft Platform SDK - February 2003 Edition
+ COMPILER_VERSION=VS2003
+ else
+ # This should be: CC_VER=14.00.40310.41 LINK_VER=8.00.40310.39
+ COMPILER_NAME=Microsoft Platform SDK - April 2005 Edition (3790.1830)
+ COMPILER_VERSION=VS2005
+ endif
+ endif
+ endif
+ # This will cause problems if ALT_COMPILER_PATH is defined to ""
+ # which is a directive to use the PATH.
+ REBASE = $(COMPILER_PATH)../REBASE
+ ifndef COMPILER_PATH
+ COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
+ endif
+ endif
+ ifndef COMPILER_VERSION
+ COMPILER_VERSION := $(error COMPILER_VERSION cannot be empty here)
+ endif
+ # Shared library generation flag
+ SHARED_LIBRARY_FLAG = -LD
+endif
+
diff --git a/jdk/make/common/shared/Compiler-sun.gmk b/jdk/make/common/shared/Compiler-sun.gmk
new file mode 100644
index 0000000..8ce5482
--- /dev/null
+++ b/jdk/make/common/shared/Compiler-sun.gmk
@@ -0,0 +1,76 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Sun Studio Compiler settings
+#
+
+COMPILER_NAME=Sun Studio
+
+# Sun Studio Compiler settings specific to Solaris
+ifeq ($(PLATFORM), solaris)
+ COMPILER_VERSION=SS11
+ REQUIRED_CC_VER=5.8
+ CC = $(COMPILER_PATH)cc
+ CPP = $(COMPILER_PATH)cc -E
+ CXX = $(COMPILER_PATH)CC
+ LINT = $(COMPILER_PATH)lint
+ # Option used to create a shared library
+ SHARED_LIBRARY_FLAG = -G
+ # But gcc is still needed no matter what on 32bit
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ REQUIRED_GCC_VER = 2.95
+ GCC =$(GCC_COMPILER_PATH)gcc
+ _GCC_VER :=$(shell $(GCC) -dumpversion 2>&1 )
+ GCC_VER :=$(call GetVersion,"$(_GCC_VER)")
+ endif
+endif
+
+# Sun Studio Compiler settings specific to Linux
+ifeq ($(PLATFORM), linux)
+ # This has not been tested
+ COMPILER_VERSION=SS11
+ REQUIRED_CC_VER=5.8
+ CC = $(COMPILER_PATH)cc
+ CPP = $(COMPILER_PATH)cc -E
+ CXX = $(COMPILER_PATH)CC
+ LINT = $(COMPILER_PATH)lint
+ # statically link libstdc++ before C++ ABI is stablized on Linux
+ STATIC_CXX = true
+ ifeq ($(STATIC_CXX),true)
+ # CC always dynamically links libstdc++, even we use "-Wl,-Bstatic -lstdc++"
+ # We need to use cc to statically link the C++ runtime.
+ CXX = $(COMPILER_PATH)cc
+ else
+ CXX = $(COMPILER_PATH)CC
+ endif
+ # Option used to create a shared library
+ SHARED_LIBRARY_FLAG = -G
+endif
+
+# Get compiler version
+_CC_VER :=$(shell $(CC) -V 2>&1 | $(HEAD) -n 1)
+CC_VER :=$(call GetVersion,"$(_CC_VER)")
+
diff --git a/jdk/make/common/shared/Compiler.gmk b/jdk/make/common/shared/Compiler.gmk
new file mode 100644
index 0000000..e5847a2
--- /dev/null
+++ b/jdk/make/common/shared/Compiler.gmk
@@ -0,0 +1,47 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Compiler settings for all platforms and the default compiler for each.
+#
+
+# Windows uses Microsoft compilers by default
+ifeq ($(PLATFORM), windows)
+ override CC_VERSION = msvc
+endif
+
+# Solaris uses Sun Studio compilers by default
+ifeq ($(PLATFORM), solaris)
+ override CC_VERSION = sun
+endif
+
+# Linux uses GNU compilers by default
+ifeq ($(PLATFORM), linux)
+ override CC_VERSION = gcc
+endif
+
+# Get the compiler specific settings
+include $(JDK_MAKE_SHARED_DIR)/Compiler-$(CC_VERSION).gmk
+
diff --git a/jdk/make/common/shared/Defs-control.gmk b/jdk/make/common/shared/Defs-control.gmk
new file mode 100644
index 0000000..ec94a2e
--- /dev/null
+++ b/jdk/make/common/shared/Defs-control.gmk
@@ -0,0 +1,145 @@
+#
+# Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Common variables used by all the Java makefiles. This file should
+# not contain rules.
+#
+
+# WARNING: This file is shared with other components.
+#
+
+ifndef JDK_MAKE_SHARED_DIR
+ JDK_MAKE_SHARED_DIR = $(JDK_TOPDIR)/make/common/shared
+endif
+
+ifndef CONTROL_TOPDIR
+ CONTROL_TOPDIR=$(TOPDIR)/control
+endif
+ifndef HOTSPOT_TOPDIR
+ HOTSPOT_TOPDIR=$(TOPDIR)/hotspot
+endif
+ifndef LANGTOOLS_TOPDIR
+ LANGTOOLS_TOPDIR=$(TOPDIR)/langtools
+endif
+ifndef CORBA_TOPDIR
+ CORBA_TOPDIR=$(TOPDIR)/corba
+endif
+ifndef JAXP_TOPDIR
+ JAXP_TOPDIR=$(TOPDIR)/jaxp
+endif
+ifndef JAXWS_TOPDIR
+ JAXWS_TOPDIR=$(TOPDIR)/jaxws
+endif
+ifndef JDK_TOPDIR
+ JDK_TOPDIR=$(TOPDIR)/jdk
+endif
+ifndef INSTALL_TOPDIR
+ INSTALL_TOPDIR=$(TOPDIR)/install
+endif
+ifndef SPONSORS_TOPDIR
+ SPONSORS_TOPDIR=$(TOPDIR)/sponsors
+endif
+ifndef DEPLOY_TOPDIR
+ DEPLOY_TOPDIR=$(TOPDIR)/deploy
+endif
+
+# Get shared platform settings
+include $(JDK_MAKE_SHARED_DIR)/Platform.gmk
+
+# Default output directory
+_OUTPUTDIR=$(CONTROL_TOPDIR)/build/$(PLATFORM)-$(ARCH)
+
+# Get platform specific settings
+include $(JDK_MAKE_SHARED_DIR)/Defs.gmk
+
+SRC_BUNDLEDIR = $(OUTPUTDIR)/source-bundles
+ABS_SRC_BUNDLEDIR = $(ABS_OUTPUTDIR)/source-bundles
+BIN_BUNDLEDIR = $(OUTPUTDIR)/bundles
+ABS_BIN_BUNDLEDIR = $(ABS_OUTPUTDIR)/bundles
+JRL_BUNDLEDIR = $(OUTPUTDIR)/java.net
+ABS_JRL_BUNDLEDIR = $(ABS_OUTPUTDIR)/java.net
+
+dummy := $(shell $(MKDIR) -p $(BIN_BUNDLEDIR))
+dummy := $(shell $(MKDIR) -p $(SRC_BUNDLEDIR) )
+dummy := $(shell $(MKDIR) -p $(JRL_BUNDLEDIR) )
+
+TEMP_DIR = $(OUTPUTDIR)/tmp
+ABS_TEMP_DIR = $(ABS_OUTPUTDIR)/tmp
+
+dummy := $(shell $(MKDIR) -p $(TEMP_DIR))
+
+# The class version we want for this jdk build
+TARGET_CLASS_VERSION=5
+
+# The MESSAGE, WARNING and ERROR files are used to store sanity check and
+# source check messages, warnings and errors.
+export ERROR_FILE := $(ABS_OUTPUTDIR)/sanityCheckErrors.txt
+export WARNING_FILE := $(ABS_OUTPUTDIR)/sanityCheckWarnings.txt
+export MESSAGE_FILE := $(ABS_OUTPUTDIR)/sanityCheckMessages.txt
+
+# source bundle generation definitions
+BUNDLE_DATE := $(shell $(DATE) '+%d_%b_%Y' | $(TR) "[A-Z]" "[a-z]")
+ifdef ALT_BUNDLE_DATE
+ BUNDLE_DATE := $(ALT_BUNDLE_DATE)
+endif
+
+# If the update version contains non-numeric characters, we need
+# to massage it into a numeric format. Unfortunately, the
+# Windows VERSIONINFO resource that we stick in jvm.dll cannot
+# handle non-numeric characters. We have to do this here because
+# Hotspot (nmake) cannot handle calculations. So we use the
+# following formula:
+# COOKED_JDK_UPDATE_VERSION = JDK_UPDATE_VERSION * 10 + EXCEPTION_VERSION
+#
+# Here are some examples:
+# 1.5.0 b01 -> 5,0,0,1
+# 1.5.0_10 b01 -> 5,0,100,1
+# 1.4.2 b01 -> 4,2,0,1
+# 1.4.2_02 b01 -> 4,2,20,1
+# 1.4.2_02a b01 -> 4,2,21,1
+# 1.4.2_02b b01 -> 4,2,22,1
+ifdef JDK_UPDATE_VERSION
+ VTMP := $(shell $(ECHO) $(JDK_UPDATE_VERSION) | $(TR) "abcde" "12345")
+ CHAR1 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 1, 1);}')
+ CHAR2 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 2, 1);}')
+ CHAR3 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 3, 1);}')
+ ifeq ($(CHAR3),)
+ CHAR3 := 0
+ endif
+ ifeq ($(CHAR1), 0)
+ COOKED_JDK_UPDATE_VERSION := $(CHAR2)$(CHAR3)
+ else
+ COOKED_JDK_UPDATE_VERSION := $(CHAR1)$(CHAR2)$(CHAR3)
+ endif
+endif
+
+ifneq ($(JDK_BUILD_NUMBER),)
+ COOKED_BUILD_NUMBER = $(shell $(ECHO) $(JDK_BUILD_NUMBER) \
+ | $(SED) -e 's/^b//' | $(SED) -e 's/^0//')
+else
+ COOKED_BUILD_NUMBER = 0
+endif
+
diff --git a/jdk/make/common/shared/Defs-java.gmk b/jdk/make/common/shared/Defs-java.gmk
new file mode 100644
index 0000000..b3e0270
--- /dev/null
+++ b/jdk/make/common/shared/Defs-java.gmk
@@ -0,0 +1,200 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Common java/javac/jdk variables used by all the Java makefiles.
+# This file should not contain rules.
+#
+
+# WARNING: This file is shared with other workspaces.
+# So when it includes other files, it must use JDK_TOPDIR.
+#
+
+#
+# Memory related -J flags that all uses of java tools should use.
+#
+JAVA_MEM_FLAGS = -Xmx$(MAX_VM_MEMORY)m
+ifeq ($(ARCH), ia64)
+ # Special flags for javac on ia64 to work around a VM problem with
+ # bad code generation during inlining (what version had this problem?):
+ # Suspect this may not be needed anymore.
+ JAVA_MEM_FLAGS += -Xms$(MAX_VM_MEMORY)m -XX:-Inline
+else
+ JAVA_MEM_FLAGS += -Xms$(MIN_VM_MEMORY)m -XX:PermSize=32m -XX:MaxPermSize=160m
+endif
+
+#
+# All java tools (javac, javah, and javadoc) run faster with certain java
+# options, this macro should be used with all these tools.
+# In particular, the client VM makes these tools run faster when
+# it's available.
+#
+ADD_CLIENT_VM_OPTION = false
+ifeq ($(PLATFORM), solaris)
+ ADD_CLIENT_VM_OPTION = true
+else
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ ADD_CLIENT_VM_OPTION = true
+ endif
+endif
+JAVA_JVM_FLAGS =
+ifeq ($(ADD_CLIENT_VM_OPTION), true)
+ JAVA_JVM_FLAGS += -client
+endif
+ifdef USE_HOTSPOT_INTERPRETER_MODE
+ JAVA_JVM_FLAGS += -Xint
+endif
+
+# Various VM flags
+JAVA_TOOLS_FLAGS = $(JAVA_JVM_FLAGS) $(JAVA_MEM_FLAGS)
+
+# The VM flags for javac
+JAVAC_JVM_FLAGS =
+
+# 64-bit builds require a larger thread stack size.
+ifeq ($(ARCH_DATA_MODEL), 32)
+ JAVAC_JVM_FLAGS += -J-XX:ThreadStackSize=768
+else
+ JAVAC_JVM_FLAGS += -J-XX:ThreadStackSize=1536
+endif
+JAVAC_JVM_FLAGS += $(JAVA_TOOLS_FLAGS:%=-J%)
+
+# The jar -J options are special, must be added at the end of the command line
+JAR_JFLAGS = $(JAVA_TOOLS_FLAGS:%=-J%)
+
+# JAVA_TOOLS_DIR is the default location to find Java tools to run, if
+# langtools is not available.
+# This should be the latest promoted JDK javac.
+ifndef JAVA_TOOLS_DIR
+ JAVA_TOOLS_DIR = $(JDK_IMPORT_PATH)/bin
+endif
+
+#
+# Invoking the Java compiler. In leaf makefiles, choose as follows:
+# -- Use JAVAC if you want to take full control of what options get
+# passed to javac.
+# -- Use JAVAC_CMD if you want to take the defaults given to you.
+#
+
+ifndef DEBUG_CLASSFILES
+ ifeq ($(VARIANT), DBG)
+ DEBUG_CLASSFILES = true
+ endif
+endif
+JAVACFLAGS =
+ifeq ($(DEBUG_CLASSFILES),true)
+ JAVACFLAGS += -g
+endif
+ifeq ($(COMPILER_WARNINGS_FATAL), true)
+ JAVACFLAGS += -Werror
+endif
+
+# Add the source level (currently all source is 1.5, should this be 1.6?)
+LANGUAGE_VERSION = -source 1.5
+JAVACFLAGS += $(LANGUAGE_VERSION)
+
+# Add the class version we want (currently this is 5, should it be 6 or even 7?)
+TARGET_CLASS_VERSION = 5
+CLASS_VERSION = -target $(TARGET_CLASS_VERSION)
+JAVACFLAGS += $(CLASS_VERSION)
+JAVACFLAGS += -encoding ascii
+JAVACFLAGS += "-Xbootclasspath:$(CLASSBINDIR)"
+JAVACFLAGS += $(OTHER_JAVACFLAGS)
+
+# Needed for javah
+JAVAHFLAGS += -bootclasspath $(CLASSBINDIR)
+
+# Langtools
+ifdef LANGTOOLS_DIST
+ JAVAC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javac.jar
+ JAVAH_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javah.jar
+ JAVADOC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javadoc.jar
+ DOCLETS_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/doclets.jar
+ JAVAC_CMD = $(BOOT_JAVA_CMD) \
+ "-Xbootclasspath/p:$(JAVAC_JAR)" \
+ -jar $(JAVAC_JAR) $(JAVACFLAGS)
+ JAVAH_CMD = $(BOOT_JAVA_CMD) \
+ "-Xbootclasspath/p:$(JAVAH_JAR)$(CLASSPATH_SEPARATOR)$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)" \
+ -jar $(JAVAH_JAR) $(JAVAHFLAGS)
+ JAVADOC_CMD = $(BOOT_JAVA_CMD) \
+ "-Xbootclasspath/p:$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)$(CLASSPATH_SEPARATOR)$(DOCLETS_JAR)" \
+ -jar $(JAVADOC_JAR)
+else
+ # If no explicit tools, use boot tools (add VM flags in this case)
+ JAVAC_CMD = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
+ $(JAVACFLAGS)
+ JAVAH_CMD = $(JAVA_TOOLS_DIR)/javah \
+ $(JAVAHFLAGS)
+ JAVADOC_CMD = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%)
+endif
+
+# Override of what javac to use (see deploy workspace)
+ifdef JAVAC
+ JAVAC_CMD = $(JAVAC)
+endif
+
+#
+# The bootstrap java compiler (defined as the javac in the ALT_BOOTDIR jdk).
+# Will be used to compile java code used to build the jdk, e.g. class files
+# created by this compiler will NOT become part of this built jdk, but just
+# used to build this jdk, e.g. run with the java in the ALT_BOOTDIR jdk.
+#
+# The javac supplied with the LANGTOOLS_DIST should be used to build the
+# classes that will be put into the built jdk. But note that this javac
+# will use the ALT_BOOTDIR java runtime. Any classes created by the
+# LANGTOOLS_DIST javac should not be run during this jdk build and indeed
+# may not even run with the ALT_BOOTDIR jdk because they may be a newer
+# class file version that the ALT_BOOTDIR jdk doesn't understand.
+#
+# The important observation here is that the built jdk is NOT run during
+# the build. If the built jdk needs to be verified that it can build this
+# same jdk, then it should be supplied to the build process as the ALT_BOOTDIR
+# jdk, and this resulting built jdk should be compared to the first one.
+# (They should be the same). Re-using this built jdk as the ALT_BOOTDIR
+# jdk will be the only way and the recommeneded way to verify the built jdk
+# can bootstrap itself.
+#
+
+# The javac options supplied to the boot javac is limited. This compiler
+# should only be used to build the 'make/tools' sources, which are not
+# class files that end up in the classes directory.
+ifeq ($(COMPILER_WARNINGS_FATAL), true)
+ BOOT_JAVACFLAGS += -Werror
+endif
+BOOT_JAVACFLAGS += -encoding ascii
+
+BOOT_JAVA_CMD = $(BOOTDIR)/bin/java $(JAVA_TOOLS_FLAGS)
+BOOT_JAVAC_CMD = $(BOOTDIR)/bin/javac $(JAVAC_JVM_FLAGS) $(BOOT_JAVACFLAGS)
+BOOT_JAR_CMD = $(BOOTDIR)/bin/jar
+BOOT_JARSIGNER_CMD = $(BOOTDIR)/bin/jarsigner
+
+# Various tools we need to run (FIXUP: Are these the right ones?)
+NATIVE2ASCII = $(BOOTDIR)/bin/native2ascii $(JAVA_TOOLS_FLAGS:%=-J%)
+RMIC = $(BOOTDIR)/bin/rmic $(JAVA_TOOLS_FLAGS:%=-J%)
+IDLJ = $(BOOTDIR)/bin/idlj $(JAVA_TOOLS_FLAGS:%=-J%)
+
+# Should not be used
+JAVA = /should/not/be/used
+
diff --git a/jdk/make/common/shared/Defs-linux.gmk b/jdk/make/common/shared/Defs-linux.gmk
new file mode 100644
index 0000000..9b940bd
--- /dev/null
+++ b/jdk/make/common/shared/Defs-linux.gmk
@@ -0,0 +1,179 @@
+#
+# Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Definitions for Linux.
+#
+
+# Default for COMPILER_WARNINGS_FATAL on Linux (C & C++ compiler warnings)
+ifndef COMPILER_WARNINGS_FATAL
+ COMPILER_WARNINGS_FATAL=false
+endif
+
+# Linux should use parallel compilation for best build times
+ifndef COMPILE_APPROACH
+ COMPILE_APPROACH = parallel
+endif
+
+# Indication that we are doing an incremental build.
+# This may trigger the creation of make depend files.
+ifndef INCREMENTAL_BUILD
+ INCREMENTAL_BUILD = false
+endif
+
+# FullPath just makes sure it never ends with a / and no duplicates
+define FullPath
+$(shell cd $1 2> $(DEV_NULL) && pwd)
+endef
+
+# OptFullPath: Absolute path name of a dir that might not initially exist.
+define OptFullPath
+$(shell if [ "$1" != "" -a -d "$1" ]; then (cd $1 && pwd); else echo "$1"; fi)
+endef
+
+# Location on system where jdk installs might be
+USRJDKINSTANCES_PATH =/opt/java
+
+# UNIXCOMMAND_PATH: path to where the most common Unix commands are.
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_UNIXCOMMAND_PATH)" "undefined"
+ UNIXCOMMAND_PATH :=$(call PrefixPath,$(ALT_UNIXCOMMAND_PATH))
+else
+ UNIXCOMMAND_PATH = /bin/
+endif
+
+# USRBIN_PATH: path to where the most common Unix commands are.
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_USRBIN_PATH)" "undefined"
+ USRBIN_PATH :=$(call PrefixPath,$(ALT_USRBIN_PATH))
+else
+ USRBIN_PATH = /usr/bin/
+endif
+
+# UNIXCCS_PATH: path to where the Solaris ported UNIX commands can be found
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_UNIXCCS_PATH)" "undefined"
+ UNIXCCS_PATH :=$(call PrefixPath,$(ALT_UNIXCCS_PATH))
+else
+ UNIXCCS_PATH = /usr/ccs/bin/
+endif
+
+# SLASH_JAVA: location of all network accessable files
+ifdef ALT_SLASH_JAVA
+ SLASH_JAVA :=$(ALT_SLASH_JAVA)
+else
+ SLASH_JAVA := $(call DirExists,/java,/java,/NOT-SET)
+endif
+
+# JDK_DEVTOOLS_DIR: common path for all the java devtools
+ifdef ALT_JDK_DEVTOOLS_DIR
+ JDK_DEVTOOLS_DIR =$(ALT_JDK_DEVTOOLS_DIR)
+else
+ JDK_DEVTOOLS_DIR =$(SLASH_JAVA)/devtools
+endif
+
+# COMPILER_PATH: path to where the compiler and tools are installed.
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_COMPILER_PATH)" "undefined"
+ COMPILER_PATH :=$(call PrefixPath,$(ALT_COMPILER_PATH))
+else
+ COMPILER_PATH =/usr/bin/
+endif
+
+# DEVTOOLS_PATH: for other tools required for building (such as zip, etc.)
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_DEVTOOLS_PATH)" "undefined"
+ DEVTOOLS_PATH :=$(call PrefixPath,$(ALT_DEVTOOLS_PATH))
+else
+ DEVTOOLS_PATH =/usr/bin/
+endif
+
+# _BOOTDIR1: First choice for a Bootstrap JDK, previous released JDK.
+# _BOOTDIR2: Second choice
+ifndef ALT_BOOTDIR
+ _BOOTDIR1 =$(SLASH_JAVA)/re/jdk/$(PREVIOUS_JDK_VERSION)/archive/fcs/binaries/$(PLATFORM)-$(ARCH)
+ _BOOTDIR2 =$(USRJDKINSTANCES_PATH)/jdk$(PREVIOUS_JDK_VERSION)
+endif
+
+# Always build headless on Linux
+BUILD_HEADLESS = true
+LIBM=-lm
+
+# GCC29_COMPILER_PATH: is the path to where the gcc 2.9 compiler is installed
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_GCC29_COMPILER_PATH)" "undefined"
+ GCC29_COMPILER_PATH :=$(call PrefixPath,$(ALT_GCC29_COMPILER_PATH))
+else
+ GCC29_COMPILER_PATH = $(JDK_DEVTOOLS_DIR)/$(PLATFORM)/gcc29/usr/
+endif
+
+_CUPS_HEADERS_PATH=/usr/include
+
+# Import JDK images allow for partial builds, components not built are
+# imported (or copied from) these import areas when needed.
+
+# BUILD_JDK_IMPORT_PATH: location of JDK install trees to import for
+# multiple platforms, e.g. windows-i586, solaris-sparc, linux-586, etc.
+ifdef ALT_BUILD_JDK_IMPORT_PATH
+ BUILD_JDK_IMPORT_PATH :=$(call FullPath,$(ALT_BUILD_JDK_IMPORT_PATH))
+else
+ BUILD_JDK_IMPORT_PATH = $(PROMOTED_BUILD_BINARIES)
+endif
+BUILD_JDK_IMPORT_PATH:=$(call AltCheckValue,BUILD_JDK_IMPORT_PATH)
+
+# JDK_IMPORT_PATH: location of JDK install tree (this version) to import
+ifdef ALT_JDK_IMPORT_PATH
+ JDK_IMPORT_PATH :=$(call FullPath,$(ALT_JDK_IMPORT_PATH))
+else
+ JDK_IMPORT_PATH = $(BUILD_JDK_IMPORT_PATH)/$(PLATFORM)-$(ARCH)$(_JDK_IMPORT_VARIANT)
+endif
+JDK_IMPORT_PATH:=$(call AltCheckValue,JDK_IMPORT_PATH)
+
+# HOTSPOT_IMPORT_PATH: location of hotspot pre-built files
+ifdef ALT_HOTSPOT_IMPORT_PATH
+ HOTSPOT_IMPORT_PATH :=$(call FullPath,$(ALT_HOTSPOT_IMPORT_PATH))
+else
+ HOTSPOT_IMPORT_PATH =$(JDK_IMPORT_PATH)
+endif
+HOTSPOT_IMPORT_PATH:=$(call AltCheckValue,HOTSPOT_IMPORT_PATH)
+
+# HOTSPOT_CLIENT_PATH: location of client jvm library file.
+ifeq ($(ARCH_DATA_MODEL), 32)
+ ifdef ALT_HOTSPOT_CLIENT_PATH
+ HOTSPOT_CLIENT_PATH :=$(call FullPath,$(ALT_HOTSPOT_CLIENT_PATH))
+ else
+ HOTSPOT_CLIENT_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/client
+ endif
+ HOTSPOT_CLIENT_PATH:=$(call AltCheckValue,HOTSPOT_CLIENT_PATH)
+endif
+
+# HOTSPOT_SERVER_PATH: location of server jvm library file.
+ifdef ALT_HOTSPOT_SERVER_PATH
+ HOTSPOT_SERVER_PATH :=$(call FullPath,$(ALT_HOTSPOT_SERVER_PATH))
+else
+ HOTSPOT_SERVER_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/server
+endif
+HOTSPOT_SERVER_PATH:=$(call AltCheckValue,HOTSPOT_SERVER_PATH)
+
diff --git a/jdk/make/common/shared/Defs-solaris.gmk b/jdk/make/common/shared/Defs-solaris.gmk
new file mode 100644
index 0000000..b3630ba
--- /dev/null
+++ b/jdk/make/common/shared/Defs-solaris.gmk
@@ -0,0 +1,189 @@
+#
+# Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Definitions for Solaris.
+#
+
+# Default for COMPILER_WARNINGS_FATAL on Solaris (C & C++ compiler warnings)
+ifndef COMPILER_WARNINGS_FATAL
+ COMPILER_WARNINGS_FATAL=false
+endif
+
+# Solaris should use parallel compilation for best build times
+ifndef COMPILE_APPROACH
+ COMPILE_APPROACH = parallel
+endif
+
+# Indication that we are doing an incremental build.
+# This may trigger the creation of make depend files.
+ifndef INCREMENTAL_BUILD
+ INCREMENTAL_BUILD = false
+endif
+
+# FullPath just makes sure it never ends with a / and no duplicates
+define FullPath
+$(shell cd $1 2> $(DEV_NULL) && pwd)
+endef
+
+# OptFullPath: Absolute path name of a dir that might not initially exist.
+define OptFullPath
+$(shell if [ "$1" != "" -a -d "$1" ]; then (cd $1 && pwd); else echo "$1"; fi)
+endef
+
+# Location on system where jdk installs might be
+USRJDKINSTANCES_PATH =/usr/jdk/instances
+
+# UNIXCOMMAND_PATH: path to where the most common Unix commands are.
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_UNIXCOMMAND_PATH)" "undefined"
+ UNIXCOMMAND_PATH :=$(call PrefixPath,$(ALT_UNIXCOMMAND_PATH))
+else
+ UNIXCOMMAND_PATH = /usr/bin/
+endif
+
+# UNIXCCS_PATH: path to where the less common UNIX commands can be found
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_UNIXCCS_PATH)" "undefined"
+ UNIXCCS_PATH :=$(call PrefixPath,$(ALT_UNIXCCS_PATH))
+else
+ UNIXCCS_PATH = /usr/ccs/bin/
+endif
+
+# SLASH_JAVA: location of all network accessable files
+ifdef ALT_SLASH_JAVA
+ SLASH_JAVA :=$(ALT_SLASH_JAVA)
+else
+ SLASH_JAVA := $(call DirExists,/java,/java,/NOT-SET)
+endif
+
+# JDK_DEVTOOLS_DIR: common path for all the java devtools
+ifdef ALT_JDK_DEVTOOLS_DIR
+ JDK_DEVTOOLS_DIR =$(ALT_JDK_DEVTOOLS_DIR)
+else
+ JDK_DEVTOOLS_DIR =$(SLASH_JAVA)/devtools
+endif
+
+# COMPILER_PATH: path to where the compiler and tools are installed.
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_COMPILER_PATH)" "undefined"
+ COMPILER_PATH :=$(call PrefixPath,$(ALT_COMPILER_PATH))
+else
+ # Careful here, COMPILER_VERSION may not be defined yet (see Compiler.gmk)
+ # If the place where we keep a set of Sun Studio compilers doesn't exist,
+ # try and use /opt/SUNWspro, the default location for the SS compilers.
+ # (DirExists checks for this path twice, an automount double check)
+ _SUNSTUDIO_SET_ROOT=$(JDK_DEVTOOLS_DIR)/$(ARCH_FAMILY)/SUNWspro
+ SUNSTUDIO_SET_ROOT:=$(call DirExists,$(_SUNSTUDIO_SET_ROOT),$(_SUNSTUDIO_SET_ROOT),)
+ ifneq ($(SUNSTUDIO_SET_ROOT),)
+ COMPILER_PATH =$(SUNSTUDIO_SET_ROOT)/$(COMPILER_VERSION)/bin/
+ else
+ COMPILER_PATH =/opt/SUNWspro/bin/
+ endif
+endif
+
+# DEVTOOLS_PATH: for other tools required for building (such as zip, etc.)
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_DEVTOOLS_PATH)" "undefined"
+ DEVTOOLS_PATH :=$(call PrefixPath,$(ALT_DEVTOOLS_PATH))
+else
+ ifdef ALT_JDK_DEVTOOLS_DIR
+ DEVTOOLS_PATH =$(JDK_DEVTOOLS_DIR)/$(ARCH_FAMILY)/bin/
+ else
+ ifdef OPENJDK
+ DEVTOOLS_PATH = /usr/bin/
+ else
+ DEVTOOLS_PATH =$(JDK_DEVTOOLS_DIR)/$(ARCH_FAMILY)/bin/
+ endif
+ endif
+endif
+
+# _BOOTDIR1: First choice for a Bootstrap JDK, previous released JDK.
+# _BOOTDIR2: Second choice
+ifndef ALT_BOOTDIR
+ _BOOTDIR1 =$(SLASH_JAVA)/re/jdk/$(PREVIOUS_JDK_VERSION)/archive/fcs/binaries/$(PLATFORM)-$(ARCH)
+ _BOOTDIR2 =$(USRJDKINSTANCES_PATH)/jdk$(PREVIOUS_JDK_VERSION)
+endif
+
+# GCC_COMPILER_PATH: path to where the gcc/g++ compiler and tools are installed
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifneq "$(origin ALT_GCC_COMPILER_PATH)" "undefined"
+ GCC_COMPILER_PATH :=$(call PrefixPath,$(ALT_GCC_COMPILER_PATH))
+else
+ GCC_COMPILER_PATH = $(JDK_DEVTOOLS_DIR)/$(ARCH_FAMILY)/gnucc/bin/
+endif
+
+
+# Always build headless on Solaris
+BUILD_HEADLESS = true
+
+_CUPS_HEADERS_PATH=/opt/sfw/cups/include
+
+# Import JDK images allow for partial builds, components not built are
+# imported (or copied from) these import areas when needed.
+
+# BUILD_JDK_IMPORT_PATH: location of JDK install trees to import for
+# multiple platforms, e.g. windows-i586, solaris-sparc, linux-586, etc.
+ifdef ALT_BUILD_JDK_IMPORT_PATH
+ BUILD_JDK_IMPORT_PATH :=$(call FullPath,$(ALT_BUILD_JDK_IMPORT_PATH))
+else
+ BUILD_JDK_IMPORT_PATH = $(PROMOTED_BUILD_BINARIES)
+endif
+BUILD_JDK_IMPORT_PATH:=$(call AltCheckValue,BUILD_JDK_IMPORT_PATH)
+
+# JDK_IMPORT_PATH: location of previously built JDK (this version) to import
+ifdef ALT_JDK_IMPORT_PATH
+ JDK_IMPORT_PATH :=$(call FullPath,$(ALT_JDK_IMPORT_PATH))
+else
+ JDK_IMPORT_PATH = $(BUILD_JDK_IMPORT_PATH)/$(PLATFORM)-$(ARCH)$(_JDK_IMPORT_VARIANT)
+endif
+JDK_IMPORT_PATH:=$(call AltCheckValue,JDK_IMPORT_PATH)
+
+# HOTSPOT_IMPORT_PATH: location of hotspot pre-built files
+ifdef ALT_HOTSPOT_IMPORT_PATH
+ HOTSPOT_IMPORT_PATH :=$(call FullPath,$(ALT_HOTSPOT_IMPORT_PATH))
+else
+ HOTSPOT_IMPORT_PATH =$(JDK_IMPORT_PATH)
+endif
+HOTSPOT_IMPORT_PATH:=$(call AltCheckValue,HOTSPOT_IMPORT_PATH)
+
+# HOTSPOT_CLIENT_PATH: location of client jvm library file.
+ifeq ($(ARCH_DATA_MODEL), 32)
+ ifdef ALT_HOTSPOT_CLIENT_PATH
+ HOTSPOT_CLIENT_PATH :=$(call FullPath,$(ALT_HOTSPOT_CLIENT_PATH))
+ else
+ HOTSPOT_CLIENT_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/client
+ endif
+ HOTSPOT_CLIENT_PATH:=$(call AltCheckValue,HOTSPOT_CLIENT_PATH)
+endif
+
+# HOTSPOT_SERVER_PATH: location of server jvm library file.
+ifdef ALT_HOTSPOT_SERVER_PATH
+ HOTSPOT_SERVER_PATH :=$(call FullPath,$(ALT_HOTSPOT_SERVER_PATH))
+else
+ HOTSPOT_SERVER_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/server
+endif
+HOTSPOT_SERVER_PATH:=$(call AltCheckValue,HOTSPOT_SERVER_PATH)
+
diff --git a/jdk/make/common/shared/Defs-utils.gmk b/jdk/make/common/shared/Defs-utils.gmk
new file mode 100644
index 0000000..dc84d79
--- /dev/null
+++ b/jdk/make/common/shared/Defs-utils.gmk
@@ -0,0 +1,211 @@
+#
+# Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Shared variables for standard unix utilties on all platforms.
+#
+# Assumes Platform.gmk has been included before this file.
+#
+# These input UTILS_* variables can be defined at anytime, ideally once.
+# Unix Commands: Normally /bin/, /usr/bin/. or C:/mksnt/mksnt/
+# UTILS_COMMAND_PATH
+# /usr/bin/
+# UTILS_USR_BIN_PATH
+# /usr/ccs/bin/ (sccs, m4, lex, yacc, as, ar, strip, mcs)
+# UTILS_CCS_BIN_PATH
+# Dev Tools: zip, unzip, etc that we may have special versions of
+# UTILS_DEVTOOL_PATH
+#
+# WARNING: This file cannot assume that any of these utilties are available
+# to be run via their variable names defined here.
+# The paths inside the UTILS_* variables may not be defined yet.
+#
+# Note: There is no guarantee that all these exist on all platforms.
+# Some only make sense for one platform, but are harmless.
+#
+
+ifeq ($(PLATFORM),linux)
+ UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH)
+ UTILS_USR_BIN_PATH=$(USRBIN_PATH)
+ UTILS_CCS_BIN_PATH=$(USRBIN_PATH)
+ UTILS_DEVTOOL_PATH=$(USRBIN_PATH)
+endif
+
+ifeq ($(PLATFORM),solaris)
+ UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH)
+ UTILS_USR_BIN_PATH=$(UNIXCOMMAND_PATH)
+ UTILS_CCS_BIN_PATH=$(UNIXCCS_PATH)
+ UTILS_DEVTOOL_PATH=$(DEVTOOLS_PATH)
+endif
+
+ifeq ($(PLATFORM),windows)
+ UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH)
+ UTILS_USR_BIN_PATH=$(UNIXCOMMAND_PATH)
+ UTILS_CCS_BIN_PATH=$(UNIXCOMMAND_PATH)
+ UTILS_DEVTOOL_PATH=$(DEVTOOLS_PATH)
+endif
+
+# Utilities ant and findbugs
+ifndef ANT_HOME
+ ANT_HOME = $(JDK_DEVTOOLS_DIR)/share/ant/latest
+endif
+ANT = $(ANT_HOME)/bin/ant
+ifndef FINDBUGS_HOME
+ FINDBUGS_HOME = $(JDK_DEVTOOLS_DIR)/share/findbugs/latest
+endif
+FINDBUGS = $(FINDBUGS_HOME)/bin/findbugs
+
+# Utilities
+ADB = $(UTILS_COMMAND_PATH)adb
+AR = $(UTILS_CCS_BIN_PATH)ar
+AS = $(UTILS_CCS_BIN_PATH)as
+BASENAME = $(UTILS_COMMAND_PATH)basename
+CAT = $(UTILS_COMMAND_PATH)cat
+CHMOD = $(UTILS_COMMAND_PATH)chmod
+CMP = $(UTILS_USR_BIN_PATH)cmp
+COMM = $(UTILS_USR_BIN_PATH)comm
+COMPRESS = $(UTILS_USR_BIN_PATH)compress
+CP = $(UTILS_COMMAND_PATH)cp
+CPIO = $(UTILS_COMMAND_PATH)cpio
+CUT = $(UTILS_USR_BIN_PATH)cut
+DATE = $(UTILS_COMMAND_PATH)date
+DF = $(UTILS_COMMAND_PATH)df
+DIFF = $(UTILS_USR_BIN_PATH)diff
+DIRNAME = $(UTILS_USR_BIN_PATH)dirname
+ECHO = $(UTILS_COMMAND_PATH)echo
+EGREP = $(UTILS_COMMAND_PATH)egrep
+EXPR = $(UTILS_USR_BIN_PATH)expr
+FILE = $(UTILS_USR_BIN_PATH)file
+FIND = $(UTILS_USR_BIN_PATH)find
+FMT = $(UTILS_COMMAND_PATH)fmt
+GDB = $(UTILS_USR_BIN_PATH)gdb
+GREP = $(UTILS_COMMAND_PATH)grep
+GUNZIP = $(UTILS_COMMAND_PATH)gunzip
+HEAD = $(UTILS_USR_BIN_PATH)head
+ID = $(UTILS_COMMAND_PATH)id
+ISAINFO = $(UTILS_COMMAND_PATH)isainfo
+KSH = $(UTILS_COMMAND_PATH)ksh
+LD = $(UTILS_CCS_BIN_PATH)ld
+LEX = $(UTILS_CCS_BIN_PATH)lex
+LN = $(UTILS_COMMAND_PATH)ln
+LS = $(UTILS_COMMAND_PATH)ls
+MCS = $(UTILS_CCS_BIN_PATH)mcs
+M4 = $(UTILS_CCS_BIN_PATH)m4
+MKDIR = $(UTILS_COMMAND_PATH)mkdir
+MKSINFO = $(UTILS_COMMAND_PATH)mksinfo
+MSGFMT = $(UTILS_USR_BIN_PATH)msgfmt
+MV = $(UTILS_COMMAND_PATH)mv
+NAWK = $(UTILS_USR_BIN_PATH)nawk
+NM = $(UTILS_CCS_BIN_PATH)nm
+PKGMK = $(UTILS_COMMAND_PATH)pkgmk
+PRINTF = $(UTILS_USR_BIN_PATH)printf
+PWD = $(UTILS_COMMAND_PATH)pwd
+RC = $(UTILS_COMMAND_PATH)rc
+RMDIR = $(UTILS_COMMAND_PATH)rmdir
+RPM = $(UTILS_COMMAND_PATH)rpm
+RPMBUILD = $(UTILS_COMMAND_PATH)rpmbuild
+SCCS = $(UTILS_CCS_BIN_PATH)sccs
+SED = $(UTILS_COMMAND_PATH)sed
+SH = $(UTILS_COMMAND_PATH)sh
+SHOWREV = $(UTILS_USR_BIN_PATH)showrev
+SORT = $(UTILS_COMMAND_PATH)sort
+STRIP = $(UTILS_CCS_BIN_PATH)strip
+TAIL = $(UTILS_USR_BIN_PATH)tail
+TAR = $(UTILS_COMMAND_PATH)tar
+TEST = $(UTILS_USR_BIN_PATH)test
+TOUCH = $(UTILS_COMMAND_PATH)touch
+TR = $(UTILS_USR_BIN_PATH)tr
+TRUE = $(UTILS_COMMAND_PATH)true
+UNAME = $(UTILS_COMMAND_PATH)uname
+UNIQ = $(UTILS_USR_BIN_PATH)uniq
+UNZIP = $(UTILS_USR_BIN_PATH)unzip
+UNZIPSFX = $(UTILS_DEVTOOL_PATH)unzipsfx
+WC = $(UTILS_USR_BIN_PATH)wc
+WHICH = $(UTILS_USR_BIN_PATH)which
+YACC = $(UTILS_CCS_BIN_PATH)yacc
+ZIPEXE = $(UTILS_DEVTOOL_PATH)zip
+
+# Special cases
+#RM is defined by GNU Make as 'rm -f'
+CD = cd # intrinsic unix command
+
+# Windows specific
+ifeq ($(PLATFORM),windows)
+ ifdef USING_CYGWIN
+ # Intrinsic unix command, with backslash-escaped character interpretation
+ ECHO = $(UNIXCOMMAND_PATH)echo -e
+ ZIPEXE = $(UNIXCOMMAND_PATH)zip
+ UNZIP = $(UNIXCOMMAND_PATH)unzip
+ else
+ ZIPEXE = $(UTILS_DEVTOOL_PATH)zip
+ UNZIP = $(UTILS_DEVTOOL_PATH)unzip
+ endif
+ # Re-define some utilities
+ LEX =# override GNU Make intrinsic: no lex on windows
+ NAWK = $(UNIXCOMMAND_PATH)awk
+endif
+
+# Linux specific
+ifeq ($(PLATFORM),linux)
+ # A few redefines
+ # Allows for builds on Debian GNU Linux, basename is in a different place
+ BASENAME=$(firstword $(wildcard $(UTILS_COMMAND_PATH)basename) \
+ $(wildcard $(UTILS_USR_BIN_PATH)basename))
+ # RPM 4 has replaced "rpm -b" with an entirely new utility "rpmbuild".
+ # Also, some distribution (Ubuntu, Debian, others?) place the rpm command
+ # itself in /usr/bin rather than it's traditional home in /bin.
+ RPM=$(firstword $(wildcard $(UTILS_COMMAND_PATH)rpm) \
+ $(wildcard $(UTILS_USR_BIN_PATH)rpm))
+ RPMBUILD=$(firstword $(wildcard $(UTILS_COMMAND_PATH)rpmbuild) \
+ $(wildcard $(UTILS_USR_BIN_PATH)rpmbuild) \
+ $(wildcard $(UTILS_COMMAND_PATH)rpm) \
+ $(wildcard $(UTILS_USR_BIN_PATH)rpm))
+ # Most Linux distros have "sort" in /bin. Ubuntu, Debian and perhaps
+ # others have it in /usr/bin.
+ SORT=$(firstword $(wildcard $(UTILS_COMMAND_PATH)sort) \
+ $(wildcard $(UTILS_USR_BIN_PATH)sort))
+ NAWK = $(USRBIN_PATH)gawk
+ # Intrinsic unix command, with backslash-escaped character interpretation
+ ECHO = /bin/echo -e
+ # These are really in UTILS_USR_BIN_PATH on Linux (only sccs is not)
+ AR = $(UTILS_USR_BIN_PATH)ar
+ AS = $(UTILS_USR_BIN_PATH)as
+ LD = $(UTILS_USR_BIN_PATH)ld
+ LEX = $(UTILS_USR_BIN_PATH)lex
+ MCS = $(UTILS_USR_BIN_PATH)mcs
+ M4 = $(UTILS_USR_BIN_PATH)m4
+ NM = $(UTILS_USR_BIN_PATH)nm
+ STRIP = $(UTILS_USR_BIN_PATH)strip
+ YACC = $(UTILS_USR_BIN_PATH)yacc
+endif
+
+# Solaris specific
+ifeq ($(PLATFORM),solaris)
+ # Intrinsic unix command, with backslash-escaped character interpretation
+ # (not using -e will cause build failure when using /bin/bash)
+ # (using -e breaks something else)
+ ECHO = /usr/bin/echo
+endif
+
diff --git a/jdk/make/common/shared/Defs-windows.gmk b/jdk/make/common/shared/Defs-windows.gmk
new file mode 100644
index 0000000..2506041
--- /dev/null
+++ b/jdk/make/common/shared/Defs-windows.gmk
@@ -0,0 +1,658 @@
+#
+# Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Definitions for Windows.
+#
+
+# Default for COMPILER_WARNINGS_FATAL on Windows (C++ compiler warnings)
+# Level: Default is 3, 0 means none, 4 is the most but may be unreliable
+# Some makefiles may have set this to 0 to turn off warnings completely,
+# which also effectively creates a COMPILER_WARNINGS_FATAL=false situation.
+# Program.gmk may turn this down to 2 (building .exe's).
+# Windows 64bit platforms are less likely to be warning free.
+# Historically, Windows 32bit builds should be mostly warning free.
+ifndef COMPILER_WARNING_LEVEL
+ COMPILER_WARNING_LEVEL=3
+endif
+ifndef COMPILER_WARNINGS_FATAL
+ COMPILER_WARNINGS_FATAL=false
+endif
+
+# Windows should use parallel compilation for best build times
+ifndef COMPILE_APPROACH
+ COMPILE_APPROACH = normal
+endif
+
+# Indication that we are doing an incremental build.
+# This may trigger the creation of make depend files.
+# (This may not be working on windows yet, always force to false.)
+override INCREMENTAL_BUILD = false
+
+# WARNING: This is extremely touch stuff, between CYGWIN vs. MKS and all
+# variations of MKS and CYGWIN releases, and 32bit vs 64bit,
+# this file can give you nightmares.
+#
+# Notes:
+# Keep all paths in the windows "mixed" style except CYGWIN UNXIXCOMMAND_PATH.
+# Use of PrefixPath is critical, some variables must end with / (see NOTE).
+# Use of quotes is critical due to possible spaces in paths coming from
+# the environment variables, be careful.
+# First convert \ to / with subst, keep it quoted due to blanks, then
+# use cygpath -s or dosname -s to get the short non-blank name.
+# If the MKS is old and doesn't have a dosname -s, you will be forced
+# to set ALT variables with the short non-space directory names.
+# If dosname doesn't appear to work, we won't use it.
+# The dosname utility also wants to accept stdin if it is not supplied
+# any path on the command line, this is really dangerous when using
+# make variables that can easily become empty, so I use:
+# echo $1 | dosname -s instead of dosname -s $1
+# to prevent dosname from hanging up the make process when $1 is empty.
+# The cygpath utility does not have this problem.
+# The ALT values should never really have spaces or use \.
+# Suspect these environment variables to have spaces and/or \ characters:
+# SYSTEMROOT, SystemRoot, WINDIR, windir, PROGRAMFILES, ProgramFiles,
+# DXSDK_DIR, MSTOOLS, Mstools, MSSDK, MSSdk, VC71COMNTOOLS,
+# MSVCDIR, MSVCDir.
+# So use $(subst \,/,) on them first adding quotes and placing them in
+# their own variable assigned with :=, then use FullPath.
+#
+
+# Use FullPath to get C:/ style non-spaces path. Never ends with a /!
+ifdef USING_CYGWIN
+# We assume cygpath is available in the search path
+# NOTE: Use of 'pwd' with CYGWIN will not get you a mixed style path!
+CYGPATH_CMD=cygpath -a -s -m
+define FullPath
+$(shell $(CYGPATH_CMD) $1 2> $(DEV_NULL))
+endef
+define OptFullPath
+$(shell if [ "$1" != "" -a -d "$1" ]; then $(CYGPATH_CMD) "$1"; else echo "$1"; fi)
+endef
+else
+# Temporary until we upgrade to MKS 8.7, MKS pwd returns mixed mode path
+define FullPath
+$(shell cd $1 2> $(DEV_NULL) && pwd)
+endef
+define OptFullPath
+$(shell if [ "$1" != "" -a -d "$1" ]; then (cd $1 && pwd); else echo "$1"; fi)
+endef
+endif
+
+# System drive
+ifdef SYSTEMDRIVE
+ _system_drive =$(SYSTEMDRIVE)
+else
+ ifdef SystemDrive
+ _system_drive =$(SystemDrive)
+ endif
+endif
+_system_drive:=$(call CheckValue,_system_drive,C:)
+
+# UNIXCOMMAND_PATH: path to where the most common Unix commands are.
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifdef ALT_UNIXCOMMAND_PATH
+ xALT_UNIXCOMMAND_PATH :="$(subst \,/,$(ALT_UNIXCOMMAND_PATH))"
+ fxALT_UNIXCOMMAND_PATH :=$(call FullPath,$(xALT_UNIXCOMMAND_PATH))
+ UNIXCOMMAND_PATH :=$(call PrefixPath,$(fxALT_UNIXCOMMAND_PATH))
+else
+ ifdef USING_CYGWIN
+ UNIXCOMMAND_PATH :=$(call PrefixPath,/usr/bin)
+ else
+ ifdef ROOTDIR
+ xROOTDIR :="$(subst \,/,$(ROOTDIR))"
+ _rootdir :=$(call FullPath,$(xROOTDIR))
+ else
+ xROOTDIR :="$(_system_drive)/mksnt"
+ _rootdir :=$(call FullPath,$(xROOTDIR))
+ endif
+ ifneq ($(_rootdir),)
+ UNIXCOMMAND_PATH :=$(call PrefixPath,$(_rootdir)/mksnt)
+ endif
+ endif
+endif
+UNIXCOMMAND_PATH:=$(call AltCheckSpaces,UNIXCOMMAND_PATH)
+
+# Get version of MKS or CYGWIN
+ifdef USING_CYGWIN
+_CYGWIN_VER :=$(shell $(UNAME))
+CYGWIN_VER :=$(call GetVersion,$(_CYGWIN_VER))
+else # MKS
+_MKS_VER :=$(shell $(MKSINFO) 2>&1 | $(GREP) Release | $(TAIL) -1 | $(SED) -e 's@.*\(Release.*\)@\1@')
+MKS_VER :=$(call GetVersion,$(_MKS_VER))
+# At this point, we can re-define FullPath to use DOSNAME_CMD
+CHECK_MKS87:=$(call CheckVersions,$(MKS_VER),8.7)
+TRY_DOSNAME:=false
+ifeq ($(CHECK_MKS87),same)
+TRY_DOSNAME:=true
+endif
+# Newer should be ok
+ifeq ($(CHECK_MKS87),newer)
+TRY_DOSNAME:=true
+endif
+ifeq ($(TRY_DOSNAME),true)
+ifeq ($(shell $(UNIXCOMMAND_PATH)dosname -s $(_system_drive)/ 2> $(DEV_NULL)),$(_system_drive)/)
+_DOSNAME=$(UNIXCOMMAND_PATH)dosname
+DOSNAME_CMD:=$(_DOSNAME) -s
+define FullPath
+$(subst //,/,$(shell echo $1 | $(DOSNAME_CMD) 2> $(DEV_NULL)))
+endef
+endif # test dosname -s
+endif # TRY_DOSNAME
+endif # MKS
+
+# We try to get references to what we need via the default component
+# environment variables, or what was used historically.
+
+# Process Windows values into FullPath values, these paths may have \ chars
+
+# System root
+ifdef SYSTEMROOT
+ xSYSTEMROOT :="$(subst \,/,$(SYSTEMROOT))"
+ _system_root :=$(call FullPath,$(xSYSTEMROOT))
+else
+ ifdef SystemRoot
+ xSYSTEMROOT :="$(subst \,/,$(SystemRoot))"
+ _system_root :=$(call FullPath,$(xSYSTEMROOT))
+ else
+ ifdef WINDIR
+ xWINDIR :="$(subst \,/,$(WINDIR))"
+ _system_root :=$(call FullPath,$(xWINDIR))
+ else
+ ifdef windir
+ xWINDIR :="$(subst \,/,$(windir))"
+ _system_root :=$(call FullPath,$(xWINDIR))
+ endif
+ endif
+ endif
+endif
+_system_root:=$(call CheckValue,_system_root,$(_system_drive)/WINNT)
+
+# Program Files directory
+ifdef PROGRAMFILES
+ xPROGRAMFILES :="$(subst \,/,$(PROGRAMFILES))"
+else
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ xPROGRAMFILES :="$(_system_drive)/Program Files"
+ else
+ xPROGRAMFILES :="$(_system_drive)/Program Files (x86)"
+ endif
+endif
+ifeq ($(ARCH_DATA_MODEL), 32)
+ _program_files :=$(call FullPath,$(xPROGRAMFILES))
+else
+ ifdef PROGRAMW6432
+ xPROGRAMW6432 :="$(subst \,/,$(PROGRAMW6432))"
+ else
+ xPROGRAMW6432 :="$(_system_drive)/Program Files"
+ endif
+ _program_files :=$(call FullPath,$(xPROGRAMW6432))
+ _program_files32 :=$(call FullPath,$(xPROGRAMFILES))
+ ifneq ($(word 1,$(_program_files32)),$(_program_files32))
+ _program_files32:=
+ endif
+endif
+ifneq ($(word 1,$(_program_files)),$(_program_files))
+ _program_files:=
+endif
+
+# DirectX SDK
+ifdef ALT_DXSDK_DRIVE
+ _dx_sdk_dir =$(ALT_DXSDK_DRIVE):/DXSDK
+else
+ ifdef DXSDK_DIR
+ xDXSDK_DIR :="$(subst \,/,$(DXSDK_DIR))"
+ else
+ xDXSDK_DIR :="$(_system_drive)/DXSDK"
+ endif
+ _dx_sdk_dir :=$(call FullPath,$(xDXSDK_DIR))
+endif
+
+# Compilers, SDK, and Visual Studio (MSDEV) [32bit is different from 64bit]
+ifeq ($(ARCH_DATA_MODEL), 32)
+ # Try looking in MSVCDIR or MSVCDir area first (set by vcvars32.bat)
+ ifdef MSVCDIR
+ xMSVCDIR :="$(subst \,/,$(MSVCDIR))"
+ _msvc_dir :=$(call FullPath,$(xMSVCDIR))
+ else
+ ifdef MSVCDir
+ xMSVCDIR :="$(subst \,/,$(MSVCDir))"
+ _msvc_dir :=$(call FullPath,$(xMSVCDIR))
+ else
+ ifneq ($(_program_files),)
+ xMSVCDIR :="$(_program_files)/Microsoft Visual Studio .NET 2003/Vc7"
+ _msvc_dir :=$(call FullPath,$(xMSVCDIR))
+ endif
+ endif
+ endif
+ ifneq ($(subst MSDev98,OLDOLDOLD,$(_msvc_dir)),$(_msvc_dir))
+ _msvc_dir :=
+ endif
+ # If we still don't have it, look for VS71COMNTOOLS, setup by installer?
+ ifeq ($(_msvc_dir),)
+ ifdef VS71COMNTOOLS # /Common/Tools directory, use ../../Vc7
+ xVS71COMNTOOLS :="$(subst \,/,$(VS71COMNTOOLS))"
+ _vs71tools :=$(call FullPath,$(xVS71COMNTOOLS))
+ endif
+ ifneq ($(_vs71tools),)
+ _msvc_dir :=$(_vs71tools)/../../Vc7
+ endif
+ endif
+ ifneq ($(_msvc_dir),)
+ _compiler_bin :=$(_msvc_dir)/Bin
+ _redist_sdk :=$(_msvc_dir)/../SDK/v1.1/Bin
+ _ms_sdk :=$(_msvc_dir)/PlatformSDK
+ endif
+endif
+
+# The Microsoft Platform SDK installed by itself
+ifneq ($(_program_files),)
+ xPSDK :="$(_program_files)/Microsoft Platform SDK"
+ _psdk :=$(call FullPath,$(xPSDK))
+ ifeq ($(_psdk),)
+ xPSDK :="$(_program_files)/Microsoft SDK"
+ _psdk :=$(call FullPath,$(xMSSDK))
+ endif
+endif
+
+# If no SDK found yet, look in other places
+ifeq ($(_ms_sdk),)
+ ifdef MSSDK
+ xMSSDK :="$(subst \,/,$(MSSDK))"
+ _ms_sdk :=$(call FullPath,$(xMSSDK))
+ else
+ ifdef MSSdk
+ xMSSDK :="$(subst \,/,$(MSSdk))"
+ _ms_sdk :=$(call FullPath,$(xMSSDK))
+ else
+ _ms_sdk :=$(_psdk)
+ endif
+ endif
+endif
+
+# Compilers for 64bit are from SDK
+ifeq ($(ARCH_DATA_MODEL), 64)
+ ifneq ($(_ms_sdk),)
+ ifeq ($(ARCH), ia64)
+ _compiler_bin :=$(_ms_sdk)/Bin/Win64
+ endif
+ ifeq ($(ARCH), amd64)
+ _compiler_bin :=$(_ms_sdk)/Bin/Win64/x86/$(ARCH)
+ _redist_sdk :=$(_ms_sdk)/redist/win64/AMD64
+ endif
+ endif
+endif
+
+# Location on system where jdk installs might be
+ifneq ($(_program_files),)
+ USRJDKINSTANCES_PATH =$(_program_files)/Java
+else
+ USRJDKINSTANCES_PATH =$(_system_drive)/
+endif
+
+# SLASH_JAVA: location of all network accessable files
+ifdef ALT_SLASH_JAVA
+ xALT_SLASH_JAVA :="$(subst \,/,$(ALT_SLASH_JAVA))"
+ SLASH_JAVA :=$(call FullPath,$(xALT_SLASH_JAVA))
+else
+ ifdef ALT_JDK_JAVA_DRIVE
+ SLASH_JAVA =$(JDK_JAVA_DRIVE)
+ else
+ SLASH_JAVA =J:
+ endif
+endif
+SLASH_JAVA:=$(call AltCheckSpaces,SLASH_JAVA)
+SLASH_JAVA:=$(call AltCheckValue,SLASH_JAVA)
+
+# JDK_DEVTOOLS_DIR: common path for all the java devtools
+ifdef ALT_JDK_DEVTOOLS_DIR
+ xALT_JDK_DEVTOOLS_DIR :="$(subst \,/,$(ALT_JDK_DEVTOOLS_DIR))"
+ JDK_DEVTOOLS_DIR :=$(call FullPath,$(xALT_JDK_DEVTOOLS_DIR))
+else
+ JDK_DEVTOOLS_DIR =$(SLASH_JAVA)/devtools
+endif
+JDK_DEVTOOLS_DIR:=$(call AltCheckSpaces,JDK_DEVTOOLS_DIR)
+JDK_DEVTOOLS_DIR:=$(call AltCheckValue,JDK_DEVTOOLS_DIR)
+
+# COMPILER_PATH: path to where the compiler and tools are installed.
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifdef ALT_COMPILER_PATH
+ xALT_COMPILER_PATH :="$(subst \,/,$(ALT_COMPILER_PATH))"
+ fxALT_COMPILER_PATH :=$(call FullPath,$(xALT_COMPILER_PATH))
+ COMPILER_PATH :=$(call PrefixPath,$(fxALT_COMPILER_PATH))
+else
+ COMPILER_PATH :=$(call PrefixPath,$(_compiler_bin))
+endif
+COMPILER_PATH :=$(call AltCheckSpaces,COMPILER_PATH)
+
+# MSDEVTOOLS_PATH: path to where the additional MS Compiler tools are.
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifdef ALT_MSDEVTOOLS_PATH
+ xALT_MSDEVTOOLS_PATH :="$(subst \,/,$(ALT_MSDEVTOOLS_PATH))"
+ fxALT_MSDEVTOOLS_PATH :=$(call FullPath,$(xALT_MSDEVTOOLS_PATH))
+ MSDEVTOOLS_PATH :=$(call PrefixPath,$(fxALT_MSDEVTOOLS_PATH))
+else
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ ifdef MSTOOLS
+ xMSTOOLS :="$(subst \,/,$(MSTOOLS))"
+ _ms_tools :=$(call FullPath,$(xMSTOOLS))
+ else
+ ifdef Mstools
+ xMSTOOLS :="$(subst \,/,$(Mstools))"
+ _ms_tools :=$(call FullPath,$(xMSTOOLS))
+ else
+ _ms_tools :=
+ endif
+ endif
+ ifneq ($(_ms_tools),)
+ _ms_tools_bin :=$(_ms_tools)/Bin
+ else
+ # Assumes compiler bin is .../Bin/win64/x86/AMD64, rc.exe is 3 levels up
+ _ms_tools_bin :=$(_compiler_bin)/../../..
+ endif
+ else
+ _ms_tools_bin :=$(_compiler_bin)
+ endif
+ MSDEVTOOLS_PATH :=$(call PrefixPath,$(_ms_tools_bin))
+endif
+MSDEVTOOLS_PATH:=$(call AltCheckSpaces,MSDEVTOOLS_PATH)
+
+# DEVTOOLS_PATH: for other tools required for building (such as zip, etc.)
+# NOTE: Must end with / so that it could be empty, allowing PATH usage.
+ifdef ALT_DEVTOOLS_PATH
+ xALT_DEVTOOLS_PATH :="$(subst \,/,$(ALT_DEVTOOLS_PATH))"
+ fxALT_DEVTOOLS_PATH :=$(call FullPath,$(xALT_DEVTOOLS_PATH))
+ DEVTOOLS_PATH :=$(call PrefixPath,$(fxALT_DEVTOOLS_PATH))
+else
+ ifdef USING_CYGWIN
+ DEVTOOLS_PATH :=$(UNIXCOMMAND_PATH)
+ else
+ xDEVTOOLS_PATH :="$(_system_drive)/utils"
+ fxDEVTOOLS_PATH :=$(call FullPath,$(xDEVTOOLS_PATH))
+ DEVTOOLS_PATH :=$(call PrefixPath,$(fxDEVTOOLS_PATH))
+ endif
+endif
+DEVTOOLS_PATH:=$(call AltCheckSpaces,DEVTOOLS_PATH)
+
+# _BOOTDIR1: First choice for a Bootstrap JDK, previous released JDK.
+# _BOOTDIR2: Second choice
+ifndef ALT_BOOTDIR
+ _BOOTDIR1 =$(_system_drive)/jdk$(PREVIOUS_JDK_VERSION)
+ _BOOTDIR2 =$(USRJDKINSTANCES_PATH)/jdk$(PREVIOUS_JDK_VERSION)
+endif
+
+# See if SDK area has a msvcrt.dll file, directory may exist w/o msvcr* files
+_REDIST_SDK_EXISTS := $(shell \
+ if [ -f "$(_redist_sdk)/msvcrt.dll" ]; then \
+ echo "true"; \
+ else \
+ echo "false"; \
+ fi)
+_REDIST71_SDK_EXISTS := $(shell \
+ if [ -f "$(_redist_sdk)/msvcr71.dll" ]; then \
+ echo "true"; \
+ else \
+ echo "false"; \
+ fi)
+
+# 32 bit needs 2 runtimes
+ifeq ($(ARCH_DATA_MODEL), 32)
+
+ # MSVCRT_DLL_PATH: location of msvcrt.dll that will be re-distributed
+ ifdef ALT_MSVCRT_DLL_PATH
+ xALT_MSVCRT_DLL_PATH :="$(subst \,/,$(ALT_MSVCRT_DLL_PATH))"
+ MSVCRT_DLL_PATH :=$(call FullPath,$(xALT_MSVCRT_DLL_PATH))
+ else
+ ifeq ($(_REDIST_SDK_EXISTS), true)
+ xREDIST_DIR :=$(_redist_sdk)
+ else
+ xREDIST_DIR :=$(_system_root)/system32
+ endif
+ MSVCRT_DLL_PATH :=$(call FullPath,$(xREDIST_DIR))
+ endif
+ MSVCRT_DLL_PATH:=$(call AltCheckSpaces,MSVCRT_DLL_PATH)
+ MSVCRT_DLL_PATH:=$(call AltCheckValue,MSVCRT_DLL_PATH)
+
+ # MSVCR71_DLL_PATH: location of msvcr71.dll that will be re-distributed
+ ifdef ALT_MSVCR71_DLL_PATH
+ xALT_MSVCR71_DLL_PATH :="$(subst \,/,$(ALT_MSVCR71_DLL_PATH))"
+ MSVCR71_DLL_PATH :=$(call FullPath,$(xALT_MSVCR71_DLL_PATH))
+ else
+ ifeq ($(_REDIST71_SDK_EXISTS), true)
+ xREDIST71_DIR :=$(_redist_sdk)
+ else
+ xREDIST71_DIR :=$(_system_root)/system32
+ endif
+ MSVCR71_DLL_PATH :=$(call FullPath,$(xREDIST71_DIR))
+ endif
+ MSVCR71_DLL_PATH :=$(call AltCheckSpaces,MSVCR71_DLL_PATH)
+ MSVCR71_DLL_PATH:=$(call AltCheckValue,MSVCR71_DLL_PATH)
+
+else
+
+ # MSVCRT_DLL_PATH: location of msvcrt.dll that will be re-distributed
+ ifdef ALT_MSVCRT_DLL_PATH
+ xALT_MSVCRT_DLL_PATH :="$(subst \,/,$(ALT_MSVCRT_DLL_PATH))"
+ MSVCRT_DLL_PATH :=$(call FullPath,$(xALT_MSVCRT_DLL_PATH))
+ else
+ ifeq ($(_REDIST_SDK_EXISTS), true)
+ xREDIST_DIR :=$(_redist_sdk)
+ else
+ xREDIST_DIR :=$(_system_root)/SysWOW64
+ endif
+ MSVCRT_DLL_PATH :=$(call FullPath,$(xREDIST_DIR))
+ endif
+ MSVCRT_DLL_PATH:=$(call AltCheckSpaces,MSVCRT_DLL_PATH)
+ MSVCRT_DLL_PATH:=$(call AltCheckValue,MSVCRT_DLL_PATH)
+
+endif
+
+# DXSDK_PATH: path to Microsoft DirectX SDK Include and Lib
+ifdef ALT_DXSDK_PATH
+ xALT_DXSDK_PATH :="$(subst \,/,$(ALT_DXSDK_PATH))"
+ DXSDK_PATH :=$(call FullPath,$(xALT_DXSDK_PATH))
+else
+ _DXSDK_PATH1 :=$(_dx_sdk_dir)
+ _DXSDK_PATH2 :=$(JDK_DEVTOOLS_DIR)/windows/dxsdk
+ DXSDK_PATH :=$(call DirExists,$(_DXSDK_PATH1),$(_DXSDK_PATH2),$(_dx_sdk_dir))
+endif
+DXSDK_PATH :=$(call AltCheckSpaces,DXSDK_PATH)
+DXSDK_PATH:=$(call AltCheckValue,DXSDK_PATH)
+
+# DXSDK_INCLUDE_PATH: path to Microsoft DirectX SDK Include
+ifdef ALT_DXSDK_INCLUDE_PATH
+ xALT_DXSDK_INCLUDE_PATH :="$(subst \,/,$(ALT_DXSDK_INCLUDE_PATH))"
+ DXSDK_INCLUDE_PATH :=$(call FullPath,$(xALT_DXSDK_INCLUDE_PATH))
+else
+ DXSDK_INCLUDE_PATH =$(subst //,/,$(DXSDK_PATH)/Include)
+endif
+
+# DXSDK_LIB_PATH: path to Microsoft DirectX SDK Lib
+ifdef ALT_DXSDK_LIB_PATH
+ xALT_DXSDK_LIB_PATH :="$(subst \,/,$(ALT_DXSDK_LIB_PATH))"
+ DXSDK_LIB_PATH :=$(call FullPath,$(xALT_DXSDK_LIB_PATH))
+else
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ # 64bit libs are located in "Lib/x64" subdir
+ DXSDK_LIB_PATH =$(subst //,/,$(DXSDK_PATH)/Lib/x64)
+ else
+ DXSDK_LIB_PATH =$(subst //,/,$(DXSDK_PATH)/Lib)
+ endif
+endif
+
+# DEPLOY_MSSDK: Microsoft SDK for this platform (for deploy)
+ifdef ALT_DEPLOY_MSSDK
+ xALT_DEPLOY_MSSDK :="$(subst \,/,$(ALT_DEPLOY_MSSDK))"
+ DEPLOY_MSSDK :=$(call FullPath,$(xALT_DEPLOY_MSSDK))
+else
+ DEPLOY_MSSDK :=$(_ms_sdk)
+endif
+DEPLOY_MSSDK:=$(call AltCheckSpaces,DEPLOY_MSSDK)
+
+# INSTALL_MSSDK: Microsoft Installer SDK for this platform (for install)
+ifdef ALT_INSTALL_MSSDK
+ xALT_INSTALL_MSSDK :="$(subst \,/,$(ALT_INSTALL_MSSDK))"
+ INSTALL_MSSDK :=$(call FullPath,$(xALT_INSTALL_MSSDK))
+else
+ INSTALL_MSSDK :=$(_psdk)
+endif
+INSTALL_MSSDK:=$(call AltCheckSpaces,INSTALL_MSSDK)
+
+# INSTALL_MSIVAL2: Installation of MsiVal2 for this platform (for install)
+ifdef ALT_INSTALL_MSIVAL2
+ xALT_INSTALL_MSIVAL2 :="$(subst \,/,$(ALT_INSTALL_MSIVAL2))"
+ INSTALL_MSIVAL2 :=$(call FullPath,$(xALT_INSTALL_MSIVAL2))
+else
+ INSTALL_MSIVAL2 :=$(_program_files)/MsiVal2
+endif
+INSTALL_MSIVAL2:=$(call AltCheckSpaces,INSTALL_MSIVAL2)
+
+# WSCRIPT: path to wscript.exe (used in creating install bundles)
+ifdef ALT_WSCRIPT
+ xALT_WSCRIPT :="$(subst \,/,$(ALT_WSCRIPT))"
+ WSCRIPT =$(xALT_WSCRIPT)
+else
+ _WSCRIPT1 :=$(_system_root)/system32/wscript.exe
+ _WSCRIPT2 :=$(DEVTOOLS_PATH)wscript.exe
+ WSCRIPT :=$(call FileExists,$(_WSCRIPT1),$(_WSCRIPT2))
+endif
+WSCRIPT:=$(call AltCheckSpaces,WSCRIPT)
+
+# CSCRIPT: path to cscript.exe (used in creating install bundles)
+ifdef ALT_CSCRIPT
+ xALT_CSCRIPT :="$(subst \,/,$(ALT_CSCRIPT))"
+ CSCRIPT =$(xALT_CSCRIPT)
+else
+ _CSCRIPT1 :=$(_system_root)/system32/cscript.exe
+ _CSCRIPT2 :=$(DEVTOOLS_PATH)cscript.exe
+ CSCRIPT :=$(call FileExists,$(_CSCRIPT1),$(_CSCRIPT2))
+endif
+CSCRIPT:=$(call AltCheckSpaces,CSCRIPT)
+
+# MSIVAL2: path to msival2.exe (used in validating install msi files)
+ifdef ALT_MSIVAL2
+ xALT_MSIVAL2 :="$(subst \,/,$(ALT_MSIVAL2))"
+ MSIVAL2 =$(xALT_MSIVAL2)
+else
+ _MSIVAL2_1 :=$(INSTALL_MSIVAL2)/msival2.exe
+ _MSIVAL2_2 :=$(DEVTOOLS_PATH)msival2.exe
+ MSIVAL2 :=$(call FileExists,$(_MSIVAL2_1),$(_MSIVAL2_2))
+endif
+MSIVAL2:=$(call AltCheckSpaces,MSIVAL2)
+
+# LOGOCUB: path to cub file for (used in validating install msi files)
+ifdef ALT_LOGOCUB
+ xALT_LOGOCUB :="$(subst \,/,$(ALT_LOGOCUB))"
+ LOGOCUB =$(xALT_LOGOCUB)
+else
+ _LOGOCUB1 :=$(INSTALL_MSIVAL2)/logo.cub
+ _LOGOCUB2 :=$(DEVTOOLS_PATH)logo.cub
+ LOGOCUB :=$(call FileExists,$(_LOGOCUB1),$(_LOGOCUB2))
+endif
+LOGOCUB:=$(call AltCheckSpaces,LOGOCUB)
+
+# MSITRAN: path to msitran.exe (used in creating install bundles and sponsors)
+ifdef ALT_MSITRAN
+ xALT_MSITRAN :="$(subst \,/,$(ALT_MSITRAN))"
+ MSITRAN =$(xALT_MSITRAN)
+else
+ _MSITRAN1 :=$(INSTALL_MSSDK)/Bin/msitran.exe
+ _MSITRAN2 :=$(DEVTOOLS_PATH)msitran.exe
+ MSITRAN :=$(call FileExists,$(_MSITRAN1),$(_MSITRAN2))
+endif
+MSITRAN:=$(call AltCheckSpaces,MSITRAN)
+
+# MSICERT: path to msicert.exe (used in creating install bundles)
+ifdef ALT_MSICERT
+ xALT_MSICERT :="$(subst \,/,$(ALT_MSICERT))"
+ MSICERT =$(xALT_MSICERT)
+else
+ _MSICERT1 :=$(INSTALL_MSSDK)/Bin/msicert.exe
+ _MSICERT2 :=$(DEVTOOLS_PATH)msicert.exe
+ MSICERT :=$(call FileExists,$(_MSICERT1),$(_MSICERT2))
+endif
+MSICERT:=$(call AltCheckSpaces,MSICERT)
+
+# Import JDK images allow for partial builds, components not built are
+# imported (or copied from) these import areas when needed.
+
+# BUILD_JDK_IMPORT_PATH: location of JDK install trees to import for
+# multiple platforms, e.g. windows-i586, solaris-sparc, linux-586, etc.
+ifdef ALT_BUILD_JDK_IMPORT_PATH
+ BUILD_JDK_IMPORT_PATH :=$(call FullPath,$(ALT_BUILD_JDK_IMPORT_PATH))
+else
+ BUILD_JDK_IMPORT_PATH = $(PROMOTED_BUILD_BINARIES)
+endif
+BUILD_JDK_IMPORT_PATH:=$(call AltCheckSpaces,BUILD_JDK_IMPORT_PATH)
+BUILD_JDK_IMPORT_PATH:=$(call AltCheckValue,BUILD_JDK_IMPORT_PATH)
+
+# JDK_IMPORT_PATH: location of previously built JDK (this version) to import
+ifdef ALT_JDK_IMPORT_PATH
+ JDK_IMPORT_PATH :=$(call FullPath,$(ALT_JDK_IMPORT_PATH))
+else
+ JDK_IMPORT_PATH = $(BUILD_JDK_IMPORT_PATH)/$(PLATFORM)-$(ARCH)$(_JDK_IMPORT_VARIANT)
+endif
+JDK_IMPORT_PATH:=$(call AltCheckSpaces,JDK_IMPORT_PATH)
+JDK_IMPORT_PATH:=$(call AltCheckValue,JDK_IMPORT_PATH)
+
+# HOTSPOT_IMPORT_PATH: location of hotspot pre-built files
+ifdef ALT_HOTSPOT_IMPORT_PATH
+ HOTSPOT_IMPORT_PATH :=$(call FullPath,$(ALT_HOTSPOT_IMPORT_PATH))
+else
+ HOTSPOT_IMPORT_PATH =$(JDK_IMPORT_PATH)
+endif
+HOTSPOT_IMPORT_PATH:=$(call AltCheckSpaces,HOTSPOT_IMPORT_PATH)
+HOTSPOT_IMPORT_PATH:=$(call AltCheckValue,HOTSPOT_IMPORT_PATH)
+
+# HOTSPOT_CLIENT_PATH: location of client jvm library file.
+ifeq ($(ARCH_DATA_MODEL), 32)
+ ifdef ALT_HOTSPOT_CLIENT_PATH
+ HOTSPOT_CLIENT_PATH :=$(call FullPath,$(ALT_HOTSPOT_CLIENT_PATH))
+ else
+ HOTSPOT_CLIENT_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/client
+ endif
+ HOTSPOT_CLIENT_PATH:=$(call AltCheckSpaces,HOTSPOT_CLIENT_PATH)
+ HOTSPOT_CLIENT_PATH:=$(call AltCheckValue,HOTSPOT_CLIENT_PATH)
+endif
+
+# HOTSPOT_SERVER_PATH: location of server jvm library file.
+ifdef ALT_HOTSPOT_SERVER_PATH
+ HOTSPOT_SERVER_PATH :=$(call FullPath,$(ALT_HOTSPOT_SERVER_PATH))
+else
+ HOTSPOT_SERVER_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/server
+endif
+HOTSPOT_SERVER_PATH:=$(call AltCheckSpaces,HOTSPOT_SERVER_PATH)
+HOTSPOT_SERVER_PATH:=$(call AltCheckValue,HOTSPOT_SERVER_PATH)
+
+# HOTSPOT_LIB_PATH: location of jvm.lib file.
+ifdef ALT_HOTSPOT_LIB_PATH
+ xALT_HOTSPOT_LIB_PATH :="$(subst \,/,$(ALT_HOTSPOT_LIB_PATH))"
+ HOTSPOT_LIB_PATH :=$(call FullPath,$(xALT_HOTSPOT_LIB_PATH))
+else
+ HOTSPOT_LIB_PATH =$(HOTSPOT_IMPORT_PATH)/lib
+endif
+HOTSPOT_LIB_PATH:=$(call AltCheckSpaces,HOTSPOT_LIB_PATH)
+HOTSPOT_LIB_PATH:=$(call AltCheckValue,HOTSPOT_LIB_PATH)
+
diff --git a/jdk/make/common/shared/Defs.gmk b/jdk/make/common/shared/Defs.gmk
new file mode 100644
index 0000000..c2a8278
--- /dev/null
+++ b/jdk/make/common/shared/Defs.gmk
@@ -0,0 +1,483 @@
+#
+# Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Definitions for all platforms.
+#
+# Normally the convention is that these alternate definitions of
+# primary make variables are never defined inside the Makefiles anywhere
+# but are defined via environment variables or set on the make command
+# line. So you should never see an ALT_* variable defined in any
+# makefiles, just used. This is the convention and there are some
+# exceptions, either mistakes or unusual circumstances.
+#
+# The naming convention for the default value of one of these variables
+# that has an ALT_* override capability is to name the default value with a
+# leading underscore (_). So for XXX you would have:
+# _XXX default value
+# ALT_XXX any override the user is providing if any
+# XXX the final value, either the default _XXX or the ALT_XXX value.
+#
+
+# On Directory names. In very rare cases should the Windows directory
+# names use the backslash, please use the C:/ style of windows paths.
+# Avoid duplicating the // characters in paths, this has known to cause
+# strange problems with jar and other utilities, e.g. /a//b/ != /a/b/.
+# Some of these variables have an explicit trailing / character, but in
+# general, they should NOT have the trailing / character.
+
+# Get shared system utilities macros defined
+include $(JDK_MAKE_SHARED_DIR)/Defs-utils.gmk
+
+# Assumes ARCH, PLATFORM, ARCH_VM_SUBDIR, JDK_TOPDIR, etc. have been defined.
+
+# Simple pwd path
+define PwdPath
+$(shell cd $1 2> $(DEV_NULL) && pwd)
+endef
+
+# Checks an ALT value for spaces (should be one word),
+# warns and returns Check_ALT_$1 if spaces
+define AltCheckSpaces
+$(if $(word 2,$($1)),$(warning "WARNING: Value of $1 contains a space: '$($1)', check or set ALT_$1")Check_ALT_$1,$($1))
+endef
+
+# Checks an ALT value for empty, warns and returns Check_ALT_$1 if empty
+define AltCheckValue
+$(if $($1),$($1),$(warning "WARNING: Value of $1 cannot be empty, check or set ALT_$1")Check_ALT_$1)
+endef
+
+# Checks any value for empty, warns and returns $2 if empty
+define CheckValue
+$(if $($1),$($1),$(warning "WARNING: Value of $1 cannot be empty, will use '$2'")$2)
+endef
+
+# Prefix for a utility prefix path, if empty leave alone, otherwise end with a /
+define PrefixPath
+$(if $1,$(subst //,/,$1/),)
+endef
+
+# Select a directory if it exists, or the alternate 2 or the alternate 3
+define DirExists
+$(shell \
+ if [ -d "$1" ]; then \
+ echo "$1"; \
+ elif [ -d "$2" ]; then \
+ echo "$2"; \
+ else \
+ echo "$3"; \
+ fi)
+endef
+
+# Select a writable directory if it exists and is writable, or the alternate
+define WriteDirExists
+$(shell \
+ if [ -d "$1" -a -w "$1" ]; then \
+ echo "$1"; \
+ else \
+ echo "$2"; \
+ fi)
+endef
+
+# Select a file if it exists, or the alternate 1, or the alternate 2
+define FileExists
+$(shell \
+ if [ -r "$1" ]; then \
+ echo "$1"; \
+ elif [ -r "$2" ]; then \
+ echo "$2"; \
+ else \
+ echo "NO_FILE_EXISTS"; \
+ fi)
+endef
+
+# Given a line of text, get the major.minor version number from it
+define GetVersion
+$(shell echo $1 | sed -e 's@[^1-9]*\([1-9][0-9]*\.[0-9][0-9]*\).*@\1@' )
+endef
+
+# Given a major.minor.micro version, return the major, minor, or micro number
+define MajorVersion
+$(if $(word 1, $(subst ., ,$1)),$(word 1, $(subst ., ,$1)),0)
+endef
+define MinorVersion
+$(if $(word 2, $(subst ., ,$1)),$(word 2, $(subst ., ,$1)),0)
+endef
+define MicroVersion
+$(if $(word 3, $(subst ., ,$1)),$(word 3, $(subst ., ,$1)),0)
+endef
+
+# Macro that returns missing, same, newer, or older $1=version $2=required
+# (currently does not check the micro number)
+define CheckVersions
+$(shell \
+ if [ "$1" = "" -o "$2" = "" ]; then \
+ echo missing; \
+ else \
+ if [ "$1" = "$2" ]; then \
+ echo same; \
+ else \
+ if [ $(call MajorVersion,$1) -lt $(call MajorVersion,$2) ] ; then \
+ echo older; \
+ else \
+ if [ $(call MajorVersion,$1) -eq $(call MajorVersion,$2) -a \
+ $(call MinorVersion,$1) -lt $(call MinorVersion,$2) ]; then \
+ echo older; \
+ else \
+ echo newer; \
+ fi; \
+ fi; \
+ fi; \
+ fi)
+endef
+
+# Make sure certain variables are non-empty at this point
+_check_values:=\
+$(call CheckValue,ARCH,),\
+$(call CheckValue,ARCH_DATA_MODEL,),\
+$(call CheckValue,ARCH_VM_SUBDIR,),\
+$(call CheckValue,JDK_TOPDIR,),\
+$(call CheckValue,JDK_MAKE_SHARED_DIR,),\
+$(call CheckValue,VARIANT,),\
+$(call CheckValue,PLATFORM,)
+
+# Misc common settings for all workspaces
+# This determines the version of the product, and the previous version or boot
+ifndef JDK_MAJOR_VERSION
+ JDK_MAJOR_VERSION = 1
+ PREVIOUS_MAJOR_VERSION = 1
+endif
+
+ifndef JDK_MINOR_VERSION
+ JDK_MINOR_VERSION = 7
+ PREVIOUS_MINOR_VERSION = 6
+endif
+
+ifndef JDK_MICRO_VERSION
+ JDK_MICRO_VERSION = 0
+ PREVIOUS_MICRO_VERSION = 0
+endif
+
+ifndef MILESTONE
+ MILESTONE = internal
+endif
+
+# Default names
+LAUNCHER_NAME = java
+PRODUCT_NAME = Java(TM)
+PRODUCT_SUFFIX = SE Runtime Environment
+COMPANY_NAME = Sun Microsystems, Inc.
+
+ifdef OPENJDK
+ LAUNCHER_NAME = openjdk
+ PRODUCT_NAME = OpenJDK
+ PRODUCT_SUFFIX = Runtime Environment
+ COMPANY_NAME =
+endif
+
+RUNTIME_NAME = $(PRODUCT_NAME) $(PRODUCT_SUFFIX)
+
+ifndef BUILD_NUMBER
+ JDK_BUILD_NUMBER = b00
+else
+ ifndef JDK_BUILD_NUMBER
+ JDK_BUILD_NUMBER = $(BUILD_NUMBER)
+ endif
+endif
+
+# Default variant is the optimized version of everything
+# can be OPT or DBG, default is OPT
+# Determine the extra pattern to add to the release name for debug/fastdebug.
+# Determine the JDK_IMPORT_VARIANT, so we get the right VM files copied over.
+# Determine suffix for obj directory or OBJDIR, for .o files.
+# (by keeping .o files separate, just .o files, they don't clobber each
+# other, however, the library files will clobber each other).
+#
+ifeq ($(VARIANT), DBG)
+ BUILD_VARIANT_RELEASE=-debug
+ OBJDIRNAME_SUFFIX=_g
+else
+ BUILD_VARIANT_RELEASE=
+ OBJDIRNAME_SUFFIX=
+endif
+ifeq ($(FASTDEBUG), true)
+ VARIANT=DBG
+ BUILD_VARIANT_RELEASE=-fastdebug
+ OBJDIRNAME_SUFFIX=_gO
+ _JDK_IMPORT_VARIANT=/fastdebug
+endif
+
+# Depending on the flavor of the build, add a -debug or -fastdebug to the name
+ifdef DEBUG_NAME
+ BUILD_VARIANT_RELEASE=-$(DEBUG_NAME)
+endif
+
+# These default values are redefined during a release build.
+# CTE can set JDK_UPDATE_VERSION during the update release
+ifdef JDK_UPDATE_VERSION
+ JDK_VERSION = $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)_$(JDK_UPDATE_VERSION)
+ MARKETING_NUMBER := $(shell \
+ $(ECHO) $(JDK_UPDATE_VERSION) | $(NAWK) '{if (substr($$0,1,1)=="0") print substr($$0, 2); else print $$0;}')
+ MARKET_NAME= $(shell $(ECHO) " Update $(MARKETING_NUMBER)")
+ JDK_MKTG_VERSION = $(JDK_MINOR_VERSION)u$(MARKETING_NUMBER)
+else
+ JDK_VERSION = $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
+ JDK_MKTG_VERSION = $(JDK_MINOR_VERSION)
+ MARKET_NAME=
+endif
+JDK_UNDERSCORE_VERSION = $(subst .,_,$(JDK_VERSION))
+JDK_MKTG_UNDERSCORE_VERSION = $(subst .,_,$(JDK_MKTG_VERSION))
+
+# RELEASE is JDK_VERSION and -MILESTONE if MILESTONE is set
+ifneq ($(MILESTONE),fcs)
+ RELEASE = $(JDK_VERSION)-$(MILESTONE)$(BUILD_VARIANT_RELEASE)
+else
+ RELEASE = $(JDK_VERSION)$(BUILD_VARIANT_RELEASE)
+endif
+
+# FULL_VERSION is RELEASE and -BUILD_NUMBER if BUILD_NUMBER is set
+ifdef BUILD_NUMBER
+ FULL_VERSION = $(RELEASE)-$(BUILD_NUMBER)
+else
+ BUILD_NUMBER = b00
+ USER_RELEASE_SUFFIX := $(shell echo $(USER)_`date '+%d_%b_%Y_%H_%M' | tr "A-Z" "a-z"`)
+ FULL_VERSION = $(RELEASE)-$(USER_RELEASE_SUFFIX)-$(BUILD_NUMBER)
+endif
+
+# Promoted build location
+PROMOTED_RE_AREA = $(SLASH_JAVA)/re/jdk/$(JDK_VERSION)/promoted
+PROMOTED_BUILD_LATEST = latest
+PROMOTED_BUILD_BASEDIR = $(PROMOTED_RE_AREA)/$(PROMOTED_BUILD_LATEST)
+PROMOTED_BUILD_BINARIES = $(PROMOTED_BUILD_BASEDIR)/binaries
+
+# OPT: Changes what the optimizations settings (in _OPT)
+POPT = $(_OPT$(ALT_OPT))$(ALT_OPT)
+
+# PARALLEL_COMPILE_JOBS: is the number of compiles done in parallel.
+# If the user sets ALT_PARALLEL_COMPILE_JOBS, then COMPILE_APPROACH is set
+# to parallel.
+#
+# Recommended setting: 2 seems to be ideal for single cpu machines,
+# 2 times the number of CPU's is a basic formula,
+# but probably not more than 4 if the machine is
+# being shared by others, or the machine is limited
+# in RAM or swap.
+#
+ifdef ALT_PARALLEL_COMPILE_JOBS
+ PARALLEL_COMPILE_JOBS=$(ALT_PARALLEL_COMPILE_JOBS)
+else
+ PARALLEL_COMPILE_JOBS=2
+endif
+
+# Previous JDK release (version of BOOTDIR version)
+ifdef ALT_PREVIOUS_JDK_VERSION
+ PREVIOUS_JDK_VERSION = $(ALT_PREVIOUS_JDK_VERSION)
+else
+ PREVIOUS_JDK_VERSION = $(PREVIOUS_MAJOR_VERSION).$(PREVIOUS_MINOR_VERSION).$(PREVIOUS_MICRO_VERSION)
+endif
+export PREVIOUS_JDK_VERSION
+PREVIOUS_JDK_VERSION:=$(call AltCheckSpaces,PREVIOUS_JDK_VERSION)
+PREVIOUS_JDK_VERSION:=$(call AltCheckValue,PREVIOUS_JDK_VERSION)
+
+# Version with _ instead of . in number
+ifeq ($(PREVIOUS_MINOR_VERSION),5)
+ PREVIOUS_JDK_UNDERSCORE_VERSION = $(subst .,_,$(PREVIOUS_JDK_VERSION))
+else
+ PREVIOUS_JDK_UNDERSCORE_VERSION = $(PREVIOUS_MINOR_VERSION)
+endif
+
+# Include any private definitions for this set of workspaces
+_PRIVATE_DEFS_FILE=$(JDK_MAKE_SHARED_DIR)/PrivateDefs.gmk
+USING_PRIVATE_DEFS:=$(shell if [ -f $(_PRIVATE_DEFS_FILE) ]; then echo true; else echo false; fi)
+ifeq ($(USING_PRIVATE_DEFS),true)
+dummy:=$(warning "WARNING: Using definitions from $(_PRIVATE_DEFS_FILE)")
+include $(_PRIVATE_DEFS_FILE)
+endif
+
+# Get platform specific settings
+include $(JDK_MAKE_SHARED_DIR)/Defs-$(PLATFORM).gmk
+
+# Components
+ifdef ALT_LANGTOOLS_DIST
+ LANGTOOLS_DIST :=$(call FullPath,$(ALT_LANGTOOLS_DIST))
+else
+ LANGTOOLS_DIST =
+endif
+ifdef ALT_CORBA_DIST
+ CORBA_DIST :=$(call FullPath,$(ALT_CORBA_DIST))
+else
+ CORBA_DIST =
+endif
+ifdef ALT_JAXP_DIST
+ JAXP_DIST :=$(call FullPath,$(ALT_JAXP_DIST))
+else
+ JAXP_DIST =
+endif
+ifdef ALT_JAXWS_DIST
+ JAXWS_DIST :=$(call FullPath,$(ALT_JAXWS_DIST))
+else
+ JAXWS_DIST =
+endif
+
+# HOTSPOT_DOCS_IMPORT_PATH: Path to hotspot docs files to import into the docs generation
+ifdef ALT_HOTSPOT_DOCS_IMPORT_PATH
+ HOTSPOT_DOCS_IMPORT_PATH :=$(call FullPath,$(ALT_HOTSPOT_DOCS_IMPORT_PATH))
+else
+ HOTSPOT_DOCS_IMPORT_PATH :=$(call DirExists,$(HOTSPOT_IMPORT_PATH)/docs,$(PROMOTED_BUILD_BASEDIR)/docs,/NO_DOCS_DIR)
+endif
+
+# PREVIOUS_JDK_FILE: filename of install bundle for previous JDK
+ifdef ALT_PREVIOUS_JDK_FILE
+ PREVIOUS_JDK_FILE =$(ALT_PREVIOUS_JDK_FILE)
+else
+ PREVIOUS_JDK_FILE = jdk-$(PREVIOUS_JDK_UNDERSCORE_VERSION)-$(PLATFORM)-$(ARCH)$(BUNDLE_FILE_SUFFIX)
+endif
+export PREVIOUS_JDK_FILE
+PREVIOUS_JDK_FILE:=$(call AltCheckSpaces,PREVIOUS_JDK_FILE)
+PREVIOUS_JDK_FILE:=$(call AltCheckValue,PREVIOUS_JDK_FILE)
+
+# PREVIOUS_JRE_FILE: filename of install bundle for previous JRE
+ifdef ALT_PREVIOUS_JRE_FILE
+ PREVIOUS_JRE_FILE =$(ALT_PREVIOUS_JRE_FILE)
+else
+ PREVIOUS_JRE_FILE = jre-$(PREVIOUS_JDK_UNDERSCORE_VERSION)-$(PLATFORM)-$(ARCH)$(BUNDLE_FILE_SUFFIX)
+endif
+export PREVIOUS_JRE_FILE
+PREVIOUS_JRE_FILE:=$(call AltCheckSpaces,PREVIOUS_JRE_FILE)
+PREVIOUS_JRE_FILE:=$(call AltCheckValue,PREVIOUS_JRE_FILE)
+
+# Set here as shared variables
+PREVIOUS_JRE_BUNDLE = $(PREVIOUS_RELEASE_PATH)/$(PREVIOUS_JRE_FILE)
+PREVIOUS_JDK_BUNDLE = $(PREVIOUS_RELEASE_PATH)/$(PREVIOUS_JDK_FILE)
+
+# These are the same on all platforms but require the above platform include 1st
+
+# BOOTDIR: Bootstrap JDK, previous released JDK.
+# _BOOTDIR1 and _BOOTDIR2 picked by platform
+ifdef ALT_BOOTDIR
+ BOOTDIR =$(ALT_BOOTDIR)
+else
+ BOOTDIR :=$(call DirExists,$(_BOOTDIR1),$(_BOOTDIR2),/NO_BOOTDIR)
+endif
+export BOOTDIR
+BOOTDIR:=$(call AltCheckSpaces,BOOTDIR)
+BOOTDIR:=$(call AltCheckValue,BOOTDIR)
+
+# PREVIOUS_RELEASE_PATH: path to where previous release bundles are
+ifdef ALT_PREVIOUS_RELEASE_PATH
+ PREVIOUS_RELEASE_PATH :=$(call OptFullPath,$(ALT_PREVIOUS_RELEASE_PATH))
+else
+ PREVIOUS_RELEASE_PATH =$(SLASH_JAVA)/re/jdk/$(PREVIOUS_JDK_VERSION)/archive/fcs/bundles/$(PLATFORM)-$(ARCH)
+endif
+export PREVIOUS_RELEASE_PATH
+PREVIOUS_RELEASE_PATH:=$(call AltCheckSpaces,PREVIOUS_RELEASE_PATH)
+PREVIOUS_RELEASE_PATH:=$(call AltCheckValue,PREVIOUS_RELEASE_PATH)
+
+# PREVIOUS_RELEASE_IMAGE: Previous install image to compare against
+ifdef ALT_PREVIOUS_RELEASE_IMAGE
+ PREVIOUS_RELEASE_IMAGE :=$(call FullPath,$(ALT_PREVIOUS_RELEASE_IMAGE))
+endif
+
+# CACERTS_FILE: if OPENJDK is false and the internal version of the file
+# (that is, non-empty) is available, use it, otherwise use an
+# empty keystore.
+#
+# We put this variable here for sanity checks and in case another
+# components will need to know which cacerts file is being used.
+#
+ifdef ALT_CACERTS_FILE
+ CACERTS_FILE = $(ALT_CACERTS_FILE)
+else
+ CACERTS_EXT = $(SHARE_SRC)/lib/security/cacerts
+ ifdef OPENJDK
+ CACERTS_FILE :=$(CACERTS_EXT)
+ else # (!OPENJDK)
+ CACERTS_INT = $(CLOSED_SHARE_SRC)/lib/security/cacerts.internal
+ CACERTS_FILE :=$(call FileExists,$(CACERTS_INT),$(CACERTS_EXT))
+ endif # (OPENJDK)
+endif
+CACERTS_FILE:=$(call AltCheckSpaces,CACERTS_FILE)
+CACERTS_FILE:=$(call AltCheckValue,CACERTS_FILE)
+
+# OUTPUTDIR: Location of all output for the build
+_BACKUP_OUTPUTDIR = $(TEMP_DISK)/$(USER)/jdk-outputdir
+ifdef ALT_OUTPUTDIR
+ _POSSIBLE_OUTPUTDIR =$(subst \,/,$(ALT_OUTPUTDIR))
+else
+ ifndef _OUTPUTDIR
+ _OUTPUTDIR = $(_BACKUP_OUTPUTDIR)
+ endif
+ _POSSIBLE_OUTPUTDIR =$(_OUTPUTDIR)
+endif
+_create_outputdir1:=$(shell mkdir -p $(_POSSIBLE_OUTPUTDIR) > $(DEV_NULL) 2>&1)
+OUTPUTDIR:=$(call WriteDirExists,$(_POSSIBLE_OUTPUTDIR),$(_BACKUP_OUTPUTDIR))
+_create_outputdir2:=$(shell mkdir -p $(OUTPUTDIR) > $(DEV_NULL) 2>&1)
+ifeq "$(OUTPUTDIR)" "$(_BACKUP_OUTPUTDIR)"
+ _outputdir_warning:=$(warning "WARNING: OUTPUTDIR '$(_POSSIBLE_OUTPUTDIR)' not writable, will use '$(_BACKUP_OUTPUTDIR)'")
+endif
+OUTPUTDIR:=$(call AltCheckSpaces,OUTPUTDIR)
+OUTPUTDIR:=$(call AltCheckValue,OUTPUTDIR)
+
+# Bin directory
+# NOTE: ISA_DIR is usually empty, on Solaris it might be /sparcv9 or /amd64
+BINDIR = $(OUTPUTDIR)/bin$(ISA_DIR)
+
+# MOZILLA_HEADERS_PATH: path to mozilla header files for plugin
+ifdef ALT_MOZILLA_HEADERS_PATH
+ MOZILLA_HEADERS_PATH :=$(call FullPath,$(ALT_MOZILLA_HEADERS_PATH))
+else
+ MOZILLA_HEADERS_PATH =$(JDK_DEVTOOLS_DIR)/share/plugin
+endif
+MOZILLA_HEADERS_PATH:=$(call AltCheckSpaces,MOZILLA_HEADERS_PATH)
+MOZILLA_HEADERS_PATH:=$(call AltCheckValue,MOZILLA_HEADERS_PATH)
+
+# CUPS_HEADERS_PATH: path to Cups headers files for Unix printing
+ifneq ($(PLATFORM), windows)
+JDK_CUPS_HEADERS_PATH=$(JDK_DEVTOOLS_DIR)/share/cups/include
+ ifdef ALT_CUPS_HEADERS_PATH
+ CUPS_HEADERS_PATH:=$(call FullPath,$(ALT_CUPS_HEADERS_PATH))
+ CUP_HEADERS_PATH:=$(call AltCheckValue,CUPS_HEADERS_PATH)
+ else
+ CUPS_HEADERS_PATH:= \
+ $(shell if [ -d "$(JDK_CUPS_HEADERS_PATH)" ]; then \
+ echo "$(JDK_CUPS_HEADERS_PATH)"; \
+ else \
+ echo "$(_CUPS_HEADERS_PATH)";\
+ fi)
+ endif
+endif
+
+ifdef ALT_COPYRIGHT_YEAR
+ COPYRIGHT_YEAR = $(ALT_COPYRIGHT_YEAR)
+else
+ COPYRIGHT_YEAR = $(shell $(DATE) '+%Y')
+endif
+
+# Absolute path to output directory
+ABS_OUTPUTDIR:=$(call FullPath,$(OUTPUTDIR))
+
+# Get shared compiler settings
+include $(JDK_MAKE_SHARED_DIR)/Compiler.gmk
+
diff --git a/jdk/make/common/shared/Platform.gmk b/jdk/make/common/shared/Platform.gmk
new file mode 100644
index 0000000..f9f229a
--- /dev/null
+++ b/jdk/make/common/shared/Platform.gmk
@@ -0,0 +1,465 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Shared platform (OS/ARCH) variable settings for the JDK builds.
+#
+# Includes basic system requirements, versions of utilities required,
+# suffixes on files, and basic defaults attributed to the build platform.
+#
+
+#
+# Assumes some basic unix system utilities (e.g. uname) are in the search path
+# in order to figure out the system.
+#
+
+ifndef PLATFORM_SHARED
+
+PLATFORM_SHARED=done
+
+# Possible Input variables:
+# ARCH_DATA_MODEL 32 or 64, default to 32
+# USER, LOGNAME user name (runs logname, or id if not set)
+# PROCESSOR_IDENTIFIER windows only: needed in environment
+#
+# (Also gets input by running the utilities uname, logname, isainfo, or id.)
+#
+# Variables set by this file:
+# SYSTEM_UNAME what 'uname' says this system is
+# USER login name of user (minus blanks)
+# PLATFORM windows, solaris, or linux
+# VARIANT OPT or DBG, OPT is the default
+# OS_NAME solaris, linux, or nt
+# OS_VERSION specific version of os, 5.10, 2.4.9-e.3, etc.
+# OS_VENDOR company name
+# TEMP_DISK /tmp or C:/temp
+# ARCH_DATA_MODEL 32 or 64
+# ARCH sparc, sparcv9, i586, amd64, or ia64
+# ARCH_FAMILY sparc or i586
+# ARCHPROP sparc or x86
+# ARCH_VM_SUBDIR jre/bin, jre/lib/sparc, etc.
+# LIBARCH sparc, sparcv9, i386, amd64, or ia64
+# DEV_NULL destination of /dev/null, NUL or /dev/NULL
+# CLASSPATH_SEPARATOR separator in classpath, ; or :
+# LIB_PREFIX dynamic or static library prefix, lib or empty
+# LIB_SUFFIX static library file suffix, .lib or .a?
+# LIBRARY_SUFFIX dynamic library file suffix, .dll or .so
+# OBJECT_SUFFIX object file suffix, .o or .obj
+# EXE_SUFFIX executable file suffix, .exe or empty
+# BUNDLE_FILE_SUFFIX suffix for bundles: .tar or .tar.gz
+# ISA_DIR solaris only: /sparcv9 or /amd64
+# LIBARCH32 solaris only: sparc or i386
+# LIBARCH64 solaris only: sparcv9 or amd64
+# REQUIRED_WINDOWS_NAME windows only: basic name of windows
+# REQUIRED_WINDOWS_VERSION windows only: specific version of windows
+# USING_CYGWIN windows only: true or false
+# WINDOWS_NT_VERSION_STRING windows only: long version name
+# REQUIRED_OS_VERSION required OS version, e.g. 5.10, 2.4
+# REQUIRED_FREE_SPACE minimum disk space needed for outputdir
+# ISHIELD_TEMP_MIN windows only: minimum disk space in temp area
+# REQUIRED_ZIP_VER required version of zip
+# REQUIRED_UNZIP_VER required version of unzip
+# REQUIRED_DXSDK_VER windows only: required version of DirectX
+# LINUX_VERSION_INFO linux only: location of linux release file
+# REQUIRED_LINUX_VER linux only: required version of linux
+# REQUIRED_LINUX_FULLVER linux only: required full version of linux
+# REQUIRED_ALSA_VERSION linux only: required version of ALSA
+# REQUIRED_FREETYPE_VERSION openjdk only: required version of freetype
+
+SYSTEM_UNAME := $(shell uname)
+
+# Normal boot jdk is previous release, but a hard requirement is a 1.5 boot
+REQUIRED_BOOT_VER = 1.5
+
+#This is specific to OpenJDK build
+ifdef OPENJDK
+ REQUIRED_FREETYPE_VERSION=2.3.0
+endif
+
+#
+# Prune out all known SCM (Source Code Management) directories
+# so they will not be included when copying directory trees
+# or packaging up .jar files, etc. This applies to all workspaces.
+#
+SCM_DIRs = .hg .svn CVS RCS SCCS Codemgr_wsdata deleted_files
+# When changing SCM_DIRs also change SCM_DIRS_rexp and SCM_DIRS_prune:
+SCM_DIRS_rexp = ".hg|.svn|CVS|RCS|SCCS|Codemgr_wsdata|deleted_files"
+SCM_DIRS_prune = \( -name .hg -o -name .svn -o -name CVS -o -name RCS -o -name SCCS -o -name Codemgr_wsdata -o -name deleted_files \) -prune
+
+# Don't define this unless it's not defined
+ifndef VARIANT
+ VARIANT=OPT
+endif
+
+# Platform settings specific to Solaris
+ifeq ($(SYSTEM_UNAME), SunOS)
+ PLATFORM = solaris
+ OS_NAME = solaris
+ OS_VERSION := $(shell uname -r)
+ # Solaris sparc build can be either 32-bit or 64-bit.
+ # Default to 32, but allow explicit setting to 32 or 64.
+ ifndef ARCH_DATA_MODEL
+ ARCH_DATA_MODEL=32
+ endif
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ processor := $(shell uname -p)
+ archExpr = case "$(processor)" in \
+ i[3-9]86) \
+ echo i586 \
+ ;; \
+ sparc*) \
+ echo sparc \
+ ;; \
+ *) \
+ echo $(processor) \
+ ;; \
+ esac
+ ARCH := $(shell $(archExpr))
+ else
+ ARCH := $(shell isainfo -n)
+ # ISA_DIR is used to locate 64-bit specific libraries which are generally
+ # in the same general place as other libraries under the ./$(ARCH) directory
+ ISA_DIR = /$(ARCH)
+ endif
+ # Need to maintain the jre/lib/i386 location for 32-bit Intel
+ ifeq ($(ARCH), i586)
+ ARCH_FAMILY = $(ARCH)
+ LIBARCH = i386
+ # Value of Java os.arch property
+ ARCHPROP = x86
+ else
+ ifeq ($(ARCH), amd64)
+ ARCH_FAMILY = i586
+ else
+ ARCH_FAMILY = sparc
+ endif
+ LIBARCH = $(ARCH)
+ # Value of Java os.arch property
+ ARCHPROP = $(LIBARCH)
+ endif
+ # The two LIBARCH names
+ ifeq ($(ARCH_FAMILY), sparc)
+ LIBARCH32 = sparc
+ LIBARCH64 = sparcv9
+ else
+ LIBARCH32 = i386
+ LIBARCH64 = amd64
+ endif
+ # Suffix for file bundles used in previous release
+ BUNDLE_FILE_SUFFIX=.tar
+ OS_VENDOR = Sun Microsystems
+ # Required Solaris version
+ REQUIRED_OS_VERSION = 5.10
+ # Minimum disk space needed as determined by running 'du -sk' on
+ # a fully built workspace.
+ ifeq ($(ARCH_FAMILY), sparc)
+ REQUIRED_FREE_SPACE=1300000
+ else
+ REQUIRED_FREE_SPACE=1040000
+ endif
+ # How much RAM does this machine have:
+ MB_OF_MEMORY=$(shell /etc/prtconf | fgrep 'Memory size:' | expand | cut -d' ' -f3)
+endif
+
+# Platform settings specific to Linux
+ifeq ($(SYSTEM_UNAME), Linux)
+ PLATFORM = linux
+ OS_NAME = linux
+ OS_VERSION := $(shell uname -r)
+ # Arch and OS name/version
+ mach := $(shell uname -m)
+ archExpr = case "$(mach)" in \
+ i[3-9]86) \
+ echo i586 \
+ ;; \
+ ia64) \
+ echo ia64 \
+ ;; \
+ x86_64) \
+ echo amd64 \
+ ;; \
+ sparc*) \
+ echo sparc \
+ ;; \
+ *) \
+ echo $(mach) \
+ ;; \
+ esac
+ ARCH := $(shell $(archExpr) )
+ ARCH_FAMILY := $(ARCH)
+
+ # Linux builds may be 32-bit or 64-bit data model.
+ ifeq ($(ARCH), sparc)
+ # Linux sparc build can be either 32-bit or 64-bit.
+ # Default to 32, but allow explicit setting to 32 or 64.
+ ifndef ARCH_DATA_MODEL
+ ARCH_DATA_MODEL=32
+ endif
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ ARCH=sparc
+ else
+ ARCH=sparcv9
+ endif
+ else
+ # i586 is 32-bit, amd64 is 64-bit
+ ifndef ARCH_DATA_MODEL
+ ifeq ($(ARCH), i586)
+ ARCH_DATA_MODEL=32
+ else
+ ARCH_DATA_MODEL=64
+ endif
+ endif
+ endif
+
+ # Need to maintain the jre/lib/i386 location for 32-bit Intel
+ ifeq ($(ARCH), i586)
+ LIBARCH = i386
+ else
+ LIBARCH = $(ARCH)
+ endif
+
+ # Value of Java os.arch property
+ ARCHPROP = $(LIBARCH)
+
+ # Suffix for file bundles used in previous release
+ BUNDLE_FILE_SUFFIX=.tar.gz
+ # Minimum disk space needed as determined by running 'du -sk' on
+ # a fully built workspace.
+ REQUIRED_FREE_SPACE=1460000
+ LINUX_VERSION_INFO = /etc/redhat-release
+ OS_VENDOR = Red Hat
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ REQUIRED_LINUX_VER = Advanced Server
+ REQUIRED_LINUX_FULLVER = Advanced Server release 2.1AS
+ REQUIRED_OS_VERSION = 2.4.9-e.3
+ else
+ ifeq ($(ARCH), amd64)
+ LINUX_VERSION_INFO = /etc/SuSE-release
+ OS_VENDOR = SuSE Enterprise
+ REQUIRED_LINUX_VER = 8.1
+ REQUIRED_LINUX_FULLVER = $(REQUIRED_LINUX_VER) SLSE AMD64
+ REQUIRED_OS_VERSION = 2.4.19-SMP
+ else
+ REQUIRED_LINUX_VER = Advanced Server
+ REQUIRED_LINUX_FULLVER = Advanced Server release 2.1AS 64 bit
+ REQUIRED_OS_VERSION = 2.4.19-SMP
+ endif
+ endif
+ ifneq ($(ARCH), ia64)
+ # ALSA 0.9.1 and above
+ REQUIRED_ALSA_VERSION = ^((0[.]9[.][1-9])|(1[.]0[.][0-9]))[0-9]*
+ endif
+ # How much RAM does this machine have:
+ MB_OF_MEMORY := $(shell free -m | fgrep Mem: | sed -e 's@\ \ *@ @g' | cut -d' ' -f2)
+endif
+
+# Windows with and without CYGWIN will be slightly different
+ifeq ($(SYSTEM_UNAME), Windows_NT)
+ PLATFORM = windows
+ OS_VERSION := $(shell uname -r)
+ WINDOWS_NT_VERSION_STRING=Windows_NT
+ REQUIRED_MKS_VER=6.1
+endif
+ifneq (,$(findstring CYGWIN,$(SYSTEM_UNAME)))
+ PLATFORM = windows
+ OS_VERSION := 5
+ USING_CYGWIN = true
+ export USING_CYGWIN
+ WINDOWS_NT_VERSION_STRING=CYGWIN_NT
+ REQUIRED_CYGWIN_VER=4.0
+endif
+
+# Platform settings specific to Windows
+ifeq ($(PLATFORM), windows)
+ OS_NAME = nt
+ REQUIRED_OS_VERSION=5
+ # Windows builds default to the appropriate for the underlaying
+ # architecture.
+ # Temporary disk area
+ TEMP_DISK=C:/temp
+ # GNU Make or MKS overrides $(PROCESSOR_ARCHITECTURE) to always
+ # return "x86". Use the first word of $(PROCESSOR_IDENTIFIER) instead.
+ ifndef ARCH_DATA_MODEL
+ ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),ia64)
+ ARCH_DATA_MODEL=64
+ else
+ ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),AMD64)
+ ARCH_DATA_MODEL=64
+ else
+ ARCH_DATA_MODEL=32
+ endif
+ endif
+ endif
+ export ARCH_DATA_MODEL
+ # LIBARCH is used to preserve the jre/lib/i386 directory name for 32-bit intel
+ ARCH=i586
+ LIBARCH=i386
+ # Value of Java os.arch property
+ ARCHPROP=x86
+ REQUIRED_WINDOWS_NAME=Windows Professional 2000
+ REQUIRED_WINDOWS_VERSION=5 0 Service Pack 4
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ # If the user wants to perform a cross compile build then they must
+ # - set ARCH_DATA_MODEL=64 and either
+ # + set ARCH to ia64 or amd64, or
+ REQUIRED_WINDOWS_NAME=Windows Server 2003
+ REQUIRED_WINDOWS_VERSION=5 2 Service Pack 1
+ ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)), AMD64)
+ ARCH=amd64
+ else
+ ARCH=ia64
+ endif
+ LIBARCH=$(ARCH)
+ # Value of Java os.arch property
+ ARCHPROP=$(LIBARCH)
+ endif
+ ARCH_FAMILY = $(ARCH)
+ # Where is unwanted output to be delivered?
+ DEV_NULL = NUL
+ export DEV_NULL
+ # Classpath separator
+ CLASSPATH_SEPARATOR = ;
+ # The suffix used for object file (.o for unix .obj for windows)
+ OBJECT_SUFFIX = obj
+ # The suffix applied to executables (.exe for windows, nothing for solaris)
+ EXE_SUFFIX = .exe
+ # The prefix applied to library files (lib for solaris, nothing for windows)
+ LIB_PREFIX=
+ LIBRARY_SUFFIX = dll
+ LIB_SUFFIX = lib
+ # User name determination (set _USER)
+ ifndef USER
+ ifdef USERNAME
+ _USER := $(USERNAME)
+ else
+ ifdef LOGNAME
+ _USER := $(LOGNAME)
+ else
+ _USER := $(shell id -un)
+ endif
+ endif
+ else
+ _USER:=$(USER)
+ endif
+ # Location of client/server directories
+ ARCH_VM_SUBDIR=jre/bin
+ # Suffix for file bundles used in previous release
+ BUNDLE_FILE_SUFFIX=.tar
+ # Minimum disk space needed as determined by running 'du -sk' on
+ # a fully built workspace.
+ REQUIRED_FREE_SPACE=500000
+ # ISHIELD_TEMP_MIN is the difference of an empty C:\TEMP vs. one after a
+ # bundles build on windows.
+ ISHIELD_TEMP_MIN=250000
+ REQUIRED_DXSDK_VER = 0x0700
+ OS_VENDOR = Microsoft
+ # How much RAM does this machine have:
+ MB_OF_MEMORY := $(shell \
+ if [ -f "C:/cygwin/bin/free.exe" ] ; then \
+ ( C:/cygwin/bin/bash.exe -c "C:/cygwin/bin/free.exe -m" ) | \
+ grep Mem: | \
+ sed -e 's@\ \ *@ @g' | cut -d' ' -f2 ; \
+ else \
+ echo "512"; \
+ fi)
+endif
+
+# Machines with 512Mb or less of real memory are considered low memory
+# build machines and adjustments will be made to prevent excessing
+# system swapping during the build.
+# If we don't know, assume 512. Subtract 128 from MB for VM MAX.
+# Don't set VM max over 1024-128=896.
+ifneq ($(MB_OF_MEMORY),)
+ LOW_MEMORY_MACHINE := $(shell \
+ if [ $(MB_OF_MEMORY) -le 512 ] ; then \
+ echo "true"; \
+ else \
+ echo "false"; \
+ fi)
+ MAX_VM_MEMORY := $(shell \
+ if [ $(MB_OF_MEMORY) -le 1024 ] ; then \
+ expr $(MB_OF_MEMORY) '-' 128 ; \
+ else \
+ echo "896"; \
+ fi)
+ MIN_VM_MEMORY := $(shell \
+ if [ $(MAX_VM_MEMORY) -le 128 ] ; then \
+ expr $(MAX_VM_MEMORY) '-' 8 ; \
+ else \
+ echo "128"; \
+ fi)
+else
+ MB_OF_MEMORY := unknown
+ LOW_MEMORY_MACHINE := true
+ MAX_VM_MEMORY := 384
+ MIN_VM_MEMORY := 128
+endif
+
+REQUIRED_ZIP_VER = 2.2
+REQUIRED_UNZIP_VER = 5.12
+REQUIRED_MAKE_VER = 3.78
+
+# Unix type settings (same for all unix platforms)
+ifneq ($(PLATFORM), windows)
+ # Temporary disk area
+ TEMP_DISK=/tmp
+ # Where is unwanted output to be delivered?
+ DEV_NULL = /dev/null
+ export DEV_NULL
+ # Character used between entries in classpath
+ CLASSPATH_SEPARATOR = :
+ # suffix used for object file (.o for unix .obj for windows)
+ OBJECT_SUFFIX = o
+ # The suffix applied to runtime libraries
+ LIBRARY_SUFFIX = so
+ # The suffix applied to link libraries
+ LIB_SUFFIX = so
+ # The suffix applied to executables (.exe for windows, nothing for solaris)
+ EXE_SUFFIX =
+ # The prefix applied to library files (lib for solaris, nothing for windows)
+ LIB_PREFIX = lib
+ # User name determination (set _USER)
+ ifndef USER
+ ifdef LOGNAME
+ _USER := $(LOGNAME)
+ else
+ _USER := $(shell logname)
+ endif
+ else
+ _USER:=$(USER)
+ endif
+ # Location of client/server directories
+ ARCH_VM_SUBDIR=jre/lib/$(LIBARCH)
+endif
+
+# If blanks in the username, use the first 4 words and pack them together
+_USER1:=$(subst ', ,$(_USER))
+_USER2:=$(subst ", ,$(_USER1))
+USER:=$(word 1,$(_USER2))$(word 2,$(_USER2))$(word 3,$(_USER2))$(word 4,$(_USER2))
+export USER
+
+export PLATFORM
+endif
+
diff --git a/jdk/make/common/shared/PrivateDefs.gmk-example b/jdk/make/common/shared/PrivateDefs.gmk-example
new file mode 100644
index 0000000..93f6a43
--- /dev/null
+++ b/jdk/make/common/shared/PrivateDefs.gmk-example
@@ -0,0 +1,19 @@
+
+# This file, when re-named to PrivateDefs.gmk will get included in the
+# makefile definitions (before the ALT_ variables are read) so that you can
+# override makefile settings permanently for a workspace.
+# Use of this file will cause WARNING errors, repeatedly, for a reason.
+#
+# WARNING: Use with caution.
+#
+
+# EXAMPLE: Testing a special build of hotspot
+# (this is the build/solaris/export-solaris-sparc directory from doing
+# a 'cd hotspot/make; gnumake' build)
+#
+ifeq ($(PLATFORM),solaris)
+ ifeq ($(ARCH),sparc)
+ ALT_HOTSPOT_IMPORT_PATH=$(JDK_TOPDIR)/../export-solaris-sparc
+ endif
+endif
+
diff --git a/jdk/make/common/shared/Sanity-Settings.gmk b/jdk/make/common/shared/Sanity-Settings.gmk
new file mode 100644
index 0000000..d7ef8fe
--- /dev/null
+++ b/jdk/make/common/shared/Sanity-Settings.gmk
@@ -0,0 +1,271 @@
+#
+# Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Shared sanity settings file. Fills in the variable ALL_SETTINGS.
+#
+
+# On Windows in particular, it can happen that quotes get into the PATH
+# variable. This is very bad, and must be caught early or you can
+# see errors like: sh: -c: line 0: syntax error near unexpected token
+#
+ifneq ($(PATH), $(subst ",,$(PATH)))
+ dummy1:=$(error ERROR: PATH variable contains double quotes, fix your PATH.)
+endif
+ifneq ($(PATH), $(subst ',,$(PATH)))
+ dummy1:=$(error ERROR: PATH variable contains single quotes, fix your PATH.)
+endif
+
+# Used to add a heading to ALL_SETTINGS
+define addHeading
+"\n$1:\n"
+endef
+
+# Used to add a line to ALL_SETTINGS for an optional value
+# (need if test for windows which has issues with ; characters in values)
+define addOptionalSetting
+$(if $($1)," $1 = $($1)\n"," $1 = $($1)\n")
+endef
+
+# Used to add a line to ALL_SETTINGS for something that must have a value
+define addRequiredSetting
+$(if $($1)," $1 = $($1)\n",$(warning WARNING: $1 should not be empty [Sanity-Settings.gmk]))
+endef
+
+# Used to add a line to ALL_SETTINGS for something that must have a value
+define addRequiredVersionSetting
+$(if $($1)," $1 = $($1) [requires at least $(REQUIRED_$1)]\n",$(warning WARNING: $1 should not be empty [Sanity-Settings.gmk]))
+endef
+
+# Used to add a series of lines to ALL_SETTINGS
+define addAltSetting
+" $1 = $($1)\n ALT_$1 = $(ALT_$1)\n"
+endef
+
+# Variable that contains a string of all information
+
+# Make sure this is a 'do it now' variable.
+ALL_SETTINGS:=$(call addHeading,Bootstrap Settings)
+ALL_SETTINGS+=$(call addAltSetting,BOOTDIR)
+ALL_SETTINGS+=$(call addRequiredVersionSetting,BOOT_VER)
+ALL_SETTINGS+=$(call addAltSetting,OUTPUTDIR)
+ALL_SETTINGS+=$(call addRequiredSetting,ABS_OUTPUTDIR)
+
+
+ALL_SETTINGS+=$(call addHeading,Build Tool Settings)
+ALL_SETTINGS+=$(call addAltSetting,SLASH_JAVA)
+ALL_SETTINGS+=$(call addRequiredSetting,VARIANT)
+ALL_SETTINGS+=$(call addAltSetting,JDK_DEVTOOLS_DIR)
+ALL_SETTINGS+=$(call addOptionalSetting,ANT_HOME)
+ALL_SETTINGS+=$(call addOptionalSetting,FINDBUGS_HOME)
+ALL_SETTINGS+=$(call addAltSetting,UNIXCOMMAND_PATH)
+ALL_SETTINGS+=$(call addAltSetting,COMPILER_PATH)
+ALL_SETTINGS+=$(call addAltSetting,DEVTOOLS_PATH)
+ifeq ($(PLATFORM),linux)
+ ALL_SETTINGS+=$(call addAltSetting,UNIXCCS_PATH)
+ ALL_SETTINGS+=$(call addAltSetting,USRBIN_PATH)
+ ifndef OPENJDK
+ ALL_SETTINGS+=$(call addAltSetting,GCC29_COMPILER_PATH)
+ endif
+endif
+ifeq ($(PLATFORM),solaris)
+ ALL_SETTINGS+=$(call addAltSetting,UNIXCCS_PATH)
+ ifndef OPENJDK
+ ALL_SETTINGS+=$(call addAltSetting,GCC_COMPILER_PATH)
+ endif
+endif
+ifeq ($(PLATFORM),windows)
+ ALL_SETTINGS+=$(call addAltSetting,MSVCRT_DLL_PATH)
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ ALL_SETTINGS+=$(call addAltSetting,MSVCR71_DLL_PATH)
+ endif
+ ALL_SETTINGS+=$(call addAltSetting,MSDEVTOOLS_PATH)
+endif
+ALL_SETTINGS+=$(call addOptionalSetting,COMPILER_NAME)
+ALL_SETTINGS+=$(call addOptionalSetting,COMPILER_VERSION)
+ALL_SETTINGS+=$(call addRequiredVersionSetting,CC_VER)
+ifeq ($(PLATFORM),solaris)
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ ifndef OPENJDK
+ ALL_SETTINGS+=$(call addRequiredVersionSetting,GCC_VER)
+ endif
+ endif
+endif
+ALL_SETTINGS+=$(call addRequiredVersionSetting,ZIP_VER)
+ALL_SETTINGS+=$(call addRequiredVersionSetting,UNZIP_VER)
+ifeq ($(PLATFORM),windows)
+ ALL_SETTINGS+=$(call addRequiredVersionSetting,LINK_VER)
+endif
+ALL_SETTINGS+=$(call addRequiredVersionSetting,ANT_VER)
+ALL_SETTINGS+=$(call addRequiredVersionSetting,FINDBUGS_VER)
+ALL_SETTINGS+=$(call addRequiredSetting,TEMPDIR)
+
+
+ALL_SETTINGS+=$(call addHeading,Build Directives)
+ALL_SETTINGS+=$(call addOptionalSetting,OPENJDK)
+ALL_SETTINGS+=$(call addOptionalSetting,USE_HOTSPOT_INTERPRETER_MODE)
+ALL_SETTINGS+=$(call addOptionalSetting,PEDANTIC)
+ALL_SETTINGS+=$(call addOptionalSetting,DEV_ONLY)
+ALL_SETTINGS+=$(call addOptionalSetting,NO_DOCS)
+ALL_SETTINGS+=$(call addOptionalSetting,NO_IMAGES)
+ALL_SETTINGS+=$(call addOptionalSetting,TOOLS_ONLY)
+ALL_SETTINGS+=$(call addOptionalSetting,INSANE)
+ALL_SETTINGS+=$(call addRequiredSetting,COMPILE_APPROACH)
+ifeq ($(COMPILE_APPROACH), parallel)
+ ALL_SETTINGS+=$(call addAltSetting,PARALLEL_COMPILE_JOBS)
+endif
+ALL_SETTINGS+=$(call addOptionalSetting,FASTDEBUG)
+ALL_SETTINGS+=$(call addRequiredSetting,COMPILER_WARNINGS_FATAL)
+ALL_SETTINGS+=$(call addOptionalSetting,COMPILER_WARNING_LEVEL)
+ALL_SETTINGS+=$(call addRequiredSetting,INCREMENTAL_BUILD)
+ALL_SETTINGS+=$(call addOptionalSetting,CC_HIGHEST_OPT)
+ALL_SETTINGS+=$(call addOptionalSetting,CC_HIGHER_OPT)
+ALL_SETTINGS+=$(call addOptionalSetting,CC_LOWER_OPT)
+ALL_SETTINGS+=$(call addOptionalSetting,CXXFLAGS)
+ALL_SETTINGS+=$(call addOptionalSetting,CFLAGS)
+
+ALL_SETTINGS+=$(call addOptionalSetting,BOOT_JAVA_CMD)
+ALL_SETTINGS+=$(call addOptionalSetting,BOOT_JAVAC_CMD)
+ALL_SETTINGS+=$(call addOptionalSetting,BOOT_JAR_CMD)
+ALL_SETTINGS+=$(call addOptionalSetting,BOOT_JARSIGNER_CMD)
+
+# These don't print out well with windows due to the ';' characters
+ifneq ($(PLATFORM),windows)
+ ALL_SETTINGS+=$(call addOptionalSetting,JAVAC_CMD)
+ ALL_SETTINGS+=$(call addOptionalSetting,JAVAH_CMD)
+ ALL_SETTINGS+=$(call addOptionalSetting,JAVADOC_CMD)
+endif
+
+ALL_SETTINGS+=$(call addHeading,Build Platform Settings)
+ALL_SETTINGS+=$(call addRequiredSetting,USER)
+ALL_SETTINGS+=$(call addRequiredSetting,PLATFORM)
+ALL_SETTINGS+=$(call addRequiredSetting,ARCH)
+ALL_SETTINGS+=$(call addRequiredSetting,LIBARCH)
+ALL_SETTINGS+=$(call addRequiredSetting,ARCH_FAMILY)
+ALL_SETTINGS+=$(call addRequiredSetting,ARCH_DATA_MODEL)
+ALL_SETTINGS+=$(call addRequiredSetting,ARCHPROP)
+ifeq ($(PLATFORM),windows)
+ ALL_SETTINGS+=$(call addRequiredSetting,PROCESSOR_ARCHITECTURE)
+ ALL_SETTINGS+=$(call addRequiredSetting,PROCESSOR_IDENTIFIER)
+ ALL_SETTINGS+=$(call addRequiredSetting,WINDOWS_VERSION)
+ ALL_SETTINGS+=$(call addRequiredSetting,WINDOWS_NT_VERSION_STRING)
+ ifdef USING_CYGWIN
+ ALL_SETTINGS+=$(call addRequiredSetting,USING_CYGWIN)
+ ALL_SETTINGS+=$(call addRequiredVersionSetting,CYGWIN_VER)
+ ALL_SETTINGS+=$(call addRequiredSetting,CYGPATH_CMD)
+ else
+ ALL_SETTINGS+=$(call addRequiredVersionSetting,MKS_VER)
+ ALL_SETTINGS+=$(call addOptionalSetting,DOSNAME_CMD)
+ endif
+endif
+ifeq ($(PLATFORM),linux)
+ ALL_SETTINGS+=$(call addRequiredSetting,LINUX_VERSION)
+ ifneq ($(ARCH), ia64)
+ ALL_SETTINGS+=$(call addRequiredSetting,ALSA_VERSION)
+ endif
+endif
+ALL_SETTINGS+=$(call addRequiredVersionSetting,OS_VERSION)
+ALL_SETTINGS+=$(call addRequiredSetting,OS_NAME)
+ALL_SETTINGS+=$(call addRequiredSetting,TEMP_FREE_SPACE)
+ALL_SETTINGS+=$(call addRequiredSetting,FREE_SPACE)
+ALL_SETTINGS+=$(call addRequiredSetting,MB_OF_MEMORY)
+
+
+ALL_SETTINGS+=$(call addHeading,GNU Make Settings)
+ALL_SETTINGS+=$(call addRequiredSetting,MAKE)
+ALL_SETTINGS+=$(call addRequiredVersionSetting,MAKE_VER)
+ALL_SETTINGS+=$(call addOptionalSetting,MAKECMDGOALS)
+ALL_SETTINGS+=$(call addOptionalSetting,MAKEFLAGS)
+ALL_SETTINGS+=$(call addRequiredSetting,SHELL)
+
+
+ALL_SETTINGS+=$(call addHeading,Target Build Versions)
+ALL_SETTINGS+=$(call addRequiredSetting,JDK_VERSION)
+ALL_SETTINGS+=$(call addOptionalSetting,MILESTONE)
+ALL_SETTINGS+=$(call addOptionalSetting,RELEASE)
+ALL_SETTINGS+=$(call addRequiredSetting,FULL_VERSION)
+ALL_SETTINGS+=$(call addOptionalSetting,BUILD_NUMBER)
+
+
+ALL_SETTINGS+=$(call addHeading,External File/Binary Locations)
+ALL_SETTINGS+=$(call addRequiredSetting,USRJDKINSTANCES_PATH)
+ALL_SETTINGS+=$(call addAltSetting,BUILD_JDK_IMPORT_PATH)
+ALL_SETTINGS+=$(call addAltSetting,JDK_IMPORT_PATH)
+ALL_SETTINGS+=$(call addAltSetting,LANGTOOLS_DIST)
+ALL_SETTINGS+=$(call addAltSetting,CORBA_DIST)
+ALL_SETTINGS+=$(call addAltSetting,JAXP_DIST)
+ALL_SETTINGS+=$(call addAltSetting,JAXWS_DIST)
+ALL_SETTINGS+=$(call addAltSetting,HOTSPOT_DOCS_IMPORT_PATH)
+ALL_SETTINGS+=$(call addAltSetting,HOTSPOT_IMPORT_PATH)
+ifeq ($(ARCH_DATA_MODEL), 32)
+ ALL_SETTINGS+=$(call addAltSetting,HOTSPOT_CLIENT_PATH)
+endif
+ALL_SETTINGS+=$(call addAltSetting,HOTSPOT_SERVER_PATH)
+ifeq ($(PLATFORM),windows)
+ ALL_SETTINGS+=$(call addAltSetting,HOTSPOT_LIB_PATH)
+ ALL_SETTINGS+=$(call addRequiredSetting,DXSDK_VER)
+ ALL_SETTINGS+=$(call addAltSetting,DXSDK_PATH)
+ ALL_SETTINGS+=$(call addAltSetting,DXSDK_INCLUDE_PATH)
+ ALL_SETTINGS+=$(call addAltSetting,DXSDK_LIB_PATH)
+ ifndef OPENJDK
+ ALL_SETTINGS+=$(call addAltSetting,DEPLOY_MSSDK)
+ ALL_SETTINGS+=$(call addAltSetting,INSTALL_MSSDK)
+ ALL_SETTINGS+=$(call addAltSetting,WSCRIPT)
+ ALL_SETTINGS+=$(call addAltSetting,MSICERT)
+ ALL_SETTINGS+=$(call addAltSetting,MSITRAN)
+ ALL_SETTINGS+=$(call addAltSetting,MSIVAL2)
+ endif
+endif
+ALL_SETTINGS+=$(call addAltSetting,CACERTS_FILE)
+ifndef OPENJDK
+ ALL_SETTINGS+=$(call addAltSetting,MOZILLA_HEADERS_PATH)
+endif
+ifneq ($(PLATFORM),windows)
+ ALL_SETTINGS+=$(call addAltSetting,CUPS_HEADERS_PATH)
+endif
+
+ifdef OPENJDK
+ ALL_SETTINGS+=$(call addHeading,OpenJDK-specific settings)
+ ALL_SETTINGS+=$(call addAltSetting,FREETYPE_HEADERS_PATH)
+ ALL_SETTINGS+=$(call addAltSetting,FREETYPE_LIB_PATH)
+ ALL_SETTINGS+=$(call addHeading,OPENJDK Import Binary Plug Settings)
+ ALL_SETTINGS+=$(call addAltSetting,BINARY_PLUGS_JARFILE)
+ ALL_SETTINGS+=$(call addAltSetting,BINARY_PLUGS_PATH)
+ ALL_SETTINGS+=$(call addAltSetting,BUILD_BINARY_PLUGS_PATH)
+else
+ ALL_SETTINGS+=$(call addHeading,OPENJDK Export Binary Plug Settings)
+ ALL_SETTINGS+=$(call addOptionalSetting,PLUG_EXPORT_DIRNAME)
+endif
+ALL_SETTINGS+=$(call addOptionalSetting,PLUG_LIBRARY_NAMES)
+
+ifdef OPENJDK
+ ALL_SETTINGS+=$(call addHeading,Previous JDK Settings)
+ ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_RELEASE_PATH)
+ ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_JDK_VERSION)
+ ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_JDK_FILE)
+ ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_JRE_FILE)
+ ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_RELEASE_IMAGE)
+endif
+
diff --git a/jdk/make/common/shared/Sanity.gmk b/jdk/make/common/shared/Sanity.gmk
new file mode 100644
index 0000000..a97dddd
--- /dev/null
+++ b/jdk/make/common/shared/Sanity.gmk
@@ -0,0 +1,1633 @@
+#
+# Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# WARNING: This file is shared with other workspaces.
+#
+
+#
+# Shared sanity rules for the JDK builds.
+#
+
+.SUFFIXES: .hdiffs
+
+# All files created during sanity checking
+
+SANITY_FILES = $(ERROR_FILE) $(WARNING_FILE) $(MESSAGE_FILE)
+
+# How to say "The Release Engineering people use this"
+THE_OFFICIAL_USES=The official $(PLATFORM) builds use
+
+# How to say "You are using:"
+YOU_ARE_USING=You appear to be using
+
+# Settings and rules to validate the JDK build environment.
+
+ifeq ($(PLATFORM), solaris)
+ FREE_SPACE := $(shell $(DF) -b $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$2;}')
+ TEMP_FREE_SPACE := $(shell $(DF) -b $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$2;}')
+ REQ_PATCH_LIST = $(JDK_TOPDIR)/make/PatchList.solaris
+ ifeq ($(ARCH_FAMILY), sparc)
+ PATCH_POSITION = $$4
+ else
+ PATCH_POSITION = $$6
+ endif
+endif
+
+ifeq ($(PLATFORM), linux)
+ FREE_SPACE := $(shell $(DF) --sync -kP $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
+ TEMP_FREE_SPACE := $(shell $(DF) --sync -kP $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
+ ifeq ($(ARCH), amd64)
+ LINUX_VERSION := $(shell \
+ if [ -r "$(LINUX_VERSION_INFO)" ] ; then \
+ $(CAT) $(LINUX_VERSION_INFO) | $(TAIL) -1 | $(NAWK) '{ print $$3; }';\
+ else \
+ $(ECHO) "Unknown linux"; \
+ fi )
+ else
+ LINUX_VERSION := $(shell \
+ if [ -r "$(LINUX_VERSION_INFO)" ] ; then \
+ $(NAWK) '{ print $$4" "$$5; }' $(LINUX_VERSION_INFO) ; \
+ else \
+ $(ECHO) "Unknown linux"; \
+ fi )
+ endif
+ ifneq ($(ARCH), ia64)
+ # dummy program that outputs ALSA's version (created in target sane-alsa-versioncheck)
+ ALSA_VERSION_CHECK = $(TEMPDIR)/alsaversioncheck
+ ALSA_VERSION = `if [ -f "$(ALSA_VERSION_CHECK)" ] ; then $(ALSA_VERSION_CHECK) ; fi`
+ endif
+endif
+
+ifeq ($(PLATFORM), windows)
+ WINVER=$(JDK_TOPDIR)/make/tools/winver/bin/winver.exe
+ FREE_SPACE := $(shell $(DF) -kP $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
+ TEMP_FREE_SPACE := $(shell $(DF) -kP $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
+ WINDOWS_VERSION := $(shell \
+ if [ -x $(WINVER) ]; then \
+ $(WINVER) ; \
+ else \
+ $(ECHO) "Unknown Windows Version"; \
+ fi)
+ DXSDK_VER := $(shell $(EGREP) DIRECTDRAW_VERSION $(DXSDK_INCLUDE_PATH)/ddraw.h 2>&1 | \
+ $(EGREP) "\#define" | $(NAWK) '{print $$3}')
+endif
+
+# Get the version numbers of what we are using
+_MAKE_VER :=$(shell $(MAKE) --version 2>&1 | $(HEAD) -n 1)
+_ZIP_VER :=$(shell $(ZIPEXE) -help 2>&1 | $(HEAD) -n 4 | $(EGREP) '^Zip')
+_UNZIP_VER :=$(shell $(UNZIP) -help 2>&1 | $(HEAD) -n 4 | $(EGREP) '^UnZip')
+_BOOT_VER :=$(shell $(BOOTDIR)/bin/java -version 2>&1 | $(HEAD) -n 1)
+MAKE_VER :=$(call GetVersion,"$(_MAKE_VER)")
+ZIP_VER :=$(call GetVersion,"$(_ZIP_VER)")
+UNZIP_VER :=$(call GetVersion,"$(_UNZIP_VER)")
+BOOT_VER :=$(call GetVersion,"$(_BOOT_VER)")
+
+REQUIRED_ANT_VER := 1.6.3
+_ANT_VER :=$(shell $(ANT) -version 2>&1 )
+ANT_VER :=$(call GetVersion,"$(_ANT_VER)")
+
+REQUIRED_FINDBUGS_VER := 1.1
+_FINDBUGS_VER :=$(shell $(FINDBUGS) -version 2>&1 )
+FINDBUGS_VER :=$(call GetVersion,"$(_FINDBUGS_VER)")
+
+ifdef ALT_BINDIR
+ ALT_BINDIR_VERSION := $(shell $(ALT_BINDIR)/java$(EXE_SUFFIX) -version 2>&1 | $(NAWK) -F'"' '{ print $$2 }')
+ ALT_BINDIR_OK := $(shell $(ECHO) $(ALT_BINDIR_VERSION) | $(EGREP) -c '^$(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION)')
+endif
+
+INSTALL_PATCHES_FILE = $(TEMPDIR)/installed.patches
+
+# Get ALL_SETTINGS defined
+include $(JDK_MAKE_SHARED_DIR)/Sanity-Settings.gmk
+
+.PHONY: \
+ sane-copyrightyear\
+ sane-settings \
+ sane-insane \
+ sane-build_number \
+ sane-os_version \
+ sane-memory_check \
+ sane-windows \
+ sane-locale \
+ sane-linux \
+ sane-cygwin \
+ sane-cygwin-shell \
+ sane-mks \
+ sane-arch_data_model \
+ sane-os_patch_level \
+ sane-classpath \
+ sane-java_home \
+ sane-fonts \
+ sane-binary-plugs \
+ sane-variant \
+ sane-ld_library_path \
+ sane-ld_library_path_64 \
+ sane-ld_options \
+ sane-ld_run_path \
+ sane-makeflags \
+ sane-alt_outputdir \
+ sane-outputdir \
+ sane-alt_bootdir \
+ sane-bootdir \
+ sane-cups \
+ sane-devtools_path \
+ sane-compiler_path \
+ sane-unixcommand_path \
+ sane-usrbin_path \
+ sane-unixccs_path \
+ sane-docs_import \
+ sane-math_iso \
+ sane-libCrun \
+ sane-odbcdir \
+ sane-msdevtools_path \
+ sane-hotspot_binaries \
+ sane-hotspot_import \
+ sane-hotspot_import_dir \
+ sane-hotspot_import_include \
+ sane-compiler \
+ sane-link \
+ sane-cacerts \
+ sane-alsa-versioncheck \
+ sane-alsa-headers \
+ sane-ant_version \
+ sane-findbugs_version \
+ sane-zip_version \
+ sane-unzip_version \
+ sane-msvcrt_path \
+ sane-freetype
+
+######################################################
+# check for COPYRIGHT_YEAR variable
+######################################################
+sane-copyrightyear:
+ifdef ALT_COPYRIGHT_YEAR
+ @$(ECHO) "WARNING: ALT_COPYRIGHT_YEAR but not the current year\n" \
+ " will be used for copyright year.\n " \
+ "" >>$(WARNING_FILE)
+endif
+
+######################################################
+# check for INSANE variable
+######################################################
+sane-insane:
+ifdef INSANE
+ @$(ECHO) "WARNING: You are building in 'INSANE' mode. You \n" \
+ " should not use this mode, and in fact, \n" \
+ " it may be removed at any time. If you \n" \
+ " have build problems as a result of using \n" \
+ " INSANE mode, then you should not expect \n" \
+ " assistance from anyone with the problems \n" \
+ " or consequences you experience. \n" \
+ "" >> $(WARNING_FILE)
+endif
+
+######################################################
+# check for GNU Make version
+######################################################
+MAKE_CHECK :=$(call CheckVersions,$(MAKE_VER),$(REQUIRED_MAKE_VER))
+sane-make:
+ @if [ "$(MAKE_CHECK)" != "same" -a "$(MAKE_CHECK)" != "newer" ]; then \
+ $(ECHO) "WARNING: The version of make being used is older than \n" \
+ " the required version of '$(REQUIRED_MAKE_VER)'. \n" \
+ " The version of make found was '$(MAKE_VER)'. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+
+######################################################
+# Check the BUILD_NUMBER to make sure it contains bNN
+######################################################
+sane-build_number:
+ @if [ "`$(ECHO) $(BUILD_NUMBER) | $(SED) 's@.*b[0-9][0-9]*.*@bNN@'`" != "bNN" ] ; then \
+ $(ECHO) "WARNING: The BUILD_NUMBER needs to contain b[0-9][0-9]*. Currently BUILD_NUMBER=$(BUILD_NUMBER). \n" \
+ " This has been known to cause build failures. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+
+######################################################
+# Check the ARCH_DATA_MODEL setting
+######################################################
+sane-arch_data_model:
+ @if [ "$(ARCH_DATA_MODEL)" != 32 -a "$(ARCH_DATA_MODEL)" != 64 ]; then \
+ $(ECHO) "ERROR: The setting of ARCH_DATA_MODEL must be 32 or 64.\n" \
+ " $(YOU_ARE_USING) ARCH_DATA_MODEL=$(ARCH_DATA_MODEL). \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+
+######################################################
+# Check the OS version (windows and linus have release name checks)
+# NOTE: OPENJDK explicitly does not check for OS release information.
+# Unless we know for sure that it will not build somewhere, we cannot
+# generate a fatal sanity error, and a warning about the official
+# build platform just becomes clutter.
+######################################################
+OS_CHECK :=$(call CheckVersions,$(OS_VERSION),$(REQUIRED_OS_VERSION))
+sane-os_version:: sane-arch_data_model sane-memory_check sane-locale sane-os_patch_level
+ifndef OPENJDK
+ @if [ "$(OS_CHECK)" = "missing" ]; then \
+ $(ECHO) "ERROR: The $(PLATFORM) OS version is undefined (Try: uname -r). \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @if [ "$(OS_CHECK)" != "same" ]; then \
+ $(ECHO) "WARNING: $(THE_OFFICIAL_USES) OS version $(REQUIRED_OS_VERSION). \n" \
+ " $(YOU_ARE_USING) OS version $(OS_VERSION). \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+ ifeq ($(PLATFORM), windows)
+ @if [ "$(WINDOWS_VERSION)" != "$(REQUIRED_WINDOWS_VERSION)" ]; then \
+ $(ECHO) "WARNING: $(YOU_ARE_USING) an unsupported version of $(REQUIRED_WINDOWS_NAME). \n" \
+ " The supported version is $(REQUIRED_WINDOWS_NAME) $(REQUIRED_WINDOWS_VERSION). \n" \
+ " $(YOU_ARE_USING) $(WINDOWS_VERSION) \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+ endif # windows
+ ifeq ($(PLATFORM), linux)
+ @if [ `$(ECHO) "$(LINUX_VERSION)" | $(EGREP) -c '$(REQUIRED_LINUX_VER)'` -ne 1 ]; then \
+ $(ECHO) "WARNING: The build is being done on Linux $(LINUX_VERSION). \n" \
+ " $(THE_OFFICIAL_USES) Linux $(REQUIRED_LINUX_VER), \n" \
+ " specifically Linux $(REQUIRED_LINUX_FULLVER). \n" \
+ " The version found was '$(OS_VERSION)'. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+ endif # linux
+endif # OPENJDK
+
+ifeq ($(PLATFORM), windows)
+ sane-os_version:: sane-cygwin sane-mks sane-cygwin-shell
+endif
+
+######################################################
+# Check the memory available on this machine
+######################################################
+sane-memory_check:
+ @if [ "$(LOW_MEMORY_MACHINE)" = "true" ]; then \
+ $(ECHO) "WARNING: This machine appears to only have $(MB_OF_MEMORY)Mb of physical memory, \n" \
+ " builds on this machine could be slow. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+
+######################################################
+# Check the locale (value of LC_ALL, not being empty or ==C can be a problem)
+######################################################
+sane-locale:
+ifneq ($(PLATFORM), windows)
+ @if [ "$(LC_ALL)" != "" -a "$(LC_ALL)" != "C" ]; then \
+ $(ECHO) "WARNING: LC_ALL has been set to $(LC_ALL), this can cause build failures. \n" \
+ " Try setting LC_ALL to \"C\". \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+ @if [ "$(LANG)" != "" -a "$(LANG)" != "C" ]; then \
+ $(ECHO) "WARNING: LANG has been set to $(LANG), this can cause build failures. \n" \
+ " Try setting LANG to \"C\". \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+endif
+
+######################################################
+# Check the Windows cygwin version
+######################################################
+ifeq ($(PLATFORM), windows)
+ CYGWIN_CHECK :=$(call CheckVersions,$(CYGWIN_VER),$(REQUIRED_CYGWIN_VER))
+sane-cygwin:
+ ifdef USING_CYGWIN
+ @if [ "$(CYGWIN_CHECK)" = "missing" ]; then \
+ $(ECHO) "ERROR: The CYGWIN version is undefined. \n" \
+ " $(THE_OFFICIAL_USES) CYGWIN $(REQUIRED_CYGWIN_VER). \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @if [ "$(CYGWIN_CHECK)" = "older" ]; then \
+ $(ECHO) "ERROR: The build cannot be done on CYGWIN $(CYGWIN_VER). \n" \
+ " Use CYGWIN $(REQUIRED_CYGWIN_VER) or higher. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ endif
+endif
+
+######################################################
+# Check the cygwin shell is used, not cmd.exe
+######################################################
+ifeq ($(PLATFORM), windows)
+sane-cygwin-shell:
+ ifdef USING_CYGWIN
+ @if [ "$(SHLVL)" = "" -a "$(_)" = "" ]; then \
+ $(ECHO) "ERROR: You are using an unsupported shell. \n" \
+ " Use either sh, bash, ksh, zsh, or tcsh. \n" \
+ " Using the cmd.exe utility is not supported. \n" \
+ " If you still want to try your current shell, \n" \
+ " please export SHLVL=1 when running $(MAKE). \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ endif
+endif
+
+######################################################
+# Check the Windows mks version
+######################################################
+ifeq ($(PLATFORM), windows)
+ MKS_CHECK :=$(call CheckVersions,$(MKS_VER),$(REQUIRED_MKS_VER))
+sane-mks:
+ ifndef USING_CYGWIN
+ @if [ "$(MKS_CHECK)" = "missing" ]; then \
+ $(ECHO) "ERROR: The MKS version is undefined. \n" \
+ " $(THE_OFFICIAL_USES) MKS $(REQUIRED_MKS_VER). \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @if [ "$(MKS_CHECK)" = "older" ]; then \
+ $(ECHO) "ERROR: The build cannot be done on MKS $(MKS_VER). \n" \
+ " Use MKS $(REQUIRED_MKS_VER) or higher. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ endif
+endif
+
+######################################################
+# Get list of installed patches (this file has a particular format)
+######################################################
+$(INSTALL_PATCHES_FILE):
+ @$(prep-target)
+ifeq ($(PLATFORM), solaris)
+ ifeq ($(OS_VERSION),$(REQUIRED_OS_VERSION))
+ $(SHOWREV) -p > $@ 2>&1
+ endif
+endif
+ @$(ECHO) "" >> $@
+
+######################################################
+# Check list of Solaris patches
+######################################################
+sane-os_patch_level: $(INSTALL_PATCHES_FILE)
+ifeq ($(PLATFORM), solaris)
+ ifeq ($(OS_VERSION),$(REQUIRED_OS_VERSION))
+ @$(NAWK) 'BEGIN { \
+ readingInstallPatches = 0; \
+ requiredCount = 0; \
+ installCount = 0; \
+} \
+{ \
+ if (readingInstallPatches) { \
+ if ($$1=="Patch:") { \
+ ns = split($$2,parts,"-"); \
+ installPatchNo[installCount]=parts[1]; \
+ installPatchRev[installCount]=parts[2]; \
+ installCount++; \
+ } \
+ } \
+ \
+ if (!readingInstallPatches) { \
+ if (index($$1,"#") != 0) continue; \
+ if (match($$1,"BUILD") > 0 \
+ && $$2 == $(OS_VERSION) \
+ && ($$7 == "REQ" || $$7 == "req") \
+ && $(PATCH_POSITION) != "none" \
+ && $(PATCH_POSITION) != "NONE") { \
+ ns = split($(PATCH_POSITION),parts,"-"); \
+ requiredPatchNo[requiredCount]=parts[1]; \
+ requiredPatchRev[requiredCount]=parts[2]; \
+ requiredCount++; \
+ } \
+ } \
+} \
+END { \
+ errorCount=0; \
+ for (i=0; i<requiredCount; i++) { \
+ foundMatch = 0; \
+ for (j=0; j<installCount; j++) { \
+ if (installPatchNo[j] == requiredPatchNo[i] \
+ && installPatchRev[j] >= requiredPatchRev[i]) { \
+ foundMatch = 1; \
+ break; \
+ } \
+ } \
+ if ( foundMatch == 0) { \
+ printf("WARNING: Your solaris install is missing the required patch %s-%s\n", requiredPatchNo[i], requiredPatchRev[i] ); \
+ printf(" Please update your your system patches or build on a different machine.\n\n" ); \
+ errorCount++; \
+ } \
+ } \
+}' $(REQ_PATCH_LIST) readingInstallPatches=1 $(INSTALL_PATCHES_FILE) >> $(WARNING_FILE)
+ endif
+endif # PLATFORM
+
+######################################################
+# CLASSPATH cannot be set, unless you are insane.
+######################################################
+sane-classpath:
+ifdef CLASSPATH
+ @$(ECHO) "ERROR: Your CLASSPATH environment variable is set. This will \n" \
+ " most likely cause the build to fail. Please unset it \n" \
+ " and start your build again. \n" \
+ "" >> $(ERROR_FILE)
+endif
+
+######################################################
+# JAVA_HOME cannot be set, unless you are insane.
+######################################################
+sane-java_home:
+ifdef JAVA_HOME
+ @$(ECHO) "ERROR: Your JAVA_HOME environment variable is set. This will \n" \
+ " most likely cause the build to fail. Please unset it \n" \
+ " and start your build again. \n" \
+ "" >> $(ERROR_FILE)
+endif
+
+######################################################
+# Make sure the fonts are there
+# Exceptions are when explicitly building OPENJDK, or
+# when the entire CLOSED_SRC dir is excluded, so we are
+# implicitly building OPENJDK
+######################################################
+FONT_FILE=$(CLOSED_SRC)/share/lib/fonts/LucidaTypewriterRegular.ttf
+sane-fonts:
+ifndef OPENJDK
+ @if [ -d $(CLOSED_SRC) ] ; then \
+ if [ ! -f $(FONT_FILE) ] ; then \
+ $(ECHO) "ERROR: Missing $(FONT_FILE). \n" \
+ " Verify you have downloaded and overlayed on the source area all the binary files. \n" \
+ "" >> $(ERROR_FILE); \
+ fi \
+ fi
+endif
+
+######################################################
+# If building OPENJDK check pre-built binaries are
+# available for binary plug source components.
+######################################################
+ifdef OPENJDK
+sane-binary-plugs:
+ @if [ ! -d "$(BINARY_PLUGS_PATH)" ]; then \
+ $(ECHO) "ERROR: Can't locate pre-built libraries. \n" \
+ " Please check your access to \n" \
+ " $(BINARY_PLUGS_PATH) \n" \
+ " and/or check your value of ALT_BINARY_PLUGS_PATH. \n" \
+ "" >> $(ERROR_FILE); \
+ fi
+endif
+
+######################################################
+# VARIANT must be set to DBG or OPT
+######################################################
+sane-variant:
+ @if [ "$(VARIANT)" != DBG -a "$(VARIANT)" != OPT ] ; then \
+ $(ECHO) "ERROR: Your VARIANT environment variable is set to $(VARIANT). \n" \
+ " Needs to be set to DBG or OPT \n" \
+ "" >> $(ERROR_FILE); \
+ fi
+
+######################################################
+# LD_LIBRARY_PATH should not be set, unless you are insane.
+######################################################
+sane-ld_library_path:
+ifdef LD_LIBRARY_PATH
+ @$(ECHO) "ERROR: Your LD_LIBRARY_PATH environment variable is set. This may \n" \
+ " produce binaries binaries incorrectly. Please unset it \n" \
+ " and start your build again. \n" \
+ "" >> $(ERROR_FILE)
+endif
+
+######################################################
+# LD_LIBRARY_PATH_64 should not be set, unless you are insane.
+######################################################
+sane-ld_library_path_64:
+ifdef LD_LIBRARY_PATH_64
+ @$(ECHO) "ERROR: Your LD_LIBRARY_PATH_64 environment variable is set. This may \n" \
+ " produce binaries binaries incorrectly. Please unset it \n" \
+ " and start your build again. \n" \
+ "" >> $(ERROR_FILE)
+endif
+
+######################################################
+# LD_OPTIONS should not be set, unless you are insane.
+######################################################
+sane-ld_options:
+ifdef LD_OPTIONS
+ @$(ECHO) "ERROR: Your LD_OPTIONS environment variable is set. This may \n" \
+ " produce binaries binaries incorrectly. Please unset it \n" \
+ " and start your build again. \n" \
+ "" >> $(ERROR_FILE)
+endif
+
+######################################################
+# LD_RUN_PATH should not be set, unless you are insane.
+######################################################
+sane-ld_run_path:
+ifdef LD_RUN_PATH
+ @$(ECHO) "ERROR: Your LD_RUN_PATH environment variable is set. This may \n" \
+ " produce binaries binaries incorrectly. Please unset it \n" \
+ " produce binaries binaries incorrectly. Please unset it \n" \
+ " and start your build again. \n" \
+ "" >> $(ERROR_FILE)
+endif
+
+######################################################
+# MAKEFLAGS cannot be set, unless you are insane.
+######################################################
+ifeq ($(PLATFORM), windows)
+ifdef USING_CYGWIN
+REAL_MAKEFLAGS:=$(subst --unix,,$(MAKEFLAGS))
+else
+REAL_MAKEFLAGS:=$(MAKEFLAGS)
+endif
+else
+REAL_MAKEFLAGS:=$(MAKEFLAGS)
+endif
+sane-makeflags:
+# ifneq ($(strip $(REAL_MAKEFLAGS)),)
+ifeq ($(origin MAKEFLAGS),environment)
+ @#
+ @# it is unacceptable to have the-e or --environment-overrides value in MAKEFLAGS
+ @#
+ @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(e|--environment-overrides)( |$$)'` -ne 0 ]; then \
+ $(ECHO) "ERROR: Either the build was started with the flag -e or \n" \
+ " --environment-overrides, or the MAKEFLAGS environment \n" \
+ " variable has this value set. This will cause any \n" \
+ " environment variables you have defined to override \n" \
+ " the values defined by the makefiles. This practice is \n" \
+ " not recommemded by the authors of GNU Make, and \n" \
+ " will lead to an improper build. \n" \
+ " Please fix and restart the build. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @#
+ @# it is unacceptable to havethe -i or --ignore-errors value in MAKEFLAGS
+ @#
+ @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(i|--ignore-errors)( |$$)'` -ne 0 ]; then \
+ $(ECHO) "ERROR: Either the build was started with the flag -i or \n" \
+ " --ignore-errors, or the MAKEFLAGS environment \n" \
+ " variable has this value set. 1111 You will be unable \n" \
+ " to determine if the build is broken or not. \n" \
+ " Please fix and restart the build. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @#
+ @# it is unacceptable to have the -I or --include-dir value in MAKEFLAGS
+ @#
+ @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(I|--include-dir)( |$$)'` -ne 0 ]; then \
+ $(ECHO) "ERROR: Either the build was started with the flag -I or \n" \
+ " --include-dir, or the MAKEFLAGS environment \n" \
+ " variable has this value set. This will render your \n" \
+ " build questionable as not all the rules and depenencies \n" \
+ " are captured by the build. \n" \
+ " Please fix and restart the build. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @#
+ @# it is unacceptable to have the -k or --keep-going value in MAKEFLAGS:
+ @#
+ @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(k|--keep-going)( |$$)'` -ne 0 ]; then \
+ $(ECHO) "ERROR: Either the build was started with the flag -k or \n" \
+ " --keep-going, or the MAKEFLAGS environment \n" \
+ " variable has this value set. 222 You will be unable \n" \
+ " to determine if the build is broken or not. \n" \
+ " Please fix and restart the build. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @#
+ @# it is unacceptable to have the -o or --assume-old or --old-filevalue in MAKEFLAGS:
+ @# Note - this rule never gets invoked because it is processed out
+ @# in GNU Make startup
+ @#
+ @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(o|--assume-old|--old-file)( |$$)'` -ne 0 ]; then \
+ $(ECHO) "ERROR: Either the build was started with the flag -o or \n" \
+ " --assume-old or --old-file, or the MAKEFLAGS environment \n" \
+ " variable has this value set. This could prevent the \n" \
+ " build from executing rules it should, thus rendering a \n" \
+ " questionable result. \n" \
+ " Please fix and restart the build. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @#
+ @# it is unacceptable to have the -r or --nobuiltin-rules value in MAKEFLAGS
+ @#
+ @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(r|--no-builtin-rules)( |$$)'` -ne 0 ]; then \
+ $(ECHO) "ERROR: Either the build was started with the flag -r or \n" \
+ " --no-builtin-rules, or the MAKEFLAGS environment \n" \
+ " variable has this value set. This may break the build \n" \
+ " by not allowing builtin rules that may be required. \n" \
+ " Please fix and restart the build. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @#
+ @# it is unacceptable to have the -t or --touch value in MAKEFLAGS
+ @# Note - this rule never gets invoked because it is processed out
+ @# in GNU Make startup
+ @#
+ @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(t|--touch)( |$$)'` -ne 0 ]; then \
+ $(ECHO) "ERROR: Either the build was started with the flag -t or \n" \
+ " --touch, or the MAKEFLAGS environment \n" \
+ " variable has this value set. This will leave the \n" \
+ " build in a unclear state and could lead to not executing \n" \
+ " rules which should be executed. \n" \
+ " Please fix and restart the build. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @#
+ @# show what is in MAKEFLAGS so the user is aware...
+ @#
+ @$(ECHO) "WARNING: Your MAKEFLAGS environment variable is set. \n" \
+ " You should be very careful about the values set here. \n" \
+ "\n" \
+ " MAKEFLAGS is set to =>$(MAKEFLAGS)<= \n" \
+ "" >> $(WARNING_FILE)
+endif
+
+######################################################
+# if specified, ALT_OUTPUTDIR must point to non-relative path if set
+######################################################
+sane-alt_outputdir:
+ifdef ALT_OUTPUTDIR
+ @if [ `$(ECHO) $(subst \,/,$(ALT_OUTPUTDIR)) | $(EGREP) -ci '^([a-z]:)?/'` -ne 1 ]; then \
+ $(ECHO) "ERROR: ALT_OUTPUTDIR must be an Absolute Path Name, \n" \
+ " not a Relative Path Name. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ ifeq ($(PLATFORM), windows)
+ @if [ `$(ECHO) $(subst \,/,$(ALT_OUTPUTDIR)) | $(EGREP) -ci '^([a-z]:)'` -ne 1 ]; then \
+ $(ECHO) "ERROR: On windows, ALT_OUTPUTDIR must contain the drive letter. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ endif
+endif
+
+######################################################
+# OUTPUTDIR tests
+######################################################
+sane-outputdir:
+ @#
+ @# OUTPUTDIR must be a directory...
+ @#
+ @if [ ! -d "$(OUTPUTDIR)" ]; then \
+ $(ECHO) "ERROR: OUTPUTDIR must be an existing directory. The current \n" \
+ " value of OUTPUTDIR is \n" \
+ " $(OUTPUTDIR) \n" \
+ " Please check your value of ALT_OUTPUTDIR. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @#
+ @# OUTPUTDIR must be writeable by user...
+ @#
+ @if [ ! -w "$(OUTPUTDIR)" ]; then \
+ $(ECHO) "ERROR: You must have write permissions to OUTPUTDIR. The \n" \
+ " current value of OUTPUTDIR is \n" \
+ " $(OUTPUTDIR) \n" \
+ " Either obtain these permissions or set ALT_OUTPUTDIR. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @#
+ @# OUTPUTDIR must have enough free space...
+ @#
+ @if [ $(FREE_SPACE) -lt $(REQUIRED_FREE_SPACE) ]; then \
+ $(ECHO) "WARNING: You may not have enough free space in your OUTPUTDIR. The \n" \
+ " current value of OUTPUTDIR is \n" \
+ " $(OUTPUTDIR) \n" \
+ " You need "$(REQUIRED_FREE_SPACE)" Kbytes free on this device to build \n" \
+ " and it appears that only "$(FREE_SPACE)" Kbytes are free. \n" \
+ " Either obtain more space or set ALT_OUTPUTDIR to a larger disk. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+
+######################################################
+# if specified, ALT_BOOTDIR must point to non-relative path if set
+######################################################
+sane-alt_bootdir:
+ifdef ALT_BOOTDIR
+ @if [ `$(ECHO) $(subst \,/,$(ALT_BOOTDIR)) | $(EGREP) -ci '^([a-z]:)?/'` -ne 1 ]; then \
+ $(ECHO) "ERROR: ALT_BOOTDIR must be an Absolute Path Name, \n" \
+ " not a Relative Path Name. \n" \
+ " The current value of ALT_BOOTDIR is \n" \
+ " $(ALT_BOOTDIR) \n" \
+ " Please fix this and continue your build. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+endif
+
+######################################################
+# BOOTDIR must point to a valid JDK.
+######################################################
+BOOT_CHECK :=$(call CheckVersions,$(BOOT_VER),$(REQUIRED_BOOT_VER))
+sane-bootdir:
+ @if [ "$(BOOT_CHECK)" != "same" -a "$(BOOT_CHECK)" != "newer" ]; then \
+ $(ECHO) "ERROR: Your BOOTDIR environment variable does not point \n" \
+ " to a valid JDK for bootstrapping this build. \n" \
+ " A JDK $(JDK_MINOR_VERSION) $(MARKET_NAME) build must be bootstrapped using \n" \
+ " JDK $(PREVIOUS_JDK_VERSION) fcs (or later). \n" \
+ " Apparently, your bootstrap JDK is version $(BOOT_VER) \n" \
+ " Please update your ALT_BOOTDIR setting and start your build again. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+
+######################################################
+# CACERTS_FILE must be absoulte path and readable
+######################################################
+sane-cacerts:
+ ifdef ALT_CACERTS_FILE
+ @if [ `$(ECHO) $(subst \,/,$(ALT_CACERTS_FILE)) | $(EGREP) -ci '^([a-z]:)?/'` -ne 1 ]; then \
+ $(ECHO) "ERROR: ALT_CACERTS_FILE must be an Absolute Path Name, \n" \
+ " not a Relative Path Name. \n" \
+ " The current value of ALT_CACERTS_FILE is \n" \
+ " $(ALT_CACERTS_FILE) \n" \
+ " Please fix this and continue your build. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ endif
+ @#
+ @# CACERTS_FILE must be readable
+ @#
+ @if [ ! -r "$(subst \,/,$(CACERTS_FILE))" ]; then \
+ $(ECHO) "ERROR: You do not have access to a valid cacerts file. \n" \
+ " Please check your access to \n" \
+ " $(subst \,/,$(CACERTS_FILE)) \n" \
+ " and/or check your value of ALT_CACERTS_FILE. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @#
+ @# CACERTS_FILE must be a file
+ @#
+ @if [ -d "$(subst \,/,$(CACERTS_FILE))" ]; then \
+ $(ECHO) "ERROR: You do not have access to a valid cacerts file.\n" \
+ " The value of CACERTS_FILE must point to a normal file.\n" \
+ " Please check your access to \n" \
+ " $(subst \,/,$(CACERTS_FILE)) \n" \
+ " and/or check your value of ALT_CACERTS_FILE. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+
+
+######################################################
+# Check for availability of FreeType (OpenJDK specific)
+######################################################
+
+ifdef OPENJDK
+
+#name of test program that prints out "Failed" if freetype is not good enough
+FREETYPE_VERSION_CHECK_NAME = freetype_versioncheck
+FREETYPE_VERSION_CHECK = $(TEMPDIR)/$(FREETYPE_VERSION_CHECK_NAME)$(EXE_SUFFIX)
+
+sane-freetype:
+ @-($(CD) $(BUILDDIR)/tools/freetypecheck && \
+ $(MAKE) REQUIRED_FREETYPE_VERSION=$(REQUIRED_FREETYPE_VERSION) \
+ FT_TEST=$(FREETYPE_VERSION_CHECK_NAME) \
+ FT_HEADERS=$(FREETYPE_HEADERS_PATH) \
+ FT_LIB=$(FREETYPE_LIB_PATH) \
+ XARCH=$(XARCH))
+ @if [ ! -r $(FREETYPE_VERSION_CHECK) -o \
+ "`$(FREETYPE_VERSION_CHECK) | $(GREP) Fail`" != "" ]; then \
+ $(ECHO) "ERROR: FreeType version " $(REQUIRED_FREETYPE_VERSION) \
+ "or higher is required. \n" >> $(ERROR_FILE) ; \
+ fi
+
+else
+#do nothing (not OpenJDK)
+sane-freetype:
+endif
+
+######################################################
+# CUPS_HEADERS_PATH must be valid
+######################################################
+sane-cups:
+ifneq ($(PLATFORM), windows)
+ @if [ ! -r $(CUPS_HEADERS_PATH)/cups/cups.h ]; then \
+ $(ECHO) "ERROR: You do not have access to valid Cups header files. \n" \
+ " Please check your access to \n" \
+ " $(CUPS_HEADERS_PATH)/cups/cups.h \n" \
+ " and/or check your value of ALT_CUPS_HEADERS_PATH, \n" \
+ " CUPS is frequently pre-installed on many systems, \n" \
+ " or may be downloaded from http://www.cups.org \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+endif
+
+######################################################
+# Check for existence of DEVTOOLS_PATH
+######################################################
+sane-devtools_path:
+ @if [ "$(DEVTOOLS_PATH)" != "" -a ! -r "$(DEVTOOLS_PATH)" ]; then \
+ $(ECHO) "ERROR: You do not have a valid DEVTOOLS_PATH setting. \n" \
+ " Please check your access to \n" \
+ " $(DEVTOOLS_PATH) \n" \
+ " and/or check your value of ALT_DEVTOOLS_PATH. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+
+######################################################
+# Check for existence of MS_RUNTIME_LIBRARIES
+######################################################
+sane-msvcrt_path:
+ifeq ($(PLATFORM), windows)
+ @if [ ! -r "$(MSVCRT_DLL_PATH)/msvcrt.dll" ]; then \
+ $(ECHO) "ERROR: You do not have access to msvcrt.dll. \n" \
+ " Please check your access to \n" \
+ " $(MSVCRT_DLL_PATH) \n" \
+ " and/or check your value of ALT_MSVCRT_DLL_PATH. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ ifeq ($(COMPILER_VERSION), VS2003)
+ @if [ ! -r "$(MSVCR71_DLL_PATH)/msvcr71.dll" ]; then \
+ $(ECHO) "ERROR: You do not have access to msvcr71.dll. \n" \
+ " Please check your access to \n" \
+ " $(MSVCR71_DLL_PATH) \n" \
+ " and/or check your value of ALT_MSVCR71_DLL_PATH. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ endif
+ endif
+endif
+
+######################################################
+# Check for existence of COMPILER_PATH
+######################################################
+sane-compiler_path:
+ @if [ "$(COMPILER_PATH)" != "" -a ! -r "$(COMPILER_PATH)" ]; then \
+ $(ECHO) "ERROR: You do not have a valid COMPILER_PATH setting. \n" \
+ " Please check your access to \n" \
+ " $(COMPILER_PATH) \n" \
+ " and/or check your value of ALT_COMPILER_PATH. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+
+######################################################
+# Check for existence of UNIXCOMMAND_PATH
+######################################################
+sane-unixcommand_path:
+ @if [ "$(UNIXCOMMAND_PATH)" != "" -a ! -r "$(UNIXCOMMAND_PATH)" ]; then \
+ $(ECHO) "ERROR: You do not have a valid UNIXCOMMAND_PATH setting. \n" \
+ " Please check your access to \n" \
+ " $(UNIXCOMMAND_PATH) \n" \
+ " and/or check your value of ALT_UNIXCOMMAND_PATH. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ifeq ($(PLATFORM), windows)
+ @for utility in cpio ar file m4 ; do \
+ if [ ! -r "`$(WHICH) $${utility}`" ]; then \
+ $(ECHO) "WARNING: You do not have the utility $${utility} in the \n" \
+ " directory $(UNIXCOMMAND_PATH). \n" \
+ " The utilities cpio, ar, file, and m4 are required. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi; \
+ done
+endif
+
+######################################################
+# Check for existence of USRBIN_PATH on linux
+######################################################
+sane-usrbin_path:
+ifeq ($(PLATFORM), linux)
+ @if [ "$(USRBIN_PATH)" != "" -a ! -r "$(USRBIN_PATH)" ]; then \
+ $(ECHO) "ERROR: You do not have a valid USRBIN_PATH setting. \n" \
+ " Please check your access to \n" \
+ " $(USRBIN_PATH) \n" \
+ " and/or check your value of ALT_USRBIN_PATH. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+endif
+
+######################################################
+# Check for existence of UNIXCCS_PATH on solaris
+######################################################
+sane-unixccs_path:
+ifeq ($(PLATFORM), solaris)
+ @if [ "$(UNIXCCS_PATH)" != "" -a ! -r "$(UNIXCCS_PATH)" ]; then \
+ $(ECHO) "ERROR: You do not have a valid UNIXCCS_PATH setting. \n" \
+ " Please check your access to \n" \
+ " $(UNIXCCS_PATH) \n" \
+ " and/or check your value of ALT_UNIXCCS_PATH. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+endif
+
+######################################################
+# Verify the docs directory exists
+######################################################
+sane-docs_import:
+ @if [ ! -d "$(HOTSPOT_DOCS_IMPORT_PATH)" ]; then \
+ $(ECHO) "WARNING: The directory HOTSPOT_DOCS_IMPORT_PATH=$(HOTSPOT_DOCS_IMPORT_PATH) \n" \
+ " does not exist, check your value of ALT_HOTSPOT_DOCS_IMPORT_PATH. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+
+######################################################
+# Check for possible problem regarding __fabsf, math_iso.h and the libm patch.
+# Hotspot should have been changed in Mustang 6.0 Build 47 to not depend
+# on __fabsf, this is just checking that fact now.
+######################################################
+sane-math_iso:
+ifeq ($(PLATFORM), solaris)
+ @if [ -f $(HOTSPOT_SERVER_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) ]; then \
+ if [ "`$(NM) $(HOTSPOT_SERVER_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) | $(GREP) __fabsf`" != "" ]; then \
+ $(ECHO) "WARNING: This version of hotspot relies on __fabsf \n" \
+ " which is not always available on Solaris 8 and 9 machines \n" \
+ " unless they have the latest libm patch and the file \n" \
+ " /usr/include/iso/math_iso.h which can trigger this dependency.\n" \
+ " Hotspot should NOT be dependent on this extern, check the \n" \
+ " version of the hotspot library you are using. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi; \
+ fi
+endif
+
+######################################################
+# Check for possible patch problem regarding /usr/lib/libCrun.so
+######################################################
+sane-libCrun:
+ifeq ($(PLATFORM), solaris)
+ @if [ "`$(NM) /usr/lib/libCrun.so.1 | $(GREP) __1c2n6FIpv_0_`" = "" ]; then \
+ $(ECHO) "WARNING: The file /usr/lib/libCrun.so.1 is missing the extern \n" \
+ " __1c2n6FIpv_0_ which indicates that the system is missing \n" \
+ " a required Solaris patch, or you are using a pre-FCS release \n" \
+ " of Solaris 10. You need the latest /usr/lib/libCrun.so.1 \n" \
+ " which comes with the FCS release of Solaris 10 and available \n" \
+ " through the latest Solaris 8 or 9 C++ runtime patches. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+endif
+
+######################################################
+# Check for existence of MSDEVTOOLS_PATH on windows
+######################################################
+sane-msdevtools_path:
+ifeq ($(PLATFORM), windows)
+ @if [ "$(MSDEVTOOLS_PATH)" != "" -a ! -r "$(MSDEVTOOLS_PATH)" ]; then \
+ $(ECHO) "ERROR: You do not have a valid MSDEVTOOLS_PATH setting. \n" \
+ " Please check your access to \n" \
+ " $(MSDEVTOOLS_PATH) \n" \
+ " and/or check your value of ALT_MSDEVTOOLS_PATH. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+endif
+
+######################################################
+# Check for existence of Hotspot binaries
+######################################################
+sane-hotspot_binaries:
+ifeq ($(ARCH_DATA_MODEL), 32)
+ @if [ ! -r $(HOTSPOT_CLIENT_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) ]; then \
+ $(ECHO) "ERROR: HOTSPOT_CLIENT_PATH does not point to a valid HotSpot VM. \n" \
+ " Please check your access to \n" \
+ " $(HOTSPOT_CLIENT_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) \n" \
+ " and/or check your value of ALT_HOTSPOT_CLIENT_PATH. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+endif
+ @if [ ! -r $(HOTSPOT_SERVER_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) ]; then \
+ $(ECHO) "ERROR: HOTSPOT_SERVER_PATH does not point to a valid HotSpot VM. \n" \
+ " Please check your access to \n" \
+ " $(HOTSPOT_SERVER_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) \n" \
+ " and/or check your value of ALT_HOTSPOT_SERVER_PATH. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @#
+ @# Check value of HOTSPOT_LIB_PATH
+ @#
+ifeq ($(PLATFORM), windows)
+ @if [ ! -r $(HOTSPOT_LIB_PATH)/jvm.lib ]; then \
+ $(ECHO) "ERROR: HOTSPOT_LIB_PATH does not point to a valid HotSpot library. \n" \
+ " Please check your access to \n" \
+ " $(HOTSPOT_LIB_PATH)/jvm.lib \n" \
+ " and/or check your value of ALT_HOTSPOT_LIB_PATH. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @#
+ @# Check for the .map files - its OK if they are not there..
+ @#
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ @# There is no 64-bit HotSpot client VM
+ @if [ ! -r $(HOTSPOT_CLIENT_PATH)/jvm.map ]; then \
+ $(ECHO) "WARNING: HOTSPOT_CLIENT_PATH does not point to valid HotSpot .map files. \n" \
+ " These files are optional and aid in the debugging of the JVM. \n" \
+ " Please check your access to \n" \
+ " $(HOTSPOT_CLIENT_PATH)/jvm.map \n" \
+ " and/or check your value of ALT_HOTSPOT_CLIENT_PATH. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+ @if [ ! -r $(HOTSPOT_CLIENT_PATH)/jvm.pdb ]; then \
+ $(ECHO) "WARNING: HOTSPOT_CLIENT_PATH does not point to valid HotSpot .pdb files. \n" \
+ " These files are optional and aid in the debugging of the JVM. \n" \
+ " Please check your access to \n" \
+ " $(HOTSPOT_CLIENT_PATH)/jvm.pdb \n" \
+ " and/or check your value of ALT_HOTSPOT_CLIENT_PATH. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+ endif
+ @if [ ! -r $(HOTSPOT_SERVER_PATH)/jvm.map ]; then \
+ $(ECHO) "WARNING: HOTSPOT_SERVER_PATH does not point to valid HotSpot .map files. \n" \
+ " These files are optional and aid in the debugging of the JVM. \n" \
+ " Please check your access to \n" \
+ " $(HOTSPOT_SERVER_PATH)/jvm.map \n" \
+ " and/or check your value of ALT_HOTSPOT_SERVER_PATH. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+ @if [ ! -r $(HOTSPOT_SERVER_PATH)/jvm.pdb ]; then \
+ $(ECHO) "WARNING: HOTSPOT_SERVER_PATH does not point to valid HotSpot .pdb files. \n" \
+ " These files are optional and aid in the debugging of the JVM. \n" \
+ " Please check your access to \n" \
+ " $(HOTSPOT_SERVER_PATH)/jvm.pdb \n" \
+ " and/or check your value of ALT_HOTSPOT_SERVER_PATH. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+endif
+
+
+######################################################
+# Check for existence of misc Hotspot imported files
+######################################################
+HOTSPOT_INCLUDE_FILE_LIST = jvmti.h
+#HOTSPOT_INCLUDE_FILE_LIST += jni.h jni_md.h
+#HOTSPOT_INCLUDE_FILE_LIST += jvm.h jvm_md.h
+#HOTSPOT_INCLUDE_FILE_LIST += jmm.h
+TMP_SDK_INCLUDE_FILE_LIST=$(HOTSPOT_INCLUDE_FILE_LIST:%.h=$(TEMPDIR)/%.h)
+TMP_SDK_INCLUDE_FILE_DIFFS=$(HOTSPOT_INCLUDE_FILE_LIST:%.h=$(TEMPDIR)/%.hdiffs)
+
+# These include files must have a pattern: 'version: MAJOR.MINOR.MICRO'
+# where MACRO, MINOR, and MICRO are numbers, e.g. 1.0.1, 0.2.90, etc.
+# The critical version we are checking is MAJOR.MINOR, we print all three
+# when we detect an error.
+
+TMP_SDK_INCLUDE_FIND_VERSION= $(EGREP) 'version:'
+TMP_SDK_INCLUDE_GET_VERSION= $(TMP_SDK_INCLUDE_FIND_VERSION) | \
+ $(SED) -e 's@.*\([0-9][0-9]*\.[0-9][0-9]*\)\.[0-9].*@\1@'
+TMP_SDK_INCLUDE_GET_FULL_VERSION= $(TMP_SDK_INCLUDE_FIND_VERSION) | \
+ $(SED) -e 's@.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*@\1@'
+
+# Compare an interface file (Rule creates 2 temp files: %.h and %.h.IMPORT)
+# Files jvm.h, jvm_md.h and jmm.h are special in that they are not publicly
+# exported but do represent VM interfaces used by the rest of the jdk.
+# So these 3 will not be found in a promoted build and can only
+# be checked when this represents a full control build (i.e. the
+# HOTSPOT_IMPORT_PATH includes these files in it's 'include' directory).
+$(TEMPDIR)/%.h: $(SHARE_SRC)/javavm/export/%.h
+ @$(install-file)
+ @$(RM) $@.IMPORT
+ @if [ -r $(HOTSPOT_IMPORT_PATH)/include/$(@F) ]; then \
+ $(CP) $(HOTSPOT_IMPORT_PATH)/include/$(@F) $@.IMPORT ; \
+ elif [ "$(@F)" != "jvm.h" -a "$(@F)" != "jmm.h" ] ; then \
+ $(ECHO) "WARNING: HOTSPOT_IMPORT_PATH does not contain the interface file $(@F). \n" \
+ " Check your value of ALT_HOTSPOT_IMPORT_PATH. \n" \
+ "" >> $(WARNING_FILE) ; \
+ $(CP) $< $@.IMPORT; \
+ else \
+ $(CP) $< $@.IMPORT; \
+ fi
+
+$(TEMPDIR)/%.h: $(PLATFORM_SRC)/javavm/export/%.h
+ @$(install-file)
+ @$(RM) $@.IMPORT
+ @if [ -r $(HOTSPOT_IMPORT_PATH)/include/$(PLATFORM_INCLUDE_NAME)/$(@F) ]; then \
+ $(CP) $(HOTSPOT_IMPORT_PATH)/include/$(PLATFORM_INCLUDE_NAME)/$(@F) $@.IMPORT ; \
+ elif [ "$(@F)" != "jvm_md.h" ] ; then \
+ $(ECHO) "WARNING: HOTSPOT_IMPORT_PATH does not contain the interface file $(@F). \n" \
+ " Check your value of ALT_HOTSPOT_IMPORT_PATH. \n" \
+ "" >> $(WARNING_FILE) ; \
+ $(CP) $< $@.IMPORT; \
+ else \
+ $(CP) $< $@.IMPORT; \
+ fi
+
+# Compares the two tempfiles: %.h and %.h.IMPORT, answer in %.hdiffs
+# Note: Putting anything into the hdiffs file will trigger generic IMPORT
+# warning message in hotspot_import_include.
+# First checks the major.minor versions, the micro number can differ.
+# Second checks the full version.
+# Lastly does a full diff if the full version differs or it has no version
+$(TEMPDIR)/%.hdiffs: $(TEMPDIR)/%.h
+ @$(prep-target)
+ @$(TOUCH) $@
+ @if [ "`$(CAT) $< | $(TMP_SDK_INCLUDE_GET_VERSION)`" != \
+ "`$(CAT) $<.IMPORT | $(TMP_SDK_INCLUDE_GET_VERSION)`" ] ; then \
+ $(ECHO) "WARNING: The file $(<F) is not the same interface as the VM version.\n " \
+ " this workspace has $(<F) `$(CAT) $< | $(TMP_SDK_INCLUDE_GET_FULL_VERSION)` and \n " \
+ " HOTSPOT_IMPORT_PATH contains $(<F) `$(CAT) $<.IMPORT | $(TMP_SDK_INCLUDE_GET_FULL_VERSION)` \n" \
+ "" >> $(WARNING_FILE) ; \
+ $(ECHO) "Version mis-match" > $@ ; \
+ fi
+ @if [ "`$(CAT) $< | $(TMP_SDK_INCLUDE_GET_FULL_VERSION)`" != \
+ "`$(CAT) $<.IMPORT | $(TMP_SDK_INCLUDE_GET_FULL_VERSION)`" ] ; then \
+ $(RM) $<.filtered $<.IMPORT.filtered; \
+ $(EGREP) -v 'VERSION' $< > $<.filtered; \
+ $(EGREP) -v 'VERSION' $<.IMPORT > $<.IMPORT.filtered; \
+ ($(DIFF) -w $<.filtered $<.IMPORT.filtered || exit 0) >> $@ ; \
+ elif [ "`$(CAT) $< | $(TMP_SDK_INCLUDE_FIND_VERSION)`" = "" ] ; then \
+ $(RM) $<.filtered $<.IMPORT.filtered; \
+ $(EGREP) -v '@\(#\)' $< > $<.filtered; \
+ $(EGREP) -v '@\(#\)' $<.IMPORT > $<.IMPORT.filtered; \
+ ($(DIFF) -w $<.filtered $<.IMPORT.filtered || exit 0) >> $@ ; \
+ fi
+
+# Verify all imported hotspot files
+sane-hotspot_import:: sane-hotspot_import_dir sane-hotspot_import_include
+
+# Verify the base directory exists
+sane-hotspot_import_dir:
+ @$(RM) $(TMP_SDK_INCLUDE_FILE_DIFFS)
+ @$(RM) $(TMP_SDK_INCLUDE_FILE_LIST)
+ @if [ ! -d "$(HOTSPOT_IMPORT_PATH)" ]; then \
+ $(ECHO) "WARNING: The directory HOTSPOT_IMPORT_PATH=$(HOTSPOT_IMPORT_PATH) \n" \
+ " does not exist, check your value of ALT_HOTSPOT_IMPORT_PATH. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+
+# Verify hotspot include files
+sane-hotspot_import_include: $(TMP_SDK_INCLUDE_FILE_LIST) $(TMP_SDK_INCLUDE_FILE_DIFFS)
+ @if [ "`$(CAT) $(TMP_SDK_INCLUDE_FILE_DIFFS)`" != "" ] ; then \
+ $(ECHO) "WARNING: Possible HotSpot VM interface conflict. \n" \
+ " HOTSPOT_IMPORT_PATH is used to import files from the VM build. \n" \
+ " It is also used to verify that any copied files are consistent between \n" \
+ " these two components. It has been detected that one or more of the \n" \
+ " VM interface files inside this workspace may not match the interfaces \n" \
+ " exported by the VM, or the VM versions could not be found. \n" \
+ " The list of VM interface files is: \n" \
+ " $(HOTSPOT_INCLUDE_FILE_LIST). \n" \
+ " This workspace has copies of these files at: \n" \
+ " $(SHARE_SRC)/javavm/export and $(PLATFORM_SRC)/javavm/export \n" \
+ " for build purposes, and they should contain the same interfaces \n" \
+ " as the VM versions imported from: \n" \
+ " \$$(HOTSPOT_IMPORT_PATH)/include \n" \
+ " (i.e. $(HOTSPOT_IMPORT_PATH)/include) \n" \
+ " If an interface indeed doesn't match, then the use of this interface \n" \
+ " at JDK runtime could cause serious errors. \n" \
+ "" >> $(WARNING_FILE) ; \
+ for i in $(TMP_SDK_INCLUDE_FILE_DIFFS); do \
+ if [ -s $$i ] ; then \
+ $(ECHO) " " >> $(WARNING_FILE); \
+ $(ECHO) "VM Interface Differences: $$i" >> $(WARNING_FILE); \
+ $(CAT) $$i >> $(WARNING_FILE); \
+ $(ECHO) " " >> $(WARNING_FILE); \
+ fi; \
+ done; \
+ fi
+ @$(RM) $(TMP_SDK_INCLUDE_FILE_DIFFS)
+ @$(RM) $(TMP_SDK_INCLUDE_FILE_LIST)
+
+# The JDI-SA feature is not currently released on some platforms.
+# See the Defs-<arch>.gmk files.
+
+ifeq ($(INCLUDE_SA), true)
+# Verify that hotspot Serviceability Agent files are present. To keep
+# it simple, we will just check for one of them. The others have arch
+# dependent paths.
+
+sane-hotspot_import::
+ @if [ ! -r $(HOTSPOT_IMPORT_PATH)/lib/sa-jdi.jar ] ; then \
+ $(ECHO) "WARNING: File $(HOTSPOT_IMPORT_PATH)/lib/sa-jdi.jar does not exist.\n" \
+ " The JDI binding for the Serviceability Agent will not be included in the build.\n" \
+ " Please check your access to\n" \
+ " $(HOTSPOT_IMPORT_PATH)/lib/sa-jdi.jar\n" \
+ " and/or check your value of ALT_HOTSPOT_IMPORT_PATH.\n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+endif
+
+######################################################
+# Check the ant version
+######################################################
+ANT_CHECK :=$(call CheckVersions,$(ANT_VER),$(REQUIRED_ANT_VER))
+sane-ant_version:
+ @if [ "$(ANT_CHECK)" != "same" \
+ -a "$(ANT_CHECK)" != "newer" ]; then \
+ $(ECHO) "WARNING: The version of ant being used is older than \n" \
+ " the required version of '$(REQUIRED_ANT_VER)'. \n" \
+ " The version of ant found was '$(ANT_VER)'. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+
+######################################################
+# Check the findbugs version
+######################################################
+FINDBUGS_CHECK :=$(call CheckVersions,$(FINDBUGS_VER),$(REQUIRED_FINDBUGS_VER))
+sane-findbugs_version:
+ @if [ "$(FINDBUGS_CHECK)" != "same" \
+ -a "$(FINDBUGS_CHECK)" != "newer" ]; then \
+ $(ECHO) "WARNING: The version of findbugs being used is older than \n" \
+ " the required version of '$(REQUIRED_FINDBUGS_VER)'. \n" \
+ " The version of findbugs found was '$(FINDBUGS_VER)'. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+
+######################################################
+# Check the zip file version
+######################################################
+ZIP_CHECK :=$(call CheckVersions,$(ZIP_VER),$(REQUIRED_ZIP_VER))
+sane-zip_version: sane-unzip_version
+ @if [ "$(ZIP_CHECK)" != "same" -a "$(ZIP_CHECK)" != "newer" ]; then \
+ $(ECHO) "WARNING: The version of zip being used is older than \n" \
+ " the required version of '$(REQUIRED_ZIP_VER)'. \n" \
+ " The version of zip found was '$(ZIP_VER)'. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+
+######################################################
+# Check the unzip file version
+######################################################
+UNZIP_CHECK :=$(call CheckVersions,$(UNZIP_VER),$(REQUIRED_UNZIP_VER))
+sane-unzip_version:
+ @if [ "$(UNZIP_CHECK)" != "same" -a "$(UNZIP_CHECK)" != "newer" ]; then \
+ $(ECHO) "WARNING: The version of unzip being used is older than \n" \
+ " the required version of '$(REQUIRED_UNZIP_VER)'. \n" \
+ " The version of unzip found was '$(UNZIP_VER)'. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+
+######################################################
+# Check for windows DirectX sdk directory
+######################################################
+sane-dxsdk:
+ifeq ($(PLATFORM), windows)
+ @if [ ! -r $(DXSDK_INCLUDE_PATH)/ddraw.h ]; then \
+ $(ECHO) "ERROR: You do not have access to a valid DirectX SDK Include dir.\n" \
+ " The value of DXSDK_INCLUDE_PATH must point a valid DX SDK dir.\n" \
+ " Please check your access to \n" \
+ " $(DXSDK_INCLUDE_PATH) \n" \
+ " and/or check your value of ALT_DXSDK_PATH or ALT_DXSDK_INCLUDE_PATH.\n" \
+ " Microsoft DirectX 9 SDK (Summer 2004 Update or newer) can be downloaded from the following location:\n" \
+ " http://msdn.microsoft.com/library/default.asp?url=/downloads/list/directx.asp\n" \
+ " Or http://www.microsoft.com/directx\n" \
+ "" >> $(ERROR_FILE) ; \
+ else \
+ if [ ! "$(DXSDK_VER)" = "$(REQUIRED_DXSDK_VER)" ]; then \
+ $(ECHO) "ERROR: The DirectX SDK must be version $(REQUIRED_DXSDK_VER).\n" \
+ " $(YOU_ARE_USING) DirectX SDK version: $(DXSDK_VER)\n" \
+ " The DirectX SDK was obtained from the following location: \n" \
+ " $(DXSDK_PATH) \n" \
+ " Please change your DirectX SDK. \n" \
+ " Microsoft DirectX 9 SDK (Summer 2004 Update or newer) can be downloaded from the following location:\n" \
+ " http://msdn.microsoft.com/library/default.asp?url=/downloads/list/directx.asp\n" \
+ " Or http://www.microsoft.com/directx\n" \
+ "" >> $(ERROR_FILE) ; \
+ else \
+ if [ -r $(DXSDK_INCLUDE_PATH)/basetsd.h ]; then \
+ if [ `$(EGREP) -c __int3264 $(DXSDK_INCLUDE_PATH)/basetsd.h` -ne 0 ]; then \
+ $(ECHO) "WARNING: The DirectX SDK Include directory contains a newer basetsd.h,\n" \
+ " which may indicate that you're using an incorrect version of DirectX SDK.\n" \
+ " This may result in a build failure.\n" \
+ " The DirectX SDK Include dir was obtained from the following location:\n" \
+ " $(DXSDK_INCLUDE_PATH) \n" \
+ " Please change your DirectX SDK to version 7 or 9 (Summer 2004 Update or newer).\n" \
+ " Microsoft DirectX 9 SDK can be downloaded from the following location:\n" \
+ " http://msdn.microsoft.com/library/default.asp?url=/downloads/list/directx.asp\n" \
+ " Or http://www.microsoft.com/directx\n" \
+ "" >> $(WARNING_FILE) ; \
+ fi \
+ fi \
+ fi \
+ fi
+endif
+
+######################################################
+# Check the linker version(s)
+######################################################
+ifeq ($(PLATFORM), windows)
+ LINK_CHECK :=$(call CheckVersions,$(LINK_VER),$(REQUIRED_LINK_VER))
+endif
+sane-link:
+ifdef LINK_VER
+ @if [ "$(LINK_CHECK)" = "missing" ]; then \
+ $(ECHO) "ERROR: The Linker version is undefined. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ @if [ "$(LINK_CHECK)" != "same" ]; then \
+ $(ECHO) "WARNING: To build Java 2 SDK $(JDK_VERSION) you need : \n" \
+ " $(COMPILER_VERSION) - link.exe version \"$(REQUIRED_LINK_VER)\" \n" \
+ " Specifically the $(COMPILER_NAME) link.exe. \n " \
+ " $(YOU_ARE_USING) Linker version \"$(LINK_VER)\" \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+endif
+
+######################################################
+# Check the compiler version(s)
+######################################################
+CC_CHECK :=$(call CheckVersions,$(CC_VER),$(REQUIRED_CC_VER))
+ifeq ($(PLATFORM), solaris)
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ GCC_CHECK :=$(call CheckVersions,$(GCC_VER),$(REQUIRED_GCC_VER))
+ endif
+endif
+sane-compiler: sane-link
+ @if [ "$(CC_CHECK)" = "missing" ]; then \
+ $(ECHO) "ERROR: The Compiler version is undefined. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ifndef OPENJDK
+ @if [ "$(CC_CHECK)" != "same" ]; then \
+ $(ECHO) "WARNING: The $(PLATFORM) compiler is not version $(COMPILER_VERSION) $(REQUIRED_CC_VER) \n" \
+ " Specifically the $(COMPILER_NAME) $(CC_TYPE) compiler. \n " \
+ " $(YOU_ARE_USING) compiler version: $(CC_VER) \n" \
+ " The compiler was obtained from the following location: \n" \
+ " $(COMPILER_PATH) \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+ ifdef GCC_CHECK
+ @if [ "$(GCC_CHECK)" != "same" ]; then \
+ $(ECHO) "WARNING: The $(PLATFORM) GCC compiler must be version $(REQUIRED_GCC_VER) \n" \
+ " $(YOU_ARE_USING) compiler version: $(GCC_VER) \n" \
+ " The compiler was obtained from the following location: \n" \
+ " $(GCC_COMPILER_PATH) \n" \
+ " Please change your compiler. \n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+ endif
+ ifeq ($(PLATFORM), windows)
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ ifneq ($(COMPILER_VERSION), VS2005)
+ @$(ECHO) "WARNING: Should be using VS2005 compiler on 64bit platform. \n" \
+ "" >> $(WARNING_FILE)
+ endif
+ endif
+ endif
+endif
+
+######################################################
+# Check that ALSA headers and libs are installed and
+# that the header has the right version. We only
+# need /usr/include/alsa/*.h and /usr/lib/libasound.so
+######################################################
+
+ifdef ALSA_VERSION_CHECK
+$(ALSA_VERSION_CHECK): $(ALSA_VERSION_CHECK).c
+ @$(prep-target)
+ @$(CC) -lasound -o $@ $<
+
+$(ALSA_VERSION_CHECK).c:
+ @$(prep-target)
+ @$(ECHO) "#include <alsa/asoundlib.h>\n" \
+ "int main(char** argv, int argc) {\n" \
+ " printf(\"%s\", SND_LIB_VERSION_STR);\n" \
+ " return 0;\n" \
+ "}\n" \
+ > $@
+endif
+
+sane-alsa-versioncheck: $(ALSA_VERSION_CHECK)
+sane-alsa-headers: sane-alsa-versioncheck
+ifdef ALSA_VERSION_CHECK
+ @if [ -f "$(ALSA_VERSION_CHECK)" ]; then \
+ if [ `$(ALSA_VERSION_CHECK) | $(EGREP) -c '$(REQUIRED_ALSA_VERSION)'` -ne 1 ] ; then \
+ $(ECHO) "ERROR: The ALSA version must be 0.9.1 or higher. \n" \
+ " You have the following ALSA version installed: $(ALSA_VERSION) \n" \
+ " Please reinstall ALSA (drivers and lib). You can download \n" \
+ " the source distribution from http://www.alsa-project.org \n" \
+ " or go to http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi \
+ else \
+ $(ECHO) "ERROR: You seem to not have installed ALSA 0.9.1 or higher. \n" \
+ " Please install ALSA (drivers and lib). You can download the \n" \
+ " source distribution from http://www.alsa-project.org or go to \n" \
+ " http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+endif
+
+# If a sanity file doesn't exist, just make sure it's dir exists
+$(SANITY_FILES):
+ -@$(prep-target)
+
+######################################################
+# dump out the variable settings...
+######################################################
+sane-settings:: sane-alsa-versioncheck
+ @$(ECHO) >> $(MESSAGE_FILE)
+ @$(ECHO) $(ALL_SETTINGS) >> $(MESSAGE_FILE)
+ @$(ECHO) >> $(MESSAGE_FILE)
+
+######################################################
+# Check for existence of DEPLOY_MSSDK on windows
+######################################################
+sane-mssdk_path:
+ifeq ($(PLATFORM), windows)
+ @if [ -z "$(DEPLOY_MSSDK)" ]; then \
+ $(ECHO) "WARNING: Your DEPLOY_MSSDK setting is empty.\n" \
+ " It is recommended to set ALT_DEPLOY_MSSDK.\n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+ @if [ ! -r "$(DEPLOY_MSSDK)" ]; then \
+ $(ECHO) "ERROR: You do not have a valid DEPLOY_MSSDK setting. \n" \
+ " Please check your access to \n" \
+ " $(DEPLOY_MSSDK) \n" \
+ " and/or check your value of ALT_DEPLOY_MSSDK. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+endif
+
+######################################################
+# Check for existence of INSTALL_MSSDK on windows
+######################################################
+sane-install-mssdk_path:
+ifeq ($(PLATFORM), windows)
+ @if [ -z "$(INSTALL_MSSDK)" ]; then \
+ $(ECHO) "WARNING: Your INSTALL_MSSDK setting is empty.\n" \
+ " It is recommended to set ALT_INSTALL_MSSDK.\n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+ @if [ ! -r "$(INSTALL_MSSDK)" ]; then \
+ $(ECHO) "ERROR: You do not have a valid INSTALL_MSSDK setting. \n" \
+ " Please check your access to \n" \
+ " $(INSTALL_MSSDK) \n" \
+ " and/or check your value of ALT_INSTALL_MSSDK. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+endif
+
+######################################################
+# Check for existence of INSTALL_MSIVAL2 on windows
+######################################################
+sane-install-msival2_path:
+ifeq ($(PLATFORM), windows)
+ @if [ -z "$(INSTALL_MSIVAL2)" ]; then \
+ $(ECHO) "WARNING: Your INSTALL_MSIVAL2 setting is empty.\n" \
+ " It is recommended to set ALT_INSTALL_MSIVAL2.\n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+ @if [ ! -r "$(INSTALL_MSIVAL2)" ]; then \
+ $(ECHO) "ERROR: You do not have a valid INSTALL_MSIVAL2 setting. \n" \
+ " Please check your access to \n" \
+ " $(INSTALL_MSIVAL2) \n" \
+ " and/or check your value of ALT_INSTALL_MSIVAL2. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+endif
+
+######################################################
+# Check the Solaris GNU c++ compiler for solaris plugin
+######################################################
+sane-gcc-compiler:
+ifeq ($(PLATFORM), solaris)
+ ifndef OPENJDK
+ @if [ -r $(GCC_COMPILER_PATH) ]; then \
+ if [ ! "$(GCC_VER)" = 2.95.2 ]; then \
+ $(ECHO) "ERROR: The Solaris GCC compiler version must be 2.95.2. \n" \
+ " You are using the following compiler version: $(GCC_VER) \n" \
+ " The compiler was obtained from the following location: \n" \
+ " $(GCC_COMPILER_PATH) \n" \
+ " Please change your compiler. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi \
+ else \
+ $(ECHO) "ERROR: You do not have a valid GCC_COMPILER_PATH setting. \n" \
+ " Please check your access to \n" \
+ " $(GCC_COMPILER_PATH) \n" \
+ " and/or check your value of ALT_GCC_COMPILER_PATH. \n" \
+ " This will affect you if you build the plugin target. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ endif
+
+ ifeq ($(PLATFORM), linux)
+ ifdef ALT_GCC29_COMPILER_PATH
+ @if [ ! -x $(ALT_GCC29_COMPILER_PATH)/bin/gcc ]; then \
+ $(ECHO) "ERROR: You do not have a valid ALT_GCC29_COMPILER_PATH setting. \n" \
+ " Please check your access to \n" \
+ " $(ALT_GCC29_COMPILER_PATH)/bin/gcc \n" \
+ " This will affect you if you build the plugin target. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ endif
+ ifdef ALT_GCC29_PLUGIN_LIB_PATH
+ @if [ ! -r $(ALT_GCC29_PLUGIN_LIB_PATH)/libjavaplugin_oji.so ]; then \
+ $(ECHO) "Error: You do not have a valid ALT_GCC29_PLUGIN_LIB_PATH setting. \n" \
+ " Please check your access to \n" \
+ " $(ALT_GCC29_PLUGIN_LIB_PATH)/libjavaplugin_oji.so \n" \
+ " This will affect you if you build the plugin target, specifically for gcc 2.9 version of OJI plugin library. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ else
+ @if [ ! -r $(GCC29_COMPILER_PATH) ]; then \
+ $(ECHO) "ERROR: You do not have a valid GCC29_COMPILER_PATH setting. \n" \
+ " Please check your access to \n" \
+ " $(GCC29_COMPILER_PATH) \n" \
+ " and/or check your value of ALT_GCC29_COMPILER_PATH. \n" \
+ " This will affect you if you build the plugin target. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ endif
+ endif
+endif
+
+
+######################################################
+# MOZILLA_HEADERS_PATH must be valid
+######################################################
+sane-mozilla:
+ifeq ($(ARCH_DATA_MODEL), 32)
+ ifdef ALT_MOZILLA_HEADERS_PATH
+ @if [ `$(ECHO) $(subst \,/,$(ALT_MOZILLA_HEADERS_PATH)) | $(EGREP) -ci '^([a-z]:)?/'` -ne 1 ]; then \
+ $(ECHO) "ERROR: ALT_MOZILLA_HEADERS_PATH must be an Absolute Path Name, \n" \
+ " not a Relative Path Name. \n" \
+ " The current value of ALT_MOZILLA_HEADERS_PATH is \n" \
+ " $(ALT_MOZILLA_HEADERS_PATH) \n" \
+ " Please fix this and continue your build. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ endif
+ @#
+ @# MOZILLA_HEADERS_PATH must be valid....
+ @#
+ ifeq ($(PLATFORM), windows)
+ @if [ ! -r $(subst \,/,$(MOZILLA_HEADERS_PATH))/mozilla_headers_18.win32/java/bool.h ]; then \
+ $(ECHO) "ERROR: You do not have access to valid Mozilla header files. \n" \
+ " Please check your access to \n" \
+ " $(subst \,/,$(MOZILLA_HEADERS_PATH))/mozilla_headers_18.win32/java/bool.h \n" \
+ " and/or check your value of ALT_JDK_DEVTOOLS_DIR, ALT_MOZILLA_HEADERS_PATH, \n" \
+ " and on Windows, ALT_JDK_JAVA_DRIVE. \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ else
+ @if [ ! -r $(subst \,/,$(MOZILLA_HEADERS_PATH))/mozilla_headers_18/java/bool.h ]; then \
+ $(ECHO) "ERROR: You do not have access to valid Mozilla header files. \n" \
+ " Please check your access to \n" \
+ " $(subst \,/,$(MOZILLA_HEADERS_PATH))/mozilla_headers_18/java/bool.h \n" \
+ " and/or check your value of ALT_JDK_DEVTOOLS_DIR, ALT_MOZILLA_HEADERS_PATH, \n" \
+ "" >> $(ERROR_FILE) ; \
+ fi
+ endif
+endif
+
+
+######################################################
+# SECURITY_BASELINE_142 test
+######################################################
+security_baseline_142:
+ifeq ($(PLATFORM), windows)
+ @if [ -z "$(SECURITY_BASELINE_142)" ]; then \
+ $(ECHO) "WARNING: Your SECURITY_BASELINE_142 setting is empty.\n" \
+ " Setting it to the default value of 1.4.2_10.\n" \
+ " It is recommended to set SECURITY_BASELINE_142.\n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+endif
+
+######################################################
+# SECURITY_BASELINE_150 test
+######################################################
+security_baseline_150:
+ifeq ($(PLATFORM), windows)
+ @if [ -z "$(SECURITY_BASELINE_150)" ]; then \
+ $(ECHO) "WARNING: Your SECURITY_BASELINE_150 setting is empty.\n" \
+ " Setting it to the default value of 1.5.0_07.\n" \
+ " It is recommended to set SECURITY_BASELINE_150.\n" \
+ "" >> $(WARNING_FILE) ; \
+ fi
+endif
+
+
+######################################################
+# this should be the last rule in any target's sanity rule.
+######################################################
+sane-lastrule:
+ifndef EXTERNALSANITYCONTROL
+ @if [ -r $(MESSAGE_FILE) ]; then \
+ $(CAT) $(MESSAGE_FILE) ; \
+ fi
+ @if [ -r $(WARNING_FILE) ]; then \
+ $(CAT) $(WARNING_FILE) ; \
+ fi
+ @if [ "x$(INSANE)" != x ]; then \
+ $(ECHO) "INSANE mode requested. \n" \
+ "Sanity will not force a build termination, even with errors.\n" \
+ "" >> $(ERROR_FILE); \
+ fi
+ @if [ -r $(ERROR_FILE) ]; then \
+ if [ "x$(INSANE)" = x ]; then \
+ $(ECHO) "Exiting because of the above error(s). \n" \
+ "">> $(ERROR_FILE); \
+ fi ; \
+ $(CAT) $(ERROR_FILE) ; \
+ if [ "x$(INSANE)" = x ]; then \
+ exit 1 ; \
+ fi ; \
+ fi
+ifdef PEDANTIC
+ @if [ -r $(WARNING_FILE) ]; then \
+ $(ECHO) "PEDANTIC mode requested. \n" \
+ "Exiting because of the above warning(s). \n" \
+ "" >> $(ERROR_FILE); \
+ $(CAT) $(ERROR_FILE) ; \
+ exit 1 ; \
+ fi
+endif # PEDANTIC
+ @if [ ! -r $(ERROR_FILE) ]; then \
+ $(ECHO) "Sanity check passed." ; \
+ fi
+endif # EXTERNALSANITYCONTROL
+
diff --git a/jdk/make/docs/CORE_PKGS.gmk b/jdk/make/docs/CORE_PKGS.gmk
new file mode 100644
index 0000000..dce55ee
--- /dev/null
+++ b/jdk/make/docs/CORE_PKGS.gmk
@@ -0,0 +1,285 @@
+#
+# Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# EXCLUDE_PKGS is the list of packages to exclude from the
+# Java API Specification. Do not add these to CORE_PKGS.
+# The concatenation of EXCLUDE_PKGS and CORE_PKGS
+# should make up the list of all packages under the
+# src/shared/classes directory of the JDK source tree.
+#
+EXCLUDE_PKGS = \
+ java.awt.peer \
+ java.awt.dnd.peer \
+ sun.* \
+ sunw.* \
+ com.sun.* \
+ org.apache.* \
+ org.jcp.* \
+ org.w3c.dom.css \
+ org.w3c.dom.html \
+ org.w3c.dom.stylesheets \
+ org.w3c.dom.traversal \
+ org.w3c.dom.ranges \
+ org.w3c.dom.views \
+ org.omg.stub.javax.management.remote.rmi
+
+#
+# ACTIVE_JSR_PKGS are packages that are part of an active JSR process--
+# one that is doing its own review. These packages are not included when
+# creating diff pages for the platform's JCP process.
+#
+# (see /java/pubs/apisrc/jdk/6.0/beta/make/docs/active_jsr_pkgs)
+# Note:
+# This is a list of regular expressions. So foo.* matches "foo" and "foo.bar".
+#
+ACTIVE_JSR_PKGS= \
+ java.sql \
+ javax.activation \
+ javax.annotation.* \
+ javax.jws.* \
+ javax.lang.* \
+ javax.management.* \
+ javax.script \
+ javax.sql.* \
+ javax.tools \
+ javax.xml.* \
+ org.w3c.* \
+ org.xml.sax
+
+#
+# CORE_PKGS is the list of packages that form the
+# Java API Specification.
+#
+### ***IMPORTANT NOTE***
+### There is also a "REGEXP" variable in the docs/makefile that
+### determines which table the packages go in on the main page.
+### Currently, there is only table ("Platform Packages") and
+### everything goes in it, so REGEXP is "*". But if that policy
+### changes, packages added will need to be reflected in that
+### list of wildcard expressions, as well.
+###
+CORE_PKGS = \
+ java.applet \
+ java.awt \
+ java.awt.color \
+ java.awt.datatransfer \
+ java.awt.dnd \
+ java.awt.event \
+ java.awt.font \
+ java.awt.geom \
+ java.awt.im \
+ java.awt.im.spi \
+ java.awt.image \
+ java.awt.image.renderable \
+ java.awt.print \
+ java.beans \
+ java.beans.beancontext \
+ java.io \
+ java.lang \
+ java.lang.annotation \
+ java.lang.instrument \
+ java.lang.management \
+ java.lang.ref \
+ java.lang.reflect \
+ java.math \
+ java.net \
+ java.nio \
+ java.nio.channels \
+ java.nio.channels.spi \
+ java.nio.charset \
+ java.nio.charset.spi \
+ java.rmi \
+ java.rmi.activation \
+ java.rmi.dgc \
+ java.rmi.registry \
+ java.rmi.server \
+ java.security \
+ java.security.acl \
+ java.security.cert \
+ java.security.interfaces \
+ java.security.spec \
+ java.sql \
+ java.text \
+ java.text.spi \
+ java.util \
+ java.util.concurrent \
+ java.util.concurrent.atomic \
+ java.util.concurrent.locks \
+ java.util.jar \
+ java.util.logging \
+ java.util.prefs \
+ java.util.regex \
+ java.util.spi \
+ java.util.zip \
+ javax.accessibility \
+ javax.activation \
+ javax.activity \
+ javax.annotation \
+ javax.annotation.processing \
+ javax.crypto \
+ javax.crypto.interfaces \
+ javax.crypto.spec \
+ javax.imageio \
+ javax.imageio.event \
+ javax.imageio.metadata \
+ javax.imageio.plugins.jpeg \
+ javax.imageio.plugins.bmp \
+ javax.imageio.spi \
+ javax.imageio.stream \
+ javax.jws \
+ javax.jws.soap \
+ javax.lang.model \
+ javax.lang.model.element \
+ javax.lang.model.type \
+ javax.lang.model.util \
+ javax.management \
+ javax.management.loading \
+ javax.management.monitor \
+ javax.management.relation \
+ javax.management.openmbean \
+ javax.management.timer \
+ javax.management.modelmbean \
+ javax.management.remote \
+ javax.management.remote.rmi \
+ javax.naming \
+ javax.naming.directory \
+ javax.naming.event \
+ javax.naming.ldap \
+ javax.naming.spi \
+ javax.net \
+ javax.net.ssl \
+ javax.print \
+ javax.print.attribute \
+ javax.print.attribute.standard \
+ javax.print.event \
+ javax.rmi \
+ javax.rmi.CORBA \
+ javax.rmi.ssl \
+ javax.script \
+ javax.security.auth \
+ javax.security.auth.callback \
+ javax.security.auth.kerberos \
+ javax.security.auth.login \
+ javax.security.auth.spi \
+ javax.security.auth.x500 \
+ javax.security.cert \
+ javax.security.sasl \
+ javax.sound.sampled \
+ javax.sound.sampled.spi \
+ javax.sound.midi \
+ javax.sound.midi.spi \
+ javax.sql \
+ javax.sql.rowset \
+ javax.sql.rowset.serial \
+ javax.sql.rowset.spi \
+ javax.swing \
+ javax.swing.border \
+ javax.swing.colorchooser \
+ javax.swing.filechooser \
+ javax.swing.event \
+ javax.swing.table \
+ javax.swing.text \
+ javax.swing.text.html \
+ javax.swing.text.html.parser \
+ javax.swing.text.rtf \
+ javax.swing.tree \
+ javax.swing.undo \
+ javax.swing.plaf \
+ javax.swing.plaf.basic \
+ javax.swing.plaf.metal \
+ javax.swing.plaf.multi \
+ javax.swing.plaf.synth \
+ javax.tools \
+ javax.transaction \
+ javax.transaction.xa \
+ javax.xml.parsers \
+ javax.xml.bind \
+ javax.xml.bind.annotation \
+ javax.xml.bind.annotation.adapters \
+ javax.xml.bind.attachment \
+ javax.xml.bind.helpers \
+ javax.xml.bind.util \
+ javax.xml.soap \
+ javax.xml.ws \
+ javax.xml.ws.handler \
+ javax.xml.ws.handler.soap \
+ javax.xml.ws.http \
+ javax.xml.ws.soap \
+ javax.xml.ws.spi \
+ javax.xml.transform \
+ javax.xml.transform.sax \
+ javax.xml.transform.dom \
+ javax.xml.transform.stax \
+ javax.xml.transform.stream \
+ javax.xml \
+ javax.xml.crypto \
+ javax.xml.crypto.dom \
+ javax.xml.crypto.dsig \
+ javax.xml.crypto.dsig.dom \
+ javax.xml.crypto.dsig.keyinfo \
+ javax.xml.crypto.dsig.spec \
+ javax.xml.datatype \
+ javax.xml.validation \
+ javax.xml.namespace \
+ javax.xml.xpath \
+ javax.xml.stream \
+ javax.xml.stream.events \
+ javax.xml.stream.util \
+ org.ietf.jgss \
+ org.omg.CORBA \
+ org.omg.CORBA.DynAnyPackage \
+ org.omg.CORBA.ORBPackage \
+ org.omg.CORBA.TypeCodePackage \
+ org.omg.stub.java.rmi \
+ org.omg.CORBA.portable \
+ org.omg.CORBA_2_3 \
+ org.omg.CORBA_2_3.portable \
+ org.omg.CosNaming \
+ org.omg.CosNaming.NamingContextExtPackage \
+ org.omg.CosNaming.NamingContextPackage \
+ org.omg.SendingContext \
+ org.omg.PortableServer \
+ org.omg.PortableServer.CurrentPackage \
+ org.omg.PortableServer.POAPackage \
+ org.omg.PortableServer.POAManagerPackage \
+ org.omg.PortableServer.ServantLocatorPackage \
+ org.omg.PortableServer.portable \
+ org.omg.PortableInterceptor \
+ org.omg.PortableInterceptor.ORBInitInfoPackage \
+ org.omg.Messaging \
+ org.omg.IOP \
+ org.omg.IOP.CodecFactoryPackage \
+ org.omg.IOP.CodecPackage \
+ org.omg.Dynamic \
+ org.omg.DynamicAny \
+ org.omg.DynamicAny.DynAnyPackage \
+ org.omg.DynamicAny.DynAnyFactoryPackage \
+ org.w3c.dom \
+ org.w3c.dom.events \
+ org.w3c.dom.bootstrap \
+ org.w3c.dom.ls \
+ org.xml.sax \
+ org.xml.sax.ext \
+ org.xml.sax.helpers
diff --git a/jdk/make/docs/Makefile b/jdk/make/docs/Makefile
new file mode 100644
index 0000000..328244b
--- /dev/null
+++ b/jdk/make/docs/Makefile
@@ -0,0 +1,675 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Definitions for $(DOCSDIR), $(MKDIR), $(BINDIR), etc.
+#
+BUILDDIR=..
+PRODUCT=docs
+include $(BUILDDIR)/common/Defs.gmk
+
+# We override whatever the max VM memory setting is here.
+# NOTE: javadoc will not complete without these larger settings.
+# WARNING: This could cause thrashing on low memory machines.
+ifeq ($(ARCH_DATA_MODEL),64)
+ MAX_VM_MEMORY = 1024
+else
+ MAX_VM_MEMORY = 512
+endif
+
+#
+# Variables used by docs target
+#
+DOCSTMPDIR = $(TEMPDIR)/doctmp
+
+COMMON_JAVADOCFLAGS = \
+ -source 1.5 \
+ -quiet \
+ -use \
+ -keywords \
+ $(JAVADOC_VM_MEMORY_FLAGS) \
+ $(ADDITIONAL_JAVADOCFLAGS)
+ADDITIONAL_JAVADOCFLAGS =
+
+CORE_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
+ $(TAGS) \
+ -encoding ISO-8859-1 \
+ -splitIndex \
+ -doctitle $(DOCTITLE_SWITCH) \
+ -windowtitle $(WINDOWTITLE_SWITCH) \
+ -header $(HEADER_SWITCH) \
+ $(TOPOPTION) \
+ -bottom $(JAVADOCBOTTOM_SWITCH) \
+ $(OVERVIEW_OPTION)
+
+DRAFT = '<br><b>DRAFT '$(MILESTONE)-$(BUILD_NUMBER)'</b>'
+THIS_YEAR := $(shell $(DATE) | $(SED) -e 's/ / /g' | $(CUT) -d' ' -f6)
+TRADEMARK = &\#x2122;
+
+IGNORED_TAGS = beaninfo revised since.unbundled spec Note ToDo
+
+JLS3_URL = http://java.sun.com/docs/books/jls/
+JLS3_CITE = <a href="$(JLS3_URL)"> \
+ The Java Language Specification, Third Edition</a>
+TAG_JLS3 = -tag 'jls3:a:See <cite>$(JLS3_CITE)</cite>:'
+
+TAGS = $(IGNORED_TAGS:%=-tag %:X) $(TAG_JLS3)
+
+ifeq ($(MILESTONE), fcs)
+ DOCTITLE_SWITCH = $(JAVADOCTITLE)
+ WINDOWTITLE_SWITCH = $(JAVADOCWINDOWTITLE)
+ HEADER_SWITCH = $(JAVADOCHEADER)
+ TOPOPTION=
+ JAVADOCBOTTOM_SWITCH= $(JAVADOCBOTTOM)
+ OVERVIEW_OPTION = -overview $(JAVADOCOVERVIEW)
+else
+ DOCTITLE_SWITCH = $(JAVADOCTITLE_EARLYACCESS)$(DRAFT)
+ WINDOWTITLE_SWITCH = $(JAVADOCWINDOWTITLE)" $(BUILD_NUMBER)"
+ HEADER_SWITCH = $(JAVADOCHEADER)$(DRAFT)
+ JAVADOCBOTTOM_SWITCH= $(JAVADOCBOTTOM_EARLYACCESS)
+ TOPOPTION= -top $(JAVADOCTOP_EARLYACCESS)
+ OVERVIEW_OPTION =
+endif
+
+JAVADOCTITLE = 'Java$(TRADEMARK) Platform, Standard Edition $(JDK_MINOR_VERSION)<br>API Specification'
+JAVADOCWINDOWTITLE = 'Java Platform SE $(JDK_MINOR_VERSION)'
+JAVADOCHEADER = '<b>Java$(TRADEMARK) Platform<br>Standard Ed. $(JDK_MINOR_VERSION)</b>'
+JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Submit a bug or feature</a><br>For further API reference and developer documentation, see <a href="{@docroot}/../../webnotes/devdocs-vs-specs.html">Java SE Developer Documentation</a>. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples. <p>Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to <a href="{@docroot}/../legal/license.html">license terms</a>. Also see the <a href="http://java.sun.com/docs/redist.html">documentation redistribution policy</a>.</font>'
+JAVADOCOVERVIEW = $(SHARE_SRC)/classes/overview-core.html
+
+#
+# Early access top and bottom text (for snapshots, beta and rc)
+#
+JAVADOCTOP_EARLYACCESS = '<div style="background-color: \#EEEEEE"> <div style="padding: 6px; margin-top: 2px; margin-bottom: 6px; margin-left: 6px; margin-right: 6px; text-align: justify; font-size: 80%; font-family: Helvetica, Arial, sans-serif; font-weight: normal;"> Please note that this documentation is not final and is subject to change. </div> </div>'
+JAVADOCBOTTOM_EARLYACCESS = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Submit a bug or feature</a> <p>Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to <a href="{@docroot}/../legal/license.html">license terms</a>.</font>'
+JAVADOCTITLE_EARLYACCESS = $(subst Specification,Documentation,$(JAVADOCTITLE))
+
+#
+# Variables used by domapidocs target
+#
+
+DOMAPI_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
+ -encoding ascii \
+ -splitIndex \
+ -doctitle $(DOMAPI_JAVADOCTITLE) \
+ -windowtitle $(DOMAPI_JAVADOCWINDOWTITLE) \
+ -header $(DOMAPI_JAVADOCHEADER) \
+ -bottom $(DOMAPI_JAVADOCBOTTOM) \
+ -group $(DOMAPI_GROUPNAME) $(DOMAPI_REGEXP)
+DOMAPI_JAVADOCTITLE = 'Common DOM API'
+DOMAPI_JAVADOCWINDOWTITLE = 'Common DOM API'
+DOMAPI_JAVADOCHEADER = '<b>Common DOM API</b>'
+DOMAPI_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Submit a bug or feature</a><br>Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.<br>Copyright $(THIS_YEAR) Sun Microsystems, Inc. 4150 Network Circle<br>Santa Clara, California, 95054, U.S.A. All Rights Reserved.</font>'
+DOMAPI_GROUPNAME = "Packages"
+DOMAPI_REGEXP = "com.sun.java.browser.dom:org.w3c.dom*"
+# DOMAPI_PKGS is located in NON_CORE_PKGS.gmk
+
+#
+# Variables used by mirrordocs target
+#
+
+MIRROR_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
+ -encoding ascii \
+ -doctitle $(MIRROR_JAVADOCTITLE) \
+ -windowtitle $(MIRROR_JAVADOCWINDOWTITLE) \
+ -header $(MIRROR_JAVADOCHEADER) \
+ -bottom $(MIRROR_JAVADOCBOTTOM) \
+ -group $(MIRROR_GROUPNAME) $(MIRROR_REGEXP) \
+ -overview $(MIRROR_OVERVIEW)
+MIRROR_JAVADOCTITLE = 'Mirror API'
+MIRROR_JAVADOCWINDOWTITLE = 'Mirror API'
+MIRROR_JAVADOCHEADER = '<b>Mirror API</b>'
+MIRROR_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Report a bug or request a feature.</a><br>Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.</font>'
+MIRROR_GROUPNAME = "Packages"
+MIRROR_OVERVIEW = $(IMPORTSRCDIR)/com/sun/mirror/overview.html
+MIRROR_REGEXP = "com.sun.mirror.*"
+MIRROR_DESTDIR = $(DOCSDIR)/jdk/api/apt/mirror
+MIRROR_LINKOPT = -linkoffline ../../../../api $(DOCSDIR)/api/
+# MIRROR_PKGS is located in NON_CORE_PKGS.gmk
+
+#
+# Variables used by docletapidocs target
+#
+
+DOCLETAPI_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
+ -breakiterator \
+ -encoding ascii \
+ -doctitle $(DOCLETAPI_JAVADOCTITLE) \
+ -windowtitle $(DOCLETAPI_JAVADOCWINDOWTITLE) \
+ -header $(DOCLETAPI_JAVADOCHEADER) \
+ -bottom $(DOCLETAPI_JAVADOCBOTTOM) \
+ -group $(DOCLETAPI_GROUPNAME) $(DOCLETAPI_REGEXP)
+DOCLETAPI_JAVADOCTITLE = 'Doclet API'
+DOCLETAPI_JAVADOCWINDOWTITLE = 'Doclet API'
+DOCLETAPI_JAVADOCHEADER = '<b>Doclet API</b>'
+DOCLETAPI_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Submit a bug or feature</a><br>Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.<br>Copyright 1993-$(THIS_YEAR) Sun Microsystems, Inc. 4150 Network Circle<br>Santa Clara, California, 95054, U.S.A. All Rights Reserved.</font>'
+DOCLETAPI_GROUPNAME = "Packages"
+DOCLETAPI_REGEXP = "com.sun.javadoc"
+DOCLETAPI_LINKOPT = -linkoffline ../../../../api $(DOCSDIR)/api/
+# DOCLETAPI_PKGS is located in NON_CORE_PKGS.gmk
+
+#
+# Variables used by tagletapidocs target
+#
+
+TAGLETAPI_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
+ -encoding ascii \
+ -nonavbar \
+ -noindex \
+ -bottom $(TAGLETAPI_JAVADOCBOTTOM)
+TAGLETAPI_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Submit a bug or feature</a><br>Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.<br>Copyright 1993-$(THIS_YEAR) Sun Microsystems, Inc. 4150 Network Circle<br>Santa Clara, California, 95054, U.S.A. All Rights Reserved.</font>'
+# TAGLETAPI_FILE is located in NON_CORE_PKGS.gmk
+
+#
+# Variables used by jdi target
+#
+
+JPDA_SOURCEPATH = $(TOPDIR)/src/share/classes
+
+JDI_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
+ -encoding ascii \
+ -nodeprecatedlist \
+ -d $(DOCSDIR)/jdk/api/jpda/jdi \
+ -sourcepath $(JPDA_SOURCEPATH) \
+ -windowtitle $(JDI_WINDOWTITLE) \
+ -doctitle $(JDI_DOCTITLE) \
+ -header $(JDI_HEADER) \
+ -linkoffline ../../../../api $(DOCSDIR)/api/ \
+ -overview $(JPDA_SOURCEPATH)/jdi-overview.html
+JDI_WINDOWTITLE = "Java Debug Interface"
+JDI_DOCTITLE = "Java$(TRADEMARK) Debug Interface"
+JDI_HEADER = "Java Debug Interface"
+# JDI_PKGS is located in NON_CORE_PKGS.gmk
+
+#
+# Variables used by JAAS target
+#
+# NOTE: Quotes are required around sourcepath argument only on Windows. Otherwise,
+# you get "No packages or classes specified." due to $(CLASSPATH_SEPARATOR)
+# being interpreted as an end of command (newline)
+
+JAAS_SOURCEPATH = "$(TOPDIR)/src/share/classes$(CLASSPATH_SEPARATOR)$(TOPDIR)/src/solaris/classes$(CLASSPATH_SEPARATOR)$(TOPDIR)/src/windows/classes$(CLASSPATH_SEPARATOR)$(TOPDIR)/src/linux/classes"
+JAAS_DOCDIR = $(DOCSDIR)/jre/api/security/jaas/spec
+JAAS_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
+ -encoding ascii \
+ -nodeprecatedlist \
+ -d $(JAAS_DOCDIR) \
+ -sourcepath $(JAAS_SOURCEPATH) \
+ -windowtitle $(JAAS_WINDOWTITLE) \
+ -doctitle $(JAAS_DOCTITLE) \
+ -header $(JAAS_JAVADOCHEADER) \
+ -linkoffline ../../../../../api $(DOCSDIR)/api/ \
+ -overview $(TOPDIR)/src/share/classes/com/sun/security/auth/jaas-overview.html
+JAAS_WINDOWTITLE = "Java Authentication and Authorization Service "
+JAAS_DOCTITLE = "Java$(TRADEMARK) Authentication and Authorization Service"
+JAAS_JAVADOCHEADER = "JAAS"
+# JAAS_PKGS is located in NON_CORE_PKGS.gmk
+
+#
+# Variables used by JGSS target
+#
+
+JGSS_SOURCEPATH = $(TOPDIR)/src/share/classes
+JGSS_DOCDIR = $(DOCSDIR)/jre/api/security/jgss/spec
+
+JGSS_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
+ -encoding ascii \
+ -nodeprecatedlist \
+ -d $(JGSS_DOCDIR) \
+ -sourcepath $(JGSS_SOURCEPATH) \
+ -windowtitle $(JGSS_WINDOWTITLE) \
+ -doctitle $(JGSS_DOCTITLE) \
+ -header $(JGSS_JAVADOCHEADER) \
+ -linkoffline ../../../../../api $(DOCSDIR)/api/ \
+ -overview $(JGSS_SOURCEPATH)/com/sun/security/jgss/jgss-overview.html
+
+JGSS_WINDOWTITLE = "Java GSS-API Utilities "
+JGSS_DOCTITLE = "Java$(TRADEMARK) GSS-API Utilities"
+JGSS_JAVADOCHEADER = "Java GSS-API Utilities"
+# JGSS_PKGS is located in NON_CORE_PKGS.gmk
+
+#
+# Variables used by SMARTCARDIO target
+#
+
+SMARTCARDIO_SOURCEPATH = $(TOPDIR)/src/share/classes
+SMARTCARDIO_DOCDIR = $(DOCSDIR)/jre/api/security/smartcardio/spec
+
+SMARTCARDIO_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
+ -encoding ascii \
+ -nodeprecatedlist \
+ -d $(SMARTCARDIO_DOCDIR) \
+ -sourcepath $(SMARTCARDIO_SOURCEPATH) \
+ -windowtitle $(SMARTCARDIO_WINDOWTITLE) \
+ -doctitle $(SMARTCARDIO_DOCTITLE) \
+ -header $(SMARTCARDIO_JAVADOCHEADER) \
+ -linkoffline ../../../../../api $(DOCSDIR)/api/
+
+SMARTCARDIO_WINDOWTITLE = "Java Smart Card I/O"
+SMARTCARDIO_DOCTITLE = "Java$(TRADEMARK) Smart Card I/O"
+SMARTCARDIO_JAVADOCHEADER = "Java Smart Card I/O"
+# SMARTCARDIO_PKGS is located in NON_CORE_PKGS.gmk
+
+#
+# Variables used by HTTPSERVER target
+#
+
+HTTPSERVER_SOURCEPATH = $(TOPDIR)/src/share/classes
+HTTPSERVER_DOCDIR = $(DOCSDIR)/jre/api/net/httpserver/spec
+
+HTTPSERVER_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
+ -encoding ascii \
+ -nodeprecatedlist \
+ -d $(HTTPSERVER_DOCDIR) \
+ -sourcepath $(HTTPSERVER_SOURCEPATH) \
+ -windowtitle $(HTTPSERVER_WINDOWTITLE) \
+ -doctitle $(HTTPSERVER_DOCTITLE) \
+ -header $(HTTPSERVER_JAVADOCHEADER) \
+ -linkoffline ../../../../../api $(DOCSDIR)/api/
+
+HTTPSERVER_WINDOWTITLE = "Java HTTP Server"
+HTTPSERVER_DOCTITLE = "Java$(TRADEMARK) HTTP Server"
+HTTPSERVER_JAVADOCHEADER = "Java HTTP Server"
+# HTTPSERVER_PKGS is located in NON_CORE_PKGS.gmk
+
+#
+# Variables used by jvmti target
+#
+JVMTI_DOCS_SUBDIR = platform/jvmti
+JVMTI_HTML = $(HOTSPOT_DOCS_IMPORT_PATH)/$(JVMTI_DOCS_SUBDIR)/jvmti.html
+
+#
+# Variables used by mgmt target
+#
+MGMT_DOCDIR = $(DOCSDIR)/jre/api/management/
+MGMT_EXT_DIR = $(MGMT_DOCDIR)/extension
+MGMT_SOURCEPATH = $(TOPDIR)/src/share/classes
+JVM_MIB_NAME = JVM-MANAGEMENT-MIB.mib
+JVM_MIB_SRC = $(CLOSED_SRC)/share/classes/sun/management/snmp/$(JVM_MIB_NAME)
+
+ifdef OPENJDK
+ COPY-MIB-TARGET =
+else
+ COPY-MIB-TARGET = copy-mib
+endif
+MGMT_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
+ -encoding ascii \
+ -nodeprecatedlist \
+ -d $(MGMT_EXT_DIR) \
+ -sourcepath $(MGMT_SOURCEPATH) \
+ -windowtitle $(MGMT_WINDOWTITLE) \
+ -doctitle $(MGMT_DOCTITLE) \
+ -header $(MGMT_HEADER) \
+ -linkoffline ../../../../api $(DOCSDIR)/api/ \
+ -overview $(MGMT_SOURCEPATH)/com/sun/management/mgmt-overview.html
+MGMT_WINDOWTITLE = "Monitoring and Management Interface for the Java Platform"
+MGMT_DOCTITLE = "Monitoring and Management Interface for the Java$(TRADEMARK) Platform"
+MGMT_HEADER = "Monitoring and Management Interface for the Java Platform"
+# MGMT_PKGS is located in NON_CORE_PKGS.gmk
+
+#
+# Variables used by attach target
+#
+
+ATTACH_SOURCEPATH = $(TOPDIR)/src/share/classes
+ATTACH_DOCDIR = $(DOCSDIR)/jdk/api/attach/spec
+ATTACH_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
+ -encoding ascii \
+ -nodeprecatedlist \
+ -d $(ATTACH_DOCDIR) \
+ -sourcepath $(ATTACH_SOURCEPATH) \
+ -windowtitle $(ATTACH_WINDOWTITLE) \
+ -doctitle $(ATTACH_DOCTITLE) \
+ -header $(ATTACH_HEADER) \
+ -linkoffline ../../../../api $(DOCSDIR)/api/
+ATTACH_WINDOWTITLE = "Attach API"
+ATTACH_DOCTITLE = "Attach API"
+ATTACH_HEADER = "Attach API"
+# ATTACH_PKGS is located in NON_CORE_PKGS.gmk
+
+#
+# Variables used by jconsole target
+#
+
+JCONSOLE_SOURCEPATH = $(TOPDIR)/src/share/classes
+JCONSOLE_DOCDIR = $(DOCSDIR)/jdk/api/jconsole/spec
+JCONSOLE_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
+ -encoding ascii \
+ -nodeprecatedlist \
+ -d $(JCONSOLE_DOCDIR) \
+ -sourcepath $(JCONSOLE_SOURCEPATH) \
+ -windowtitle $(JCONSOLE_WINDOWTITLE) \
+ -doctitle $(JCONSOLE_DOCTITLE) \
+ -header $(JCONSOLE_HEADER) \
+ -linkoffline ../../../../api $(DOCSDIR)/api/
+JCONSOLE_WINDOWTITLE = "JConsole API"
+JCONSOLE_DOCTITLE = "JConsole API"
+JCONSOLE_HEADER = "JConsole API"
+# JCONSOLE_PKGS is located in NON_CORE_PKGS.gmk
+
+#
+# Variables used by treeapidocs target
+#
+
+TREEAPI_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
+ -encoding ascii \
+ -doctitle $(TREEAPI_JAVADOCTITLE) \
+ -windowtitle $(TREEAPI_JAVADOCWINDOWTITLE) \
+ -header $(TREEAPI_JAVADOCHEADER) \
+ -bottom $(TREEAPI_JAVADOCBOTTOM) \
+ -group $(TREEAPI_GROUPNAME) $(TREEAPI_REGEXP)
+#
+# -overview $(TREEAPI_OVERVIEW)
+#
+TREEAPI_JAVADOCTITLE = 'Compiler Tree API'
+TREEAPI_JAVADOCWINDOWTITLE = 'Compiler Tree API'
+TREEAPI_JAVADOCHEADER = '<b>Compiler Tree API</b>'
+TREEAPI_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Report a bug or request a feature.</a><br>Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.</font>'
+TREEAPI_GROUPNAME = "Packages"
+TREEAPI_OVERVIEW = $(SHARE_SRC)/classes/com/sun/source/overview.html
+TREEAPI_REGEXP = "com.sun.source.*"
+TREEAPI_DESTDIR = $(DOCSDIR)/jdk/api/javac/tree
+TREEAPI_LINKOPT = -linkoffline ../../../../api $(DOCSDIR)/api/
+# TREEAPI_PKGS is located in NON_CORE_PKGS.gmk
+
+#
+# Path where javadoc should find source files for release docs
+#
+RELEASEDOCS_SRCPATH = "$(SHARE_SRC)/classes$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/doc/stub$(CLASSPATH_SEPARATOR)$(CLOSED_SRC)/share/classes$(CLASSPATH_SEPARATOR)$(IMPORTSRCDIR)"
+
+#
+# CORE_PKGS environment variable has been moved to the following file
+#
+include CORE_PKGS.gmk
+
+#
+# Load environment variables for API package names that are not part of
+# the Java SE platform
+#
+include NON_CORE_PKGS.gmk
+
+# Targets for all APIs other than the core platform APIs
+ALL_OTHER_TARGETS = \
+ mirrordocs \
+ docletapidocs \
+ tagletapidocs \
+ domapidocs \
+ jpdadocs \
+ jaasdocs \
+ jgssdocs \
+ smartcardiodocs \
+ httpserverdocs \
+ mgmtdocs \
+ attachdocs \
+ jconsoledocs \
+ treeapidocs
+
+.PHONY: all docs
+all docs: coredocs otherdocs
+
+.PHONY: otherdocs
+otherdocs: ${ALL_OTHER_TARGETS}
+
+
+#################################################################
+# Production Targets -- USE THESE TARGETS WHEN:
+# a) You're generating docs outside of release engineering's
+# standard control build.
+# b) The docs will be pushed to the web and/or included in
+# the downloaded doc bundle.
+#
+# See: Notes.html#releaseTargets
+# Note: Spaces preceed ifdef/ifndef indents. Tabs preceed target commands (!)
+#
+.PHONY: sanitycheckcoredocs
+sanitycheckcoredocs:
+ @$(ECHO) ""
+ @$(ECHO) "Building core api docs with these values:"
+ @$(ECHO) " BUILD_NUMBER = $(BUILD_NUMBER)"
+ @$(ECHO) " MILESTONE = $(MILESTONE)"
+ @$(ECHO) ""
+ ifeq ($(BUILD_NUMBER), b00)
+ @$(ECHO) "ERROR: Build number must be defined"
+ @$(ECHO) "MILESTONE is set to $(MILESTONE)"
+ @$(ECHO) ""
+ exit 1
+ endif
+
+# Maximize performance and ensure that build number & milestone are set.
+.PHONY: rel-coredocs
+rel-coredocs: sanitycheckcoredocs
+ @# ######## release version of core packages ########
+ $(MAKE) coredocs
+
+.PHONY: rel-docs
+rel-docs: rel-coredocs ${ALL_OTHER_TARGETS}
+#
+# end of production targets
+#############################################################
+
+.PHONY: coredocs
+coredocs:
+ @# ######## core packages #######################
+ $(RM) -r $(DOCSDIR)/api
+ $(MKDIR) -p $(DOCSDIR)/api
+ $(JAVADOC_CMD) $(CORE_JAVADOCFLAGS) \
+ -d $(DOCSDIR)/api \
+ -sourcepath $(RELEASEDOCS_SRCPATH) \
+ $(CORE_PKGS)
+
+.PHONY: mirrordocs
+mirrordocs:
+ @# ######## mirror api for apt ##################
+ $(RM) -r $(MIRROR_DESTDIR)
+ $(MKDIR) -p $(MIRROR_DESTDIR)
+ $(JAVADOC_CMD) $(MIRROR_JAVADOCFLAGS) \
+ -d $(MIRROR_DESTDIR) \
+ -sourcepath $(RELEASEDOCS_SRCPATH) \
+ $(MIRROR_LINKOPT) \
+ $(MIRROR_PKGS)
+
+.PHONY: docletapidocs
+docletapidocs:
+ @# ######## doclet api ############################
+ $(RM) -r $(DOCSDIR)/jdk/api/javadoc/doclet
+ $(MKDIR) -p $(DOCSDIR)/jdk/api/javadoc/doclet
+ $(JAVADOC_CMD) $(DOCLETAPI_JAVADOCFLAGS) \
+ -d $(DOCSDIR)/jdk/api/javadoc/doclet \
+ -sourcepath $(RELEASEDOCS_SRCPATH) \
+ $(DOCLETAPI_LINKOPT) \
+ $(DOCLETAPI_PKGS)
+
+.PHONY: tagletapidocs
+tagletapidocs:
+ @# ######## taglet api ############################
+ $(RM) -r $(DOCSDIR)/jdk/api/javadoc/taglet
+ $(MKDIR) -p $(DOCSDIR)/jdk/api/javadoc/taglet
+ $(RM) -r $(DOCSTMPDIR)
+ $(MKDIR) -p $(DOCSTMPDIR)
+ $(JAVADOC_CMD) $(TAGLETAPI_JAVADOCFLAGS) \
+ -d $(DOCSTMPDIR) \
+ -linkoffline ../../../../api $(DOCSDIR)/api/ \
+ $(IMPORTSRCDIR)/$(TAGLETAPI_FILE)
+ cp -r $(DOCSTMPDIR)/com $(DOCSDIR)/jdk/api/javadoc/taglet
+ cp $(DOCSTMPDIR)/stylesheet.css $(DOCSDIR)/jdk/api/javadoc/taglet
+ $(RM) -r $(DOCSTMPDIR)
+
+.PHONY: domapidocs
+domapidocs:
+ @# ######## dom api ############################
+ $(RM) -r $(DOCSDIR)/jre/api/plugin/dom
+ $(MKDIR) -p $(DOCSDIR)/jre/api/plugin/dom
+ $(JAVADOC_CMD) $(DOMAPI_JAVADOCFLAGS) \
+ -d $(DOCSDIR)/jre/api/plugin/dom \
+ -sourcepath $(RELEASEDOCS_SRCPATH) \
+ -linkoffline ../../../../api $(DOCSDIR)/api/ \
+ $(DOMAPI_PKGS)
+
+.PHONY: jpdadocs
+jpdadocs: jdidocs jdwpdocs jvmtidocs
+
+.PHONY: jdidocs
+jdidocs:
+ @# ######## jdi #################################
+ $(RM) -r $(DOCSDIR)/jdk/api/jpda/jdi
+ $(MKDIR) -p $(DOCSDIR)/jdk/api/jpda/jdi
+ $(JAVADOC_CMD) $(JDI_JAVADOCFLAGS) \
+ $(JDI_PKGS)
+
+JDWP_SPEC = $(BUILDDIR)/jpda/jdwp/jdwp.spec
+JDWP_DOC = $(DOCSDIR)/platform/jpda/jdwp/jdwp-protocol.html
+JDWPGEN_JARFILE = $(BUILDTOOLJARDIR)/jdwpgen.jar
+
+.PHONY: jdwpdocs
+jdwpdocs: $(JDWP_DOC)
+
+$(JDWP_DOC): $(JDWPGEN_JARFILE) $(JDWP_SPEC)
+ $(prep-target)
+ $(BOOT_JAVA_CMD) -jar $(JDWPGEN_JARFILE) $(JDWP_SPEC) -doc $(JDWP_DOC)
+
+.PHONY: jvmtidocs
+jvmtidocs:
+ @# ######## jvmti #################################
+ @if [ -f $(JVMTI_HTML) ] ; then \
+ $(RM) -r $(DOCSDIR)/$(JVMTI_DOCS_SUBDIR); \
+ $(MKDIR) -p $(DOCSDIR)/$(JVMTI_DOCS_SUBDIR); \
+ $(ECHO) $(CP) $(JVMTI_HTML) $(DOCSDIR)/$(JVMTI_DOCS_SUBDIR); \
+ $(CP) $(JVMTI_HTML) $(DOCSDIR)/$(JVMTI_DOCS_SUBDIR); \
+ else \
+ $(ECHO) "WARNING: Generated jvmti file does not exist: $(JVMTI_HTML)"; \
+ fi
+
+.PHONY: jaasdocs
+jaasdocs:
+ @# ######## api-jaas ############################
+ $(RM) -r $(JAAS_DOCDIR)
+ $(MKDIR) -p $(JAAS_DOCDIR)
+ $(JAVADOC_CMD) $(JAAS_JAVADOCFLAGS) \
+ $(JAAS_PKGS)
+
+.PHONY: jgssdocs
+jgssdocs:
+ @# ######## api-jgss ############################
+ $(RM) -r $(JGSS_DOCDIR)
+ $(MKDIR) -p $(JGSS_DOCDIR)
+ $(JAVADOC_CMD) $(JGSS_JAVADOCFLAGS) \
+ $(JGSS_PKGS)
+
+.PHONY: smartcardiodocs
+smartcardiodocs:
+ @# ######## api-smartcardio ############################
+ $(RM) -r $(SMARTCARDIO_DOCDIR)
+ $(MKDIR) -p $(SMARTCARDIO_DOCDIR)
+ $(JAVADOC_CMD) $(SMARTCARDIO_JAVADOCFLAGS) \
+ $(SMARTCARDIO_PKGS)
+
+.PHONY: httpserverdocs
+httpserverdocs:
+ @# ######## api-httpserver #######################
+ $(RM) -r $(HTTPSERVER_DOCDIR)
+ $(MKDIR) -p $(HTTPSERVER_DOCDIR)
+ $(JAVADOC_CMD) $(HTTPSERVER_JAVADOCFLAGS) \
+ $(HTTPSERVER_PKGS)
+
+.PHONY: mgmtdocs
+mgmtdocs: $(COPY-MIB-TARGET)
+ @# ######## api-management ############################
+ $(RM) -r $(MGMT_EXT_DIR)
+ $(MKDIR) -p $(MGMT_EXT_DIR)
+ $(JAVADOC_CMD) $(MGMT_JAVADOCFLAGS) \
+ $(MGMT_PKGS)
+
+copy-mib:
+ @# ######## copy-snmp-mib ############################
+ $(RM) $(MGMT_DOCDIR)/$(JVM_MIB_NAME)
+ $(MKDIR) -p $(MGMT_DOCDIR)
+ $(CP) $(JVM_MIB_SRC) $(MGMT_DOCDIR)
+
+.PHONY: attachdocs
+attachdocs:
+ @# ######## api-attach ############################
+ $(RM) -r $(ATTACH_DOCDIR)
+ $(MKDIR) -p $(ATTACH_DOCDIR)
+ $(JAVADOC_CMD) $(ATTACH_JAVADOCFLAGS) \
+ $(ATTACH_PKGS)
+
+.PHONY: jconsoledocs
+jconsoledocs:
+ @# ######## api-jconsole ############################
+ $(RM) -r $(JCONSOLE_DOCDIR)
+ $(MKDIR) -p $(JCONSOLE_DOCDIR)
+ $(JAVADOC_CMD) $(JCONSOLE_JAVADOCFLAGS) \
+ $(JCONSOLE_PKGS)
+
+.PHONY: treeapidocs
+treeapidocs:
+ @# ######## tree api for javac ##################
+ $(RM) -r $(TREEAPI_DESTDIR)
+ $(MKDIR) -p $(TREEAPI_DESTDIR)
+ $(JAVADOC_CMD) $(TREEAPI_JAVADOCFLAGS) \
+ -d $(TREEAPI_DESTDIR) \
+ -sourcepath $(RELEASEDOCS_SRCPATH) \
+ $(TREEAPI_LINKOPT) \
+ $(TREEAPI_PKGS)
+
+# DEBUG TARGET
+# List the values defined in the makefile hierarchy, to make sure everything
+# is set properly, and to help identify values we can use instead of making new ones.
+# (Most of them come from common/shared/Defs.gmk)
+#
+# Notes:
+# * BUILD_NUMBER defaults to b00 if not set on command line with BUILD_NUMBER=<value>
+# * MILESTONE defaults to internal unless set to beta, rc, or fcs on command line
+#
+.PHONY: echovalues
+echovalues:
+ @$(ECHO) ""
+ @$(ECHO) --------------Shared---------------------------
+ @$(ECHO) BUILD_NUMBER = $(BUILD_NUMBER)
+ @$(ECHO) FULL_VERSION = $(FULL_VERSION)
+ @$(ECHO) JDK_VERSION = $(JDK_VERSION)
+ @$(ECHO) JDK_MAJOR_VERSION = $(JDK_MAJOR_VERSION)
+ @$(ECHO) JDK_MINOR_VERSION = $(JDK_MINOR_VERSION)
+ @$(ECHO) JDK_MICRO_VERSION = $(JDK_MICRO_VERSION)
+ @$(ECHO) JDK_UPDATE_VERSION = $(JDK_UPDATE_VERSION)
+ @$(ECHO) JDK_MKTG_VERSION = $(JDK_MKTG_VERSION)
+ @$(ECHO) JDK_UNDERSCORE_VERSION = $(JDK_UNDERSCORE_VERSION)
+ @$(ECHO) JDK_MKTG_UNDERSCORE_VERSION = $(JDK_MKTG_UNDERSCORE_VERSION)
+ @$(ECHO) MARKETING_NUMBER = $(MARKETING_NUMBER)
+ @$(ECHO) MARKET_NAME = $(MARKET_NAME)
+ @$(ECHO) MILESTONE = $(MILESTONE)
+ @$(ECHO) RELEASE = $(RELEASE)
+ @$(ECHO) USER_RELEASE_SUFFIX = $(USER_RELEASE_SUFFIX)
+ @$(ECHO) --------------Shared---------------------------
+ @$(ECHO) ""
+ @$(ECHO) --------------common/Defs---------------------------
+ @$(ECHO) "RELEASEDOCS_SRCPATH"
+ @$(ECHO) " SHARE_SRC/classes: $(SHARE_SRC)/classes"
+ @$(ECHO) " PLATFORM_SRC/classes: $(PLATFORM_SRC)/classes"
+ @$(ECHO) " GENSRCDIR: $(GENSRCDIR)"
+ @$(ECHO) " IMPORTSRCDIR: $(IMPORTSRCDIR)"
+ @$(ECHO) " SHARE_SRC/doc/stub: $(SHARE_SRC)/doc/stub"
+ @$(ECHO) --------------common/Defs---------------------------
+ @$(ECHO) ""
diff --git a/jdk/make/docs/NON_CORE_PKGS.gmk b/jdk/make/docs/NON_CORE_PKGS.gmk
new file mode 100644
index 0000000..f40add3
--- /dev/null
+++ b/jdk/make/docs/NON_CORE_PKGS.gmk
@@ -0,0 +1,94 @@
+#
+# Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# This file contains the package names of all the "non-core"
+# API published in the Java 2 SDK documentation. "Non-core" means
+# it includes all published API outside of the JDK API specification.
+#
+# These environment variables are used by javadoc in
+# make/docs/Makefile and are referenced by the localization
+# team when determining which APIs to extract javadoc
+# comments from.
+
+DOMAPI_PKGS = com.sun.java.browser.dom \
+ org.w3c.dom \
+ org.w3c.dom.bootstrap \
+ org.w3c.dom.ls \
+ org.w3c.dom.ranges \
+ org.w3c.dom.traversal \
+ org.w3c.dom.html \
+ org.w3c.dom.stylesheets \
+ org.w3c.dom.css \
+ org.w3c.dom.events \
+ org.w3c.dom.views
+
+JDI_PKGS = com.sun.jdi \
+ com.sun.jdi.event \
+ com.sun.jdi.request \
+ com.sun.jdi.connect \
+ com.sun.jdi.connect.spi
+
+MGMT_PKGS = com.sun.management
+
+JAAS_PKGS = com.sun.security.auth \
+ com.sun.security.auth.callback \
+ com.sun.security.auth.login \
+ com.sun.security.auth.module
+
+JGSS_PKGS = com.sun.security.jgss
+
+OLD_JSSE_PKGS = com.sun.net.ssl
+
+HTTPSERVER_PKGS = com.sun.net.httpserver \
+ com.sun.net.httpserver.spi
+
+DOCLETAPI_PKGS = com.sun.javadoc
+
+TAGLETAPI_FILE = com/sun/tools/doclets/Taglet.java
+
+MIRROR_PKGS = com.sun.mirror.apt \
+ com.sun.mirror.declaration \
+ com.sun.mirror.type \
+ com.sun.mirror.util
+
+ATTACH_PKGS = com.sun.tools.attach \
+ com.sun.tools.attach.spi
+
+JCONSOLE_PKGS = com.sun.tools.jconsole
+
+TREEAPI_PKGS = com.sun.source.tree \
+ com.sun.source.util
+
+SMARTCARDIO_PKGS = javax.smartcardio
+
+# non-core packages in rt.jar
+NON_CORE_PKGS = $(DOMAPI_PKGS) \
+ $(MGMT_PKGS) \
+ $(JAAS_PKGS) \
+ $(JGSS_PKGS) \
+ $(OLD_JSSE_PKGS) \
+ $(HTTPSERVER_PKGS) \
+ $(SMARTCARDIO_PKGS)
diff --git a/jdk/make/docs/Notes.html b/jdk/make/docs/Notes.html
new file mode 100644
index 0000000..e3d8ae1
--- /dev/null
+++ b/jdk/make/docs/Notes.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Doc Process Notes</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</head>
+
+<body>
+<h3><a name="REGEXP"></a><br>
+REGEXP</h3>
+<p> REGEXP is a list of wildcard patterns that determines which packages listed
+ in CORE_PKGS.gmk go into which summary-table on the main API index page. It
+ was motivated by the need to divide the world into "core packages"
+ (java.*) and "extension packages" (javax.*). In time, the distinction
+ went away. The whole table is now called "Platform Packages"--which
+ eliminated the need for this list of regular expressions. But it lingered on,
+ accreting all of the packages in the JVM, one by one. I pruned it back to "*",
+ so it now covers every package in the Java platform API docs. If some separation
+ is needed in the future, it can grow back into a colon-separated list, starting
+ with this, which is in all respects equivalent to "*" at this point
+ in time:</p>
+<blockquote>
+ <pre>REGEXP = "java.*:javax.*:org.ietf*:org.omg.</pre>
+</blockquote>
+<h3><a name="releaseTargets"></a><br>
+ Release Targets</h3>
+<p> (Thanks to Kelly O'Hair for this info.)</p>
+<p> The <tt>rel-coredocs</tt> and <tt>rel-docs</tt> targets were added by Eric
+ Armstrong. <tt>rel-coredocs</tt> assumes the kind of large, 32-bit machine used
+ in the javapubs group's docs-release process. It specifies memory settings accordingly
+ to maximize performance.</p>
+<p> The performance settings, like the sanity check, are most important for the
+ core docs--the platform APIs. Running javadoc on those APIs takes a significant
+ amount of time and memory. Setting the initial heap size as large as possible
+ is important to prevent thrashing as the heap grows. Setting the maximum as
+ large as necessary is also important to keep the job from failing.</p>
+<blockquote>
+ <p> <tt>-J-Xmx512</tt> sets a maximum of 512, which became necessary in 6.0<br>
+ <tt>-J-Xms256</tt> sets starting size to 256 (default is 8)</p>
+</blockquote>
+<p> <tt>rel-coredocs</tt> also includes a sanity check to help ensure that <tt>BUILD_NUMBER</tt>
+ and <tt>MILESTONE</tt> are specified properly when docs are built outside of
+ the normal release engineering process, with the intention of releasing them
+ on the web or in a downloaded docs bundle. (When invoked in release engineering's
+ control build, the values are always set properly. But when the targets are
+ run by themselves, they default to b00 and "internal"--which silently
+ sabotage the result of a build that can take many hours to complete.</p>
+</body>
+</html>
diff --git a/jdk/make/java/Makefile b/jdk/make/java/Makefile
new file mode 100644
index 0000000..44d05a5
--- /dev/null
+++ b/jdk/make/java/Makefile
@@ -0,0 +1,58 @@
+#
+# Copyright 1995-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all of java
+#
+
+PRODUCT=java
+BUILDDIR=..
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# The order of subdirs here is important
+#
+SUBDIRS += hpi version jvm redist verify fdlibm java sun_nio jli main zip
+
+# Others
+# Note: java_crw_demo java_hprof_demo are demos but must be delivered built in sdk
+SUBDIRS += security npt java_crw_demo java_hprof_demo \
+ math awt util text applet net nio \
+ sql rmi jar beans logging management instrument
+
+
+ifeq ($(PLATFORM), solaris)
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ SUBDIRS += jexec
+ endif
+endif # PLATFORM
+
+ifeq ($(PLATFORM), linux)
+ SUBDIRS += jexec
+endif # PLATFORM
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/java/applet/Makefile b/jdk/make/java/applet/Makefile
new file mode 100644
index 0000000..34e9ec4
--- /dev/null
+++ b/jdk/make/java/applet/Makefile
@@ -0,0 +1,39 @@
+#
+# Copyright 1995-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = java.applet
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = java/applet
+
+#
+# Include
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/java/awt/Makefile b/jdk/make/java/awt/Makefile
new file mode 100644
index 0000000..f59ea78
--- /dev/null
+++ b/jdk/make/java/awt/Makefile
@@ -0,0 +1,119 @@
+#
+# Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = java.awt
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+# WARNING: Make sure the OPENJDK plugs are up-to-date, see make/common/internal/BinaryPlugs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = java/awt sun/awt/geom
+
+#
+# Specific to OPENJDK
+#
+ifdef OPENJDK
+
+build: import-binary-plug-awt-classes
+
+include $(BUILDDIR)/common/internal/BinaryPlugs.gmk
+
+endif
+
+build: properties cursors
+
+#
+# Resources
+#
+RESOURCE_BUNDLES_COMPILED_PROPERTIES = sun/awt/resources/awt.properties
+LOCALE_SET_DEFINITION = jre
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+
+clean:: properties.clean sun.geom.clean cursors.clean
+
+_LIBPROPS = \
+ flavormap.properties
+
+LIBPROPS = $(_LIBPROPS:%=$(LIBDIR)/%)
+
+properties: $(LIBDIR) $(LIBPROPS)
+
+$(LIBDIR)/%.properties: $(PLATFORM_SRC)/lib/%.properties
+ $(install-file)
+
+properties.clean :
+ $(RM) $(LIBPROPS)
+
+.SUFFIXES : $(SUFFIXES) .gif .properties
+
+CURSORSRC = $(TOPDIR)/src/share/lib/images/cursors
+CURSORDIR = $(LIBDIR)/images/cursors
+
+ifeq ($(PLATFORM), windows)
+CURSORPROPSRC = $(TOPDIR)/src/windows/lib/images/cursors
+CURSORS = $(CURSORDIR)/win32_CopyDrop32x32.gif \
+ $(CURSORDIR)/win32_MoveDrop32x32.gif \
+ $(CURSORDIR)/win32_LinkDrop32x32.gif \
+ $(CURSORDIR)/win32_CopyNoDrop32x32.gif \
+ $(CURSORDIR)/win32_MoveNoDrop32x32.gif \
+ $(CURSORDIR)/win32_LinkNoDrop32x32.gif \
+ $(CURSORDIR)/invalid32x32.gif
+else # PLATFORM
+CURSORPROPSRC = $(TOPDIR)/src/solaris/lib/images/cursors
+CURSORS = $(CURSORDIR)/motif_CopyDrop32x32.gif \
+ $(CURSORDIR)/motif_MoveDrop32x32.gif \
+ $(CURSORDIR)/motif_LinkDrop32x32.gif \
+ $(CURSORDIR)/motif_CopyNoDrop32x32.gif \
+ $(CURSORDIR)/motif_MoveNoDrop32x32.gif \
+ $(CURSORDIR)/motif_LinkNoDrop32x32.gif \
+ $(CURSORDIR)/invalid32x32.gif
+endif # PLATFORM
+
+$(CURSORDIR)/cursors.properties : $(CURSORPROPSRC)/cursors.properties
+ $(install-file)
+
+$(CURSORDIR)/%.gif : $(CURSORSRC)/%.gif
+ $(install-file)
+
+cursors : $(CURSORDIR)/cursors.properties $(CURSORS)
+
+sun.geom.clean :
+ $(RM) -r $(CLASSBINDIR)/sun/awt/geom
+
+cursors.clean :
+ $(RM) -r $(CURSORDIR)
+
+.PHONY: properties properties.clean \
+ cursors sun.geom.clean cursors.clean
+
diff --git a/jdk/make/java/beans/Makefile b/jdk/make/java/beans/Makefile
new file mode 100644
index 0000000..bfe73ec
--- /dev/null
+++ b/jdk/make/java/beans/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building java.beans.*
+#
+
+BUILDDIR = ../..
+PACKAGE = java.beans
+PRODUCT = java
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile.
+#
+AUTO_FILES_JAVA_DIRS = java/beans com/sun/beans
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/java/fdlibm/FILES_c.gmk b/jdk/make/java/fdlibm/FILES_c.gmk
new file mode 100644
index 0000000..465aab1
--- /dev/null
+++ b/jdk/make/java/fdlibm/FILES_c.gmk
@@ -0,0 +1,106 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ k_standard.c \
+ k_rem_pio2.c \
+ k_cos.c \
+ k_sin.c \
+ k_tan.c \
+ e_acos.c \
+ e_acosh.c \
+ e_asin.c \
+ e_atan2.c \
+ e_atanh.c \
+ e_cosh.c \
+ e_exp.c \
+ e_fmod.c \
+ e_gamma.c \
+ e_gamma_r.c \
+ e_hypot.c \
+ e_j0.c \
+ e_j1.c \
+ e_jn.c \
+ e_lgamma.c \
+ e_lgamma_r.c \
+ e_log.c \
+ e_log10.c \
+ e_pow.c \
+ e_rem_pio2.c \
+ e_remainder.c \
+ e_scalb.c \
+ e_sinh.c \
+ e_sqrt.c \
+ w_acos.c \
+ w_acosh.c \
+ w_asin.c \
+ w_atan2.c \
+ w_atanh.c \
+ w_cosh.c \
+ w_exp.c \
+ w_fmod.c \
+ w_gamma.c \
+ w_gamma_r.c \
+ w_hypot.c \
+ w_j0.c \
+ w_j1.c \
+ w_jn.c \
+ w_lgamma.c \
+ w_lgamma_r.c \
+ w_log.c \
+ w_log10.c \
+ w_pow.c \
+ w_remainder.c \
+ w_scalb.c \
+ w_sinh.c \
+ w_sqrt.c \
+ s_asinh.c \
+ s_atan.c \
+ s_cbrt.c \
+ s_ceil.c \
+ s_copysign.c \
+ s_cos.c \
+ s_erf.c \
+ s_expm1.c \
+ s_fabs.c \
+ s_finite.c \
+ s_floor.c \
+ s_frexp.c \
+ s_ilogb.c \
+ s_isnan.c \
+ s_ldexp.c \
+ s_lib_version.c \
+ s_log1p.c \
+ s_logb.c \
+ s_matherr.c \
+ s_modf.c \
+ s_nextafter.c \
+ s_rint.c \
+ s_scalbn.c \
+ s_signgam.c \
+ s_significand.c \
+ s_sin.c \
+ s_tan.c \
+ s_tanh.c
diff --git a/jdk/make/java/fdlibm/Makefile b/jdk/make/java/fdlibm/Makefile
new file mode 100644
index 0000000..fd2442b
--- /dev/null
+++ b/jdk/make/java/fdlibm/Makefile
@@ -0,0 +1,86 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for native threads HPI.
+#
+# Note:
+# The fdlibm libraries are built using special rules in Library.gmk.
+#
+
+BUILDDIR = ../..
+LIBRARY = fdlibm
+PRODUCT = java
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Where is fdlibm in the source tree?
+#
+FDLIBM_SRC = $(SHARE_SRC)/native/java/lang/fdlibm
+
+# windows compiler flags
+ifeq ($(PLATFORM),windows)
+ # Turn all optimizations off
+ _OPT = $(CC_NO_OPT)
+ OTHER_CFLAGS =
+ CPPFLAGS_DBG += -DLOGGING
+ # Files built here do not compile with warning level 3 if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+endif
+
+#
+# Include path.
+#
+OTHER_INCLUDES = -I$(FDLIBM_SRC)/include
+
+#
+# Things that must be linked in.
+#
+OTHER_LDLIBS =
+
+#
+# Files to compile.
+#
+include FILES_c.gmk
+
+#
+# Rules for the .a file.
+#
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# Disable optimization to get correctly reproducible
+# floating-point results.
+#
+ifeq ($(PLATFORM),linux)
+ # Turn all optimizations off
+ _OPT = $(CC_NO_OPT)
+endif
+
+#
+# Find fdlibm source files.
+#
+vpath %.c
+vpath %.c $(FDLIBM_SRC)/src
diff --git a/jdk/make/java/hpi/Makefile b/jdk/make/java/hpi/Makefile
new file mode 100644
index 0000000..ee64538
--- /dev/null
+++ b/jdk/make/java/hpi/Makefile
@@ -0,0 +1,39 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build HPI (Host Porting Interface) libraries
+#
+
+BUILDDIR = ../..
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Build specified the HPI implementations
+#
+SUBDIRS = $(HPIS)
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/java/hpi/hpi_common.gmk b/jdk/make/java/hpi/hpi_common.gmk
new file mode 100644
index 0000000..ba3c586
--- /dev/null
+++ b/jdk/make/java/hpi/hpi_common.gmk
@@ -0,0 +1,90 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Shared files between the different threads types on Solaris. Be
+# careful when including this, you must get your variables right.
+#
+
+#
+# Common files on Solaris.
+#
+ifneq ($(PLATFORM), windows)
+FILES_c += \
+ interrupt.c \
+ linker_md.c \
+ memory_md.c \
+ system_md.c \
+ hpi.c
+endif
+
+#
+# Include paths can also be shared.
+#
+ifneq ($(PLATFORM), windows)
+OTHER_INCLUDES += \
+ -I$(PLATFORM_SRC)/hpi/$(THREADDIR)/include \
+ -I$(PLATFORM_SRC)/hpi/include \
+ -I$(PLATFORM_SRC)/hpi/export \
+ -I$(SHARE_SRC)/hpi/include \
+ -I$(SHARE_SRC)/hpi/export
+else
+OTHER_INCLUDES += \
+ -I$(PLATFORM_SRC)/hpi/include \
+ -I$(PLATFORM_SRC)/hpi/export \
+ -I$(SHARE_SRC)/hpi/include \
+ -I$(SHARE_SRC)/hpi/export
+endif
+
+#
+# Add to the default C and assembly file search paths. Clear any initial
+# vpath settings to ensure that we don't look in unexpected places for HPI
+# files.
+#
+vpath %.c
+vpath %.c $(PLATFORM_SRC)/hpi/$(THREADDIR)/src
+vpath %.c $(PLATFORM_SRC)/hpi/src
+vpath %.c $(SHARE_SRC)/hpi/src
+
+vpath %.s
+vpath %.s $(PLATFORM_SRC)/hpi/$(THREADDIR)/src
+vpath %.s $(PLATFORM_SRC)/hpi/src
+
+#
+# By default leave out locking statistics
+#
+ifneq ($(PLATFORM), windows)
+LOCKSTATS = false
+ifeq ($(LOCKSTATS), true)
+ CFLAGS_COMMON += -DLOCKSTATS
+endif
+endif
+
+#
+# Things that must be linked in.
+#
+ifneq ($(PLATFORM), windows)
+OTHER_LDLIBS += $(LIBSOCKET) -lnsl $(LIBM) -ldl
+endif
diff --git a/jdk/make/java/hpi/native/Makefile b/jdk/make/java/hpi/native/Makefile
new file mode 100644
index 0000000..7e9f2d2
--- /dev/null
+++ b/jdk/make/java/hpi/native/Makefile
@@ -0,0 +1,92 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for native threads HPI.
+#
+
+BUILDDIR = ../../..
+LIBRARY = hpi
+PRODUCT = java
+THREADDIR = native_threads
+LIB_LOCATION = $(LIBDIR)/$(LIBARCH)/$(THREADDIR)
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Native threads specific C and .s files.
+#
+FILES_c = \
+ monitor_md.c \
+ threads_md.c \
+ condvar_md.c \
+ interrupt_md.c \
+ mutex_md.c \
+ sys_api_td.c \
+ threads_$(PLATFORM).c
+
+#
+# Other files/flags shared between the HPIs.
+#
+include $(BUILDDIR)/java/hpi/hpi_common.gmk
+
+#
+# Rules for the .so file.
+#
+ifeq ($(PLATFORM), solaris)
+ ifneq ($(ARCH), amd64)
+ FILES_reorder += reorder-$(ARCH)
+ endif
+endif
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# HPI flags for native threads.
+#
+OTHER_CPPFLAGS += -D_REENTRANT -DNATIVE
+
+ifeq ($(USE_PTHREADS),true)
+OTHER_CPPFLAGS += -DUSE_PTHREADS
+ifeq ($(MOOT_PRIORITIES),true)
+OTHER_CPPFLAGS += -DMOOT_PRIORITIES
+endif
+LIBPOSIX4 = -lposix4
+OTHER_LDLIBS += -lpthread $(LIBPOSIX4)
+endif
+
+HAVE_GETHRVTIME=true
+ifeq ($(HAVE_GETHRVTIME),true)
+OTHER_CPPFLAGS += -DHAVE_GETHRVTIME
+endif
+
+HAVE_FILIOH=true
+ifeq ($(HAVE_FILIOH),true)
+OTHER_CPPFLAGS += -DHAVE_FILIOH
+endif
+
+ifeq ($(NO_INTERRUPTIBLE_IO),true)
+OTHER_CPPFLAGS += -DNO_INTERRUPTIBLE_IO
+endif
+
diff --git a/jdk/make/java/hpi/native/mapfile-vers b/jdk/make/java/hpi/native/mapfile-vers
new file mode 100644
index 0000000..188f067
--- /dev/null
+++ b/jdk/make/java/hpi/native/mapfile-vers
@@ -0,0 +1,32 @@
+#
+# Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+SUNWprivate_1.1 {
+ global:
+ DLL_Initialize;
+
+ local:
+ *;
+};
diff --git a/jdk/make/java/hpi/native/reorder-i586 b/jdk/make/java/hpi/native/reorder-i586
new file mode 100644
index 0000000..69c4ced
--- /dev/null
+++ b/jdk/make/java/hpi/native/reorder-i586
@@ -0,0 +1,27 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+text: .text%_init;
+text: .text%checkForCorrectLibthread: OUTPUTDIR/tmp/java/hpi/native_threads/obj/threads_solaris.o;
+text: .text%init64IO: OUTPUTDIR/tmp/java/hpi/native_threads/obj/system_md.o;
+text: .text%DLL_Initialize;
+text: .text%GetInterface: OUTPUTDIR/tmp/java/hpi/native_threads/obj/hpi.o;
+text: .text%sysBuildLibName;
+text: .text%sysLoadLibrary;
+text: .text%sysFindLibraryEntry;
+text: .text%sysNativePath;
+text: .text%sysOpen;
+text: .text%sysSeek;
+text: .text%lseek64_w;
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%sysAvailable;
+text: .text%sysFfileMode;
+text: .text%sysGetLastErrorString;
+# Test LoadFrame
+# Test LoadJFrame
+# Test JHello
+# SwingSet
diff --git a/jdk/make/java/hpi/native/reorder-sparc b/jdk/make/java/hpi/native/reorder-sparc
new file mode 100644
index 0000000..4a180d9
--- /dev/null
+++ b/jdk/make/java/hpi/native/reorder-sparc
@@ -0,0 +1,26 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+text: .text%checkForCorrectLibthread: OUTPUTDIR/tmp/java/hpi/native_threads/obj/threads_solaris.o;
+text: .text%init64IO: OUTPUTDIR/tmp/java/hpi/native_threads/obj/system_md.o;
+text: .text%DLL_Initialize;
+text: .text%GetInterface: OUTPUTDIR/tmp/java/hpi/native_threads/obj/hpi.o;
+text: .text%sysBuildLibName;
+text: .text%sysLoadLibrary;
+text: .text%sysFindLibraryEntry;
+text: .text%sysNativePath;
+text: .text%sysOpen;
+text: .text%sysFfileMode;
+text: .text%sysSeek;
+text: .text%lseek64_w;
+text: .text%sysAvailable;
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%sysGetLastErrorString;
+# Test LoadFrame
+# Test LoadJFrame
+# Test JHello
+# SwingSet
diff --git a/jdk/make/java/hpi/native/reorder-sparcv9 b/jdk/make/java/hpi/native/reorder-sparcv9
new file mode 100644
index 0000000..6ac7b06
--- /dev/null
+++ b/jdk/make/java/hpi/native/reorder-sparcv9
@@ -0,0 +1,26 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+text: .text%checkForCorrectLibthread: OUTPUTDIR/tmp/java/hpi/native_threads/obj64/threads_solaris.o;
+text: .text%init64IO: OUTPUTDIR/tmp/java/hpi/native_threads/obj64/system_md.o;
+text: .text%DLL_Initialize;
+text: .text%GetInterface: OUTPUTDIR/tmp/java/hpi/native_threads/obj64/hpi.o;
+text: .text%sysBuildLibName;
+text: .text%sysLoadLibrary;
+text: .text%sysFindLibraryEntry;
+text: .text%sysNativePath;
+text: .text%sysOpen;
+text: .text%sysFfileMode;
+text: .text%sysSeek;
+text: .text%lseek64_w;
+text: .text%sysAvailable;
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%sysGetLastErrorString;
+# Test LoadFrame
+# Test LoadJFrame
+# Test JHello
+# SwingSet
diff --git a/jdk/make/java/hpi/windows/Makefile b/jdk/make/java/hpi/windows/Makefile
new file mode 100644
index 0000000..da16336
--- /dev/null
+++ b/jdk/make/java/hpi/windows/Makefile
@@ -0,0 +1,70 @@
+#
+# Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for Windows HPI DLL
+#
+BUILDDIR = ../../..
+LIBRARY = hpi
+PRODUCT = java
+THREADDIR = windows_threads
+LIB_LOCATION = $(BINDIR)
+
+include $(BUILDDIR)/common/Defs.gmk
+
+# windows compiler flags
+ifeq ($(PLATFORM),windows)
+ CPPFLAGS_DBG += -DLOGGING
+ # Files built here do not compile with warning level 3 if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+endif
+
+FILES_c = \
+ linker_md.c \
+ memory_md.c \
+ monitor_md.c \
+ path_md.c \
+ socket_md.c \
+ sys_api_md.c \
+ system_md.c \
+ threads_md.c \
+ hpi.c # trailing blank required!
+
+JVMLIB =
+JAVALIB =
+OTHER_LCF = -export:DLL_Initialize
+EXTRA_LIBS =
+
+
+#
+# Other files/flags shared between the HPIs.
+#
+include $(BUILDDIR)/java/hpi/hpi_common.gmk
+
+#
+# Rules for the .so file.
+#
+include $(BUILDDIR)/common/Library.gmk
+
diff --git a/jdk/make/java/instrument/Makefile b/jdk/make/java/instrument/Makefile
new file mode 100644
index 0000000..646fcdc6
--- /dev/null
+++ b/jdk/make/java/instrument/Makefile
@@ -0,0 +1,131 @@
+#
+# Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Makefile for building the Java Programming Language Instrumentation Services
+# agent, supporting java.lang.instrument
+
+BUILDDIR = ../..
+PACKAGE = sun.instrument
+LIBRARY = instrument
+PRODUCT = sun
+
+# Configure the CFLAGS for this library. Use static binding so that there
+# are not dependencies on modules not on the search patch when invoked from
+# the Windows system directory (or elsewhere).
+MS_RUNTIME_STATIC=true
+
+FILES_m = mapfile-vers
+
+include $(BUILDDIR)/common/Defs.gmk
+
+# Use the mapfile-vers (See the mapfile located with this Makefile)
+ifdef FILES_m
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+endif
+
+#
+# Files to compile.
+#
+FILES_c = \
+ EncodingSupport.c \
+ EncodingSupport_md.c \
+ FileSystemSupport_md.c \
+ InstrumentationImplNativeMethods.c \
+ InvocationAdapter.c \
+ JarFacade.c \
+ JPLISAgent.c \
+ JPLISAssert.c \
+ JavaExceptions.c \
+ PathCharsValidator.c \
+ Reentrancy.c \
+ Utilities.c
+
+#
+# -jaragent support requires zip and jar manfiest parser to be compiled
+# into the instrument library.
+#
+IO_PLATFORM_SRC = $(PLATFORM_SRC)/native/java/io
+LAUNCHER_SHARE_SRC = $(SHARE_SRC)/bin
+LAUNCHER_PLATFORM_SRC = $(PLATFORM_SRC)/bin
+
+FILES_c += \
+ canonicalize_md.c
+
+FILES_export = \
+ sun/instrument/InstrumentationImpl.java
+
+#
+# This controls the ability to do logging in the library.
+#
+CPPFLAGS_DBG += -DJPLIS_LOGGING
+CPPFLAGS_OPT += -DNO_JPLIS_LOGGING
+
+OTHER_INCLUDES = -I$(SHARE_SRC)/instrument
+OTHER_INCLUDES += -I$(PLATFORM_SRC)/instrument
+OTHER_INCLUDES += -I$(IO_PLATFORM_SRC)
+OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC) -I$(LAUNCHER_PLATFORM_SRC)
+
+#
+# Create a dependency on libjli (Java Launcher Infrastructure)
+#
+# On UNIX, this is a relative dependency using $ORIGIN. Unfortunately, to
+# do this reliably on Linux takes a different syntax than Solaris.
+#
+# On Windows, this is done by using the same directory as the executable
+# itself, as with all the Windows libraries.
+#
+ifeq ($(PLATFORM), windows)
+ OTHER_LDLIBS += $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static/jli.lib
+ OTHER_LCF += -export:Agent_OnAttach
+ # equivalent of strcasecmp is stricmp on Windows
+ CPPFLAGS_COMMON += -Dstrcasecmp=stricmp
+else
+ LDFLAGS += -L $(LIBDIR)/$(LIBARCH)/jli
+ OTHER_LDLIBS += -ljli
+ OTHER_LDLIBS += -ldl
+ ifeq ($(PLATFORM), solaris)
+ LDFLAGS += -R \$$ORIGIN/jli
+ endif
+ ifeq ($(PLATFORM), linux)
+ LDFLAGS += -z origin
+ LDFLAGS += -Wl,--allow-shlib-undefined
+ LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/jli
+ endif
+endif
+
+#
+# Library to compile.
+#
+include $(BUILDDIR)/common/Library.gmk
+
+# We don't want to link against -ljava
+JAVALIB=
+
+#
+# Add to ambient vpath so we pick up the library files
+#
+vpath %.c $(SHARE_SRC)/instrument $(PLATFORM_SRC)/instrument
+vpath %.c $(IO_PLATFORM_SRC)
+
diff --git a/jdk/make/java/instrument/mapfile-vers b/jdk/make/java/instrument/mapfile-vers
new file mode 100644
index 0000000..d35d3a8
--- /dev/null
+++ b/jdk/make/java/instrument/mapfile-vers
@@ -0,0 +1,44 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ Agent_OnLoad;
+ Agent_OnAttach;
+ Java_sun_instrument_InstrumentationImpl_isModifiableClass0;
+ Java_sun_instrument_InstrumentationImpl_isRetransformClassesSupported0;
+ Java_sun_instrument_InstrumentationImpl_setHasRetransformableTransformers;
+ Java_sun_instrument_InstrumentationImpl_retransformClasses0;
+ Java_sun_instrument_InstrumentationImpl_getAllLoadedClasses0;
+ Java_sun_instrument_InstrumentationImpl_getInitiatedClasses0;
+ Java_sun_instrument_InstrumentationImpl_redefineClasses0;
+ Java_sun_instrument_InstrumentationImpl_getObjectSize0;
+ Java_sun_instrument_InstrumentationImpl_appendToClassLoaderSearch0;
+ Java_sun_instrument_InstrumentationImpl_setNativeMethodPrefixes;
+ local:
+ *;
+};
diff --git a/jdk/make/java/jar/Makefile b/jdk/make/java/jar/Makefile
new file mode 100644
index 0000000..2419997
--- /dev/null
+++ b/jdk/make/java/jar/Makefile
@@ -0,0 +1,39 @@
+#
+# Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = java.util.jar
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = java/util/jar
+
+#
+# Include
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/java/java/Exportedfiles.gmk b/jdk/make/java/java/Exportedfiles.gmk
new file mode 100644
index 0000000..b992142
--- /dev/null
+++ b/jdk/make/java/java/Exportedfiles.gmk
@@ -0,0 +1,178 @@
+#
+# Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# These are the names of JAVA classes for which we will make .h files.
+#
+ifneq ($(PLATFORM), windows)
+FILES_export = \
+ java/lang/Object.java \
+ java/lang/Class.java \
+ java/lang/Compiler.java \
+ java/lang/String.java \
+ java/lang/Thread.java \
+ java/lang/ThreadGroup.java \
+ java/lang/StrictMath.java \
+ java/lang/Number.java \
+ java/lang/Byte.java \
+ java/lang/Short.java \
+ java/lang/Integer.java \
+ java/lang/Long.java \
+ java/lang/Float.java \
+ java/lang/Double.java \
+ java/lang/Boolean.java \
+ java/lang/Character.java \
+ java/lang/System.java \
+ java/lang/ClassLoader.java \
+ java/lang/Runtime.java \
+ java/lang/SecurityManager.java \
+ java/lang/Shutdown.java \
+ java/lang/Package.java \
+ java/lang/ref/Finalizer.java \
+ java/lang/reflect/AccessibleObject.java \
+ java/lang/reflect/Field.java \
+ java/lang/reflect/Method.java \
+ java/lang/reflect/Constructor.java \
+ java/lang/reflect/InvocationTargetException.java \
+ java/lang/reflect/Array.java \
+ java/lang/reflect/Proxy.java \
+ java/security/AccessController.java \
+ java/util/Date.java \
+ java/util/TimeZone.java \
+ java/util/ResourceBundle.java \
+ java/util/concurrent/atomic/AtomicLong.java \
+ java/util/prefs/FileSystemPreferences.java \
+ java/io/Console.java \
+ java/io/FileDescriptor.java \
+ java/io/InputStream.java \
+ java/io/FileInputStream.java \
+ java/io/FileOutputStream.java \
+ java/io/PrintStream.java \
+ java/io/RandomAccessFile.java \
+ java/io/DataInputStream.java \
+ java/io/DataOutputStream.java \
+ java/io/File.java \
+ java/io/FileSystem.java \
+ java/io/UnixFileSystem.java \
+ java/io/ObjectInputStream.java \
+ java/io/ObjectOutputStream.java \
+ java/io/ObjectStreamClass.java \
+ java/lang/Throwable.java \
+ java/lang/NoClassDefFoundError.java \
+ java/lang/StringIndexOutOfBoundsException.java \
+ java/lang/OutOfMemoryError.java \
+ sun/misc/Version.java \
+ sun/misc/VM.java \
+ sun/misc/VMSupport.java \
+ sun/misc/Signal.java \
+ sun/misc/MessageUtils.java \
+ sun/misc/NativeSignalHandler.java \
+ sun/misc/GC.java \
+ sun/reflect/ConstantPool.java \
+ sun/reflect/NativeConstructorAccessorImpl.java \
+ sun/reflect/NativeMethodAccessorImpl.java \
+ sun/reflect/Reflection.java
+
+EXPORTED_inner = \
+ java.lang.ClassLoader$$NativeLibrary
+
+else # PLATFORM
+FILES_export = \
+ java/lang/Object.java \
+ java/lang/Class.java \
+ java/lang/Compiler.java \
+ java/lang/String.java \
+ java/lang/Thread.java \
+ java/lang/ThreadGroup.java \
+ java/lang/StrictMath.java \
+ java/lang/Number.java \
+ java/lang/Byte.java \
+ java/lang/Short.java \
+ java/lang/Integer.java \
+ java/lang/Long.java \
+ java/lang/Float.java \
+ java/lang/Double.java \
+ java/lang/Boolean.java \
+ java/lang/System.java \
+ java/lang/Package.java \
+ java/lang/ClassLoader.java \
+ java/lang/Runtime.java \
+ java/lang/SecurityManager.java \
+ java/lang/Shutdown.java \
+ java/lang/reflect/AccessibleObject.java \
+ java/lang/reflect/Field.java \
+ java/lang/reflect/Method.java \
+ java/lang/reflect/Constructor.java \
+ java/lang/reflect/InvocationTargetException.java \
+ java/lang/reflect/Array.java \
+ java/lang/reflect/Proxy.java \
+ java/lang/ref/Reference.java \
+ java/lang/ref/Finalizer.java \
+ java/util/Date.java \
+ java/util/Properties.java \
+ java/util/ResourceBundle.java \
+ java/util/TimeZone.java \
+ java/util/concurrent/atomic/AtomicLong.java \
+ java/util/prefs/WindowsPreferences.java \
+ java/util/prefs/WindowsPreferencesFactory.java \
+ java/util/logging/FileHandler.java \
+ java/io/Console.java \
+ java/io/FileSystem.java \
+ java/io/FileDescriptor.java \
+ java/io/InputStream.java \
+ java/io/FileInputStream.java \
+ java/io/FileOutputStream.java \
+ java/io/PrintStream.java \
+ java/io/RandomAccessFile.java \
+ java/io/DataInputStream.java \
+ java/io/DataOutputStream.java \
+ java/io/File.java \
+ java/io/ObjectOutputStream.java \
+ java/io/ObjectInputStream.java \
+ java/io/ObjectStreamClass.java \
+ java/lang/Throwable.java \
+ java/lang/NoClassDefFoundError.java \
+ java/lang/StringIndexOutOfBoundsException.java \
+ java/lang/OutOfMemoryError.java \
+ java/lang/ProcessImpl.java \
+ sun/misc/Version.java \
+ sun/misc/VM.java \
+ sun/misc/VMSupport.java \
+ sun/misc/GC.java \
+ sun/misc/Signal.java \
+ sun/misc/NativeSignalHandler.java \
+ sun/misc/MessageUtils.java \
+ java/security/AccessController.java \
+ sun/reflect/ConstantPool.java \
+ sun/reflect/NativeConstructorAccessorImpl.java \
+ sun/reflect/NativeMethodAccessorImpl.java \
+ sun/reflect/Reflection.java \
+ sun/security/provider/NativeSeedGenerator.java \
+ sun/io/Win32ErrorMode.java
+
+EXPORTED_inner = \
+ java.lang.ClassLoader$$NativeLibrary
+
+endif # PLATFORM
diff --git a/jdk/make/java/java/FILES_c.gmk b/jdk/make/java/java/FILES_c.gmk
new file mode 100644
index 0000000..b31c123
--- /dev/null
+++ b/jdk/make/java/java/FILES_c.gmk
@@ -0,0 +1,81 @@
+#
+# Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ AccessController.c \
+ Array.c \
+ String.c \
+ Class.c \
+ ClassLoader.c \
+ Compiler.c \
+ Console_md.c \
+ Double.c \
+ FileSystem_md.c \
+ FileDescriptor_md.c \
+ FileInputStream.c \
+ FileInputStream_md.c \
+ FileOutputStream_md.c \
+ Finalizer.c \
+ Float.c \
+ Object.c \
+ ObjectOutputStream.c \
+ ObjectInputStream.c \
+ ObjectStreamClass.c \
+ Package.c \
+ ProcessEnvironment_md.c \
+ Proxy.c \
+ RandomAccessFile.c \
+ RandomAccessFile_md.c \
+ ResourceBundle.c \
+ Runtime.c \
+ SecurityManager.c \
+ Shutdown.c \
+ StrictMath.c \
+ System.c \
+ Thread.c \
+ Throwable.c \
+ Signal.c \
+ NativeSignalHandler.c \
+ verify_stub.c \
+ io_util.c \
+ io_util_md.c \
+ jio.c \
+ logging.c \
+ jni_util.c \
+ jdk_util.c \
+ jdk_util_md.c \
+ check_version.c \
+ java_props_md.c \
+ DriverManager.c \
+ ConstantPool.c \
+ MessageUtils.c \
+ GC.c \
+ NativeAccessors.c \
+ Reflection.c \
+ Bits.c \
+ AtomicLong.c \
+ Version.c \
+ VM.c \
+ VMSupport.c
diff --git a/jdk/make/java/java/FILES_java.gmk b/jdk/make/java/java/FILES_java.gmk
new file mode 100644
index 0000000..b4a07fc
--- /dev/null
+++ b/jdk/make/java/java/FILES_java.gmk
@@ -0,0 +1,454 @@
+#
+# Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# This is the list of java classes that will be automatically built
+# from sources. See Exportedfiles.gmk for the list of files which
+# will generate header files
+#
+JAVA_JAVA_java = \
+ java/lang/Object.java \
+ java/lang/Class.java \
+ java/lang/Thread.java \
+ java/lang/Character.java \
+ java/lang/CharacterData.java \
+ sun/misc/ASCIICaseInsensitiveComparator.java \
+ sun/misc/VM.java \
+ sun/misc/Signal.java \
+ sun/misc/NativeSignalHandler.java \
+ java/lang/ThreadGroup.java \
+ java/lang/ThreadLocal.java \
+ java/lang/InheritableThreadLocal.java \
+ java/lang/String.java \
+ java/lang/ConditionalSpecialCasing.java \
+ java/lang/StringCoding.java \
+ java/lang/StringBuffer.java \
+ java/lang/StringBuilder.java \
+ java/lang/SuppressWarnings.java \
+ java/lang/AbstractStringBuilder.java \
+ java/lang/ClassLoader.java \
+ java/lang/AssertionStatusDirectives.java \
+ java/lang/Enum.java \
+ java/lang/StrictMath.java \
+ java/lang/Math.java \
+ sun/misc/FloatingDecimal.java \
+ sun/misc/FormattedFloatingDecimal.java \
+ java/lang/Number.java \
+ java/lang/Byte.java \
+ java/lang/Short.java \
+ java/lang/Integer.java \
+ java/lang/Long.java \
+ java/lang/Float.java \
+ java/lang/Double.java \
+ java/lang/Boolean.java \
+ java/lang/Void.java \
+ java/lang/Runnable.java \
+ java/lang/Cloneable.java \
+ java/lang/CharSequence.java \
+ java/lang/SecurityManager.java \
+ java/lang/Runtime.java \
+ java/lang/RuntimePermission.java \
+ java/lang/ApplicationShutdownHooks.java \
+ java/lang/Shutdown.java \
+ java/lang/Terminator.java \
+ java/lang/System.java \
+ java/lang/Compiler.java \
+ java/lang/Throwable.java \
+ java/lang/Exception.java \
+ java/lang/IllegalAccessException.java \
+ java/lang/InstantiationException.java \
+ java/lang/ClassNotFoundException.java \
+ java/lang/CloneNotSupportedException.java \
+ java/lang/InterruptedException.java \
+ java/lang/NoSuchFieldException.java \
+ java/lang/NoSuchMethodException.java \
+ java/lang/RuntimeException.java \
+ java/lang/ArithmeticException.java \
+ java/lang/ArrayStoreException.java \
+ java/lang/ClassCastException.java \
+ java/lang/IndexOutOfBoundsException.java \
+ java/lang/ArrayIndexOutOfBoundsException.java \
+ java/lang/StringIndexOutOfBoundsException.java \
+ java/lang/NegativeArraySizeException.java \
+ java/lang/NullPointerException.java \
+ java/lang/IllegalStateException.java \
+ java/lang/IllegalArgumentException.java \
+ java/lang/NumberFormatException.java \
+ java/lang/IllegalThreadStateException.java \
+ java/lang/IllegalMonitorStateException.java \
+ java/lang/SecurityException.java \
+ java/lang/TypeNotPresentException.java \
+ java/lang/EnumConstantNotPresentException.java \
+ java/lang/UnsupportedOperationException.java \
+ java/lang/Error.java \
+ java/lang/AssertionError.java \
+ java/lang/ThreadDeath.java \
+ java/lang/LinkageError.java \
+ java/lang/ClassCircularityError.java \
+ java/lang/ClassFormatError.java \
+ java/lang/UnsupportedClassVersionError.java \
+ java/lang/ExceptionInInitializerError.java \
+ java/lang/IncompatibleClassChangeError.java \
+ java/lang/AbstractMethodError.java \
+ java/lang/IllegalAccessError.java \
+ java/lang/InstantiationError.java \
+ java/lang/NoSuchFieldError.java \
+ java/lang/NoSuchMethodError.java \
+ java/lang/NoClassDefFoundError.java \
+ java/lang/UnsatisfiedLinkError.java \
+ java/lang/VerifyError.java \
+ java/lang/VirtualMachineError.java \
+ java/lang/InternalError.java \
+ java/lang/OutOfMemoryError.java \
+ java/lang/StackOverflowError.java \
+ java/lang/UnknownError.java \
+ java/lang/StackTraceElement.java \
+ java/lang/Package.java \
+ java/lang/Process.java \
+ java/lang/ProcessBuilder.java \
+ java/lang/ProcessEnvironment.java \
+ java/lang/ProcessImpl.java \
+ java/lang/Appendable.java \
+ java/lang/Comparable.java \
+ java/lang/Readable.java \
+ java/lang/Override.java \
+ java/lang/SuppressWarnings.java \
+ java/lang/ref/Reference.java \
+ java/lang/ref/SoftReference.java \
+ java/lang/ref/WeakReference.java \
+ java/lang/ref/FinalReference.java \
+ java/lang/ref/PhantomReference.java \
+ java/lang/ref/ReferenceQueue.java \
+ java/lang/ref/Finalizer.java \
+ java/util/BitSet.java \
+ java/util/Calendar.java \
+ java/util/GregorianCalendar.java \
+ sun/util/BuddhistCalendar.java \
+ java/util/JapaneseImperialCalendar.java \
+ sun/util/calendar/CalendarDate.java \
+ sun/util/calendar/ImmutableGregorianDate.java \
+ sun/util/calendar/CalendarSystem.java \
+ sun/util/calendar/Era.java \
+ sun/util/calendar/CalendarUtils.java \
+ sun/util/calendar/AbstractCalendar.java \
+ sun/util/calendar/BaseCalendar.java \
+ sun/util/calendar/Gregorian.java \
+ sun/util/calendar/JulianCalendar.java \
+ sun/util/calendar/LocalGregorianCalendar.java \
+ java/util/Currency.java \
+ java/util/Date.java \
+ java/util/Dictionary.java \
+ java/util/EmptyStackException.java \
+ java/util/Enumeration.java \
+ java/util/EventListener.java \
+ java/util/EventListenerProxy.java \
+ java/util/EventObject.java \
+ java/util/Formatter.java \
+ java/util/Formattable.java \
+ java/util/FormattableFlags.java \
+ java/util/IllegalFormatException.java \
+ java/util/DuplicateFormatFlagsException.java \
+ java/util/FormatFlagsConversionMismatchException.java \
+ java/util/IllegalFormatCodePointException.java \
+ java/util/IllegalFormatConversionException.java \
+ java/util/IllegalFormatFlagsException.java \
+ java/util/IllegalFormatPrecisionException.java \
+ java/util/IllegalFormatWidthException.java \
+ java/util/MissingFormatArgumentException.java \
+ java/util/MissingFormatWidthException.java \
+ java/util/UnknownFormatConversionException.java \
+ java/util/UnknownFormatFlagsException.java \
+ java/util/FormatterClosedException.java \
+ java/util/ListResourceBundle.java \
+ sun/util/EmptyListResourceBundle.java \
+ java/util/Locale.java \
+ java/util/LocaleISOData.java \
+ sun/util/LocaleServiceProviderPool.java \
+ sun/util/LocaleDataMetaInfo.java \
+ java/util/MissingResourceException.java \
+ java/util/NoSuchElementException.java \
+ java/util/Observable.java \
+ java/util/Observer.java \
+ java/util/Properties.java \
+ java/util/XMLUtils.java \
+ java/util/InvalidPropertiesFormatException.java \
+ java/util/PropertyPermission.java \
+ java/util/PropertyResourceBundle.java \
+ java/util/Random.java \
+ java/util/ResourceBundle.java \
+ sun/util/ResourceBundleEnumeration.java \
+ sun/util/CoreResourceBundleControl.java \
+ java/util/Scanner.java \
+ java/util/InputMismatchException.java \
+ java/util/Stack.java \
+ java/util/StringTokenizer.java \
+ java/util/TimeZone.java \
+ java/util/SimpleTimeZone.java \
+ sun/util/TimeZoneNameUtility.java \
+ sun/util/calendar/ZoneInfo.java \
+ sun/util/calendar/ZoneInfoFile.java \
+ java/util/TooManyListenersException.java \
+ java/util/Comparator.java \
+ java/util/Collections.java \
+ java/util/Iterator.java \
+ java/util/ListIterator.java \
+ java/util/Collection.java \
+ java/util/Set.java \
+ java/util/SortedSet.java \
+ java/util/NavigableSet.java \
+ java/util/List.java \
+ java/util/Queue.java \
+ java/util/Deque.java \
+ java/util/AbstractCollection.java \
+ java/util/AbstractSet.java \
+ java/util/HashSet.java \
+ java/util/LinkedHashSet.java \
+ java/util/TreeSet.java \
+ java/util/EnumSet.java \
+ java/util/RegularEnumSet.java \
+ java/util/JumboEnumSet.java \
+ java/util/AbstractList.java \
+ java/util/ArrayList.java \
+ java/util/Vector.java \
+ java/util/AbstractSequentialList.java \
+ java/util/LinkedList.java \
+ java/util/AbstractQueue.java \
+ java/util/PriorityQueue.java \
+ java/util/ArrayDeque.java \
+ java/util/Map.java \
+ java/util/SortedMap.java \
+ java/util/NavigableMap.java \
+ java/util/AbstractMap.java \
+ java/util/HashMap.java \
+ java/util/LinkedHashMap.java \
+ java/util/TreeMap.java \
+ java/util/Hashtable.java \
+ java/util/WeakHashMap.java \
+ java/util/IdentityHashMap.java \
+ java/util/EnumMap.java \
+ java/util/Arrays.java \
+ java/util/ConcurrentModificationException.java \
+ java/util/ServiceLoader.java \
+ java/util/ServiceConfigurationError.java \
+ java/util/Timer.java \
+ java/util/TimerTask.java \
+ java/util/UUID.java \
+ java/util/concurrent/AbstractExecutorService.java \
+ java/util/concurrent/ArrayBlockingQueue.java \
+ java/util/concurrent/BlockingDeque.java \
+ java/util/concurrent/BlockingQueue.java \
+ java/util/concurrent/BrokenBarrierException.java \
+ java/util/concurrent/Callable.java \
+ java/util/concurrent/CancellationException.java \
+ java/util/concurrent/CompletionService.java \
+ java/util/concurrent/ConcurrentHashMap.java \
+ java/util/concurrent/ConcurrentLinkedQueue.java \
+ java/util/concurrent/ConcurrentMap.java \
+ java/util/concurrent/ConcurrentNavigableMap.java \
+ java/util/concurrent/ConcurrentSkipListMap.java \
+ java/util/concurrent/ConcurrentSkipListSet.java \
+ java/util/concurrent/CopyOnWriteArrayList.java \
+ java/util/concurrent/CopyOnWriteArraySet.java \
+ java/util/concurrent/CountDownLatch.java \
+ java/util/concurrent/CyclicBarrier.java \
+ java/util/concurrent/DelayQueue.java \
+ java/util/concurrent/Delayed.java \
+ java/util/concurrent/Exchanger.java \
+ java/util/concurrent/ExecutionException.java \
+ java/util/concurrent/Executor.java \
+ java/util/concurrent/ExecutorService.java \
+ java/util/concurrent/ExecutorCompletionService.java \
+ java/util/concurrent/Executors.java \
+ java/util/concurrent/Future.java \
+ java/util/concurrent/FutureTask.java \
+ java/util/concurrent/LinkedBlockingDeque.java \
+ java/util/concurrent/LinkedBlockingQueue.java \
+ java/util/concurrent/PriorityBlockingQueue.java \
+ java/util/concurrent/RejectedExecutionException.java \
+ java/util/concurrent/RejectedExecutionHandler.java \
+ java/util/concurrent/RunnableFuture.java \
+ java/util/concurrent/RunnableScheduledFuture.java \
+ java/util/concurrent/ScheduledExecutorService.java \
+ java/util/concurrent/ScheduledFuture.java \
+ java/util/concurrent/ScheduledThreadPoolExecutor.java \
+ java/util/concurrent/Semaphore.java \
+ java/util/concurrent/SynchronousQueue.java \
+ java/util/concurrent/ThreadFactory.java \
+ java/util/concurrent/ThreadPoolExecutor.java \
+ java/util/concurrent/TimeUnit.java \
+ java/util/concurrent/TimeoutException.java \
+ java/util/concurrent/atomic/AtomicBoolean.java \
+ java/util/concurrent/atomic/AtomicInteger.java \
+ java/util/concurrent/atomic/AtomicIntegerArray.java \
+ java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java \
+ java/util/concurrent/atomic/AtomicLong.java \
+ java/util/concurrent/atomic/AtomicLongArray.java \
+ java/util/concurrent/atomic/AtomicLongFieldUpdater.java \
+ java/util/concurrent/atomic/AtomicMarkableReference.java \
+ java/util/concurrent/atomic/AtomicReference.java \
+ java/util/concurrent/atomic/AtomicReferenceArray.java \
+ java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java \
+ java/util/concurrent/atomic/AtomicStampedReference.java \
+ java/util/concurrent/locks/AbstractOwnableSynchronizer.java \
+ java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java \
+ java/util/concurrent/locks/AbstractQueuedSynchronizer.java \
+ java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java \
+ java/util/concurrent/locks/Condition.java \
+ java/util/concurrent/locks/Lock.java \
+ java/util/concurrent/locks/LockSupport.java \
+ java/util/concurrent/locks/ReadWriteLock.java \
+ java/util/concurrent/locks/ReentrantLock.java \
+ java/util/concurrent/locks/ReentrantReadWriteLock.java \
+ java/util/regex/Pattern.java \
+ java/util/regex/Matcher.java \
+ java/util/regex/MatchResult.java \
+ java/util/regex/ASCII.java \
+ java/util/regex/PatternSyntaxException.java \
+ java/util/prefs/Preferences.java \
+ java/util/prefs/AbstractPreferences.java \
+ java/util/prefs/PreferenceChangeEvent.java \
+ java/util/prefs/PreferenceChangeListener.java \
+ java/util/prefs/NodeChangeEvent.java \
+ java/util/prefs/NodeChangeListener.java \
+ java/util/prefs/BackingStoreException.java \
+ java/util/prefs/InvalidPreferencesFormatException.java \
+ java/util/prefs/PreferencesFactory.java \
+ java/util/prefs/Base64.java \
+ java/util/prefs/XmlSupport.java \
+ java/util/spi/CurrencyNameProvider.java \
+ java/util/spi/LocaleNameProvider.java \
+ java/util/spi/LocaleServiceProvider.java \
+ java/util/spi/TimeZoneNameProvider.java \
+ java/io/Closeable.java \
+ java/io/Flushable.java \
+ java/io/PipedInputStream.java \
+ java/io/PipedOutputStream.java \
+ java/io/IOException.java \
+ java/io/CharConversionException.java \
+ java/io/FileNotFoundException.java \
+ java/io/EOFException.java \
+ java/io/SyncFailedException.java \
+ java/io/UTFDataFormatException.java \
+ java/io/InterruptedIOException.java \
+ java/io/UnsupportedEncodingException.java \
+ java/io/DataInput.java \
+ java/io/DataOutput.java \
+ java/io/InputStream.java \
+ java/io/FileInputStream.java \
+ java/io/FilterInputStream.java \
+ java/io/BufferedInputStream.java \
+ java/io/DataInputStream.java \
+ java/io/ByteArrayInputStream.java \
+ java/io/PushbackInputStream.java \
+ java/io/SequenceInputStream.java \
+ java/io/StringBufferInputStream.java \
+ java/io/LineNumberInputStream.java \
+ java/io/OutputStream.java \
+ java/io/FileOutputStream.java \
+ java/io/FilterOutputStream.java \
+ java/io/BufferedOutputStream.java \
+ java/io/DataOutputStream.java \
+ java/io/ByteArrayOutputStream.java \
+ java/io/PrintStream.java \
+ java/io/RandomAccessFile.java \
+ java/io/StreamTokenizer.java \
+ java/io/DeleteOnExitHook.java \
+ java/io/File.java \
+ java/io/FileSystem.java \
+ java/io/FileDescriptor.java \
+ java/io/FilenameFilter.java \
+ java/io/FileFilter.java \
+ java/io/FilePermission.java \
+ java/io/Serializable.java \
+ java/io/Externalizable.java \
+ java/io/Bits.java \
+ java/io/ObjectInput.java \
+ java/io/ObjectInputStream.java \
+ java/io/ObjectInputValidation.java \
+ java/io/ObjectOutput.java \
+ java/io/ObjectOutputStream.java \
+ java/io/ObjectStreamClass.java \
+ java/io/ObjectStreamConstants.java \
+ java/io/ObjectStreamField.java \
+ java/io/SerializablePermission.java \
+ java/io/InvalidClassException.java \
+ java/io/InvalidObjectException.java \
+ java/io/NotActiveException.java \
+ java/io/NotSerializableException.java \
+ java/io/ObjectStreamException.java \
+ java/io/OptionalDataException.java \
+ java/io/StreamCorruptedException.java \
+ java/io/WriteAbortedException.java \
+ java/io/Reader.java \
+ java/io/BufferedReader.java \
+ java/io/LineNumberReader.java \
+ java/io/CharArrayReader.java \
+ java/io/FilterReader.java \
+ java/io/PushbackReader.java \
+ java/io/InputStreamReader.java \
+ java/io/FileReader.java \
+ java/io/PipedReader.java \
+ java/io/StringReader.java \
+ java/io/Writer.java \
+ java/io/BufferedWriter.java \
+ java/io/PrintWriter.java \
+ java/io/CharArrayWriter.java \
+ java/io/FilterWriter.java \
+ java/io/OutputStreamWriter.java \
+ java/io/FileWriter.java \
+ java/io/PipedWriter.java \
+ java/io/StringWriter.java \
+ java/io/Console.java \
+ java/io/ExpiringCache.java \
+ java/nio/charset/Charset.java \
+ java/nio/charset/CharsetDecoder.java \
+ java/nio/charset/CharsetEncoder.java \
+ java/nio/charset/UnmappableCharacterException.java \
+ java/nio/Bits.java \
+ java/nio/DirectByteBuffer.java \
+ java/nio/HeapByteBuffer.java \
+ java/nio/HeapCharBuffer.java \
+ java/security/AccessController.java \
+ java/security/ProtectionDomain.java \
+ java/net/URLClassLoader.java \
+ java/net/URLConnection.java \
+ sun/misc/Launcher.java \
+ sun/misc/MetaIndex.java \
+ sun/misc/URLClassPath.java \
+ sun/misc/Version.java \
+ sun/net/www/protocol/jar/Handler.java \
+ sun/net/www/protocol/jar/JarURLConnection.java \
+ sun/net/www/protocol/file/Handler.java \
+ sun/net/www/protocol/file/FileURLConnection.java \
+ sun/misc/FileURLMapper.java \
+ sun/misc/MessageUtils.java \
+ sun/misc/GC.java \
+ sun/misc/Service.java \
+ sun/misc/JavaLangAccess.java \
+ sun/misc/JavaIOAccess.java \
+ sun/misc/JavaIODeleteOnExitAccess.java \
+ sun/misc/JavaIOFileDescriptorAccess.java
+
+FILES_java = $(JAVA_JAVA_java)
diff --git a/jdk/make/java/java/Makefile b/jdk/make/java/java/Makefile
new file mode 100644
index 0000000..06e112e
--- /dev/null
+++ b/jdk/make/java/java/Makefile
@@ -0,0 +1,401 @@
+#
+# Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for core Java libraries
+# (java.lang, java.lang.ref, java.lang.reflect, java.io, java.util)
+#
+
+BUILDDIR = ../..
+PACKAGE = java.lang
+LIBRARY = java
+PRODUCT = java
+include $(BUILDDIR)/common/Defs.gmk
+
+# windows compiler flags
+ifeq ($(PLATFORM),windows)
+ OTHER_CFLAGS =
+ # Files built here do not compile with warning level 3 if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+ # build directly into BINDIR...
+ LIB_LOCATION = $(BINDIR)
+ # Exported functions
+ OTHER_LCF = -export:winFileHandleOpen -export:handleLseek
+endif
+
+OTHER_CFLAGS += -DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \
+ -DJDK_MINOR_VERSION='"$(JDK_MINOR_VERSION)"' \
+ -DJDK_MICRO_VERSION='"$(JDK_MICRO_VERSION)"' \
+ -DJDK_BUILD_NUMBER='"$(JDK_BUILD_NUMBER)"'
+
+ifdef JDK_UPDATE_VERSION
+OTHER_CFLAGS += -DJDK_UPDATE_VERSION='"$(JDK_UPDATE_VERSION)"'
+endif
+
+
+#
+# Files to compile.
+#
+include FILES_c.gmk
+include FILES_java.gmk
+include Exportedfiles.gmk
+
+ifeq ($(PLATFORM),windows)
+FILES_java += java/io/Win32FileSystem.java \
+ java/io/WinNTFileSystem.java \
+ java/util/prefs/WindowsPreferences.java \
+ java/util/prefs/WindowsPreferencesFactory.java
+
+FILES_c += ProcessImpl_md.c \
+ Win32FileSystem_md.c \
+ WinNTFileSystem_md.c \
+ canonicalize_md.c \
+ dirent_md.c \
+ TimeZone.c \
+ TimeZone_md.c \
+ WindowsPreferences.c \
+ sun/security/provider/WinCAPISeedGenerator.c \
+ sun/io/Win32ErrorMode.c
+
+else # PLATFORM
+FILES_java += java/lang/UNIXProcess.java \
+ java/io/UnixFileSystem.java \
+ java/util/prefs/FileSystemPreferences.java \
+ java/util/prefs/FileSystemPreferencesFactory.java \
+
+FILES_c += UNIXProcess_md.c \
+ UnixFileSystem_md.c \
+ canonicalize_md.c \
+ TimeZone.c \
+ TimeZone_md.c \
+ FileSystemPreferences.c
+
+INIT += $(GENSRCDIR)/java/lang/UNIXProcess.java
+
+endif # PLATFORM
+
+#
+# Make sure first rule does 'all'
+#
+default_rule: all
+
+#
+# Source files to generate before we try to compile anything
+#
+
+#
+# genlocales.gmk define rules to generate LocaleDataMetaInfo.java
+# which contains locale string list for sun.text.resources and
+# sun.util.resources.
+#
+include genlocales.gmk
+
+CLASSES_INIT = gencharsrc niosrc rbcontrolsrc genlocales
+
+niosrc: ; ($(CD) ../nio; $(MAKE) sources)
+
+gencharsrc: $(GENSRCDIR)/java/lang/CharacterData00.java \
+ $(GENSRCDIR)/java/lang/CharacterData01.java \
+ $(GENSRCDIR)/java/lang/CharacterData02.java \
+ $(GENSRCDIR)/java/lang/CharacterData0E.java \
+ $(GENSRCDIR)/java/lang/CharacterDataLatin1.java \
+ $(GENSRCDIR)/java/lang/CharacterDataUndefined.java \
+ $(GENSRCDIR)/java/lang/CharacterDataPrivateUse.java
+
+rbcontrolsrc: $(GENSRCDIR)/sun/util/CoreResourceBundleControl.java
+
+#
+# Add to the default C file search paths
+#
+vpath %.c $(PLATFORM_SRC)/native/java/lang:$(SHARE_SRC)/native/java/lang
+vpath %.c $(SHARE_SRC)/native/java/lang/ref
+vpath %.c $(SHARE_SRC)/native/java/lang/reflect
+vpath %.c $(SHARE_SRC)/native/java/io
+vpath %.c $(PLATFORM_SRC)/native/java/io
+vpath %.c $(SHARE_SRC)/native/java/nio
+vpath %.c $(SHARE_SRC)/native/java/security
+vpath %.c $(SHARE_SRC)/native/common
+vpath %.c $(SHARE_SRC)/native/sun/misc
+vpath %.c $(SHARE_SRC)/native/sun/reflect
+vpath %.c $(SHARE_SRC)/native/java/sql
+vpath %.c $(SHARE_SRC)/native/java/util
+vpath %.c $(SHARE_SRC)/native/java/util/concurrent/atomic
+vpath %.c $(PLATFORM_SRC)/native/common
+vpath %.c $(PLATFORM_SRC)/native/java/util
+vpath %.c $(PLATFORM_SRC)/native/sun/security/provider
+vpath %.c $(PLATFORM_SRC)/native/sun/io
+
+#
+# Includes the fdlibm header file.
+#
+OTHER_INCLUDES += -I$(SHARE_SRC)/native/java/lang/fdlibm/include
+
+#
+# Also include the io_util.h header file.
+#
+OTHER_INCLUDES += -I$(SHARE_SRC)/native/java/io
+OTHER_INCLUDES += -I$(PLATFORM_SRC)/native/java/io
+
+#
+# Also include the TimeZone_md.h header file.
+#
+OTHER_INCLUDES += -I$(PLATFORM_SRC)/native/java/util
+
+#
+# Is the altzone extern documented in ctime(3C) available?
+#
+ifneq ($(PLATFORM), windows)
+HAVE_ALTZONE=true
+endif
+
+ifeq ($(HAVE_ALTZONE),true)
+OTHER_CPPFLAGS += -DHAVE_ALTZONE
+endif
+
+#
+# System.c needs RELEASE.
+# java_props_md.c needs ARCH on non-Solaris platforms.
+#
+OTHER_CPPFLAGS += $(VERSION_DEFINES)
+
+#
+# Include name of LIBARCH
+#
+OTHER_CPPFLAGS += -DARCHPROPNAME='"$(ARCHPROP)"'
+
+#
+# Is the key in the call nl_langinfo(CODESET) called something other than
+# CODESET?
+#
+ifdef ALT_CODESET_KEY
+OTHER_CPPFLAGS += -DALT_CODESET_KEY=$(ALT_CODESET_KEY)
+endif
+
+#
+# Install .lib file.
+#
+INSTALL_DOT_LIB = true
+
+#
+# What to link?
+#
+ifeq ($(PLATFORM),windows)
+OTHER_LDLIBS += $(JVMLIB) -libpath:$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) fdlibm.lib \
+ -libpath:$(OBJDIR)/../../../verify/$(OBJDIRNAME) verify.lib
+else
+OTHER_LDLIBS += $(JVMLIB) -lverify $(LIBSOCKET) -lnsl -ldl \
+ -L$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) -lfdlibm.$(ARCH)
+endif
+
+#
+# Rules.
+#
+ifeq ($(PLATFORM), solaris)
+ ifneq ($(ARCH), amd64)
+ FILES_reorder += reorder-$(ARCH)
+ endif
+endif
+
+SUBDIRS = reflect
+all build:
+ $(SUBDIRS-loop)
+clean clobber::
+ $(SUBDIRS-loop)
+
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+ifeq ($(PLATFORM), solaris)
+ ifeq ($(CC_VER), 5.8)
+ ifndef REMOVE_ALL_WORKAROUNDS
+ CFLAGS_OPT/ObjectInputStream.o = -xO3 \
+ $(warning "WARNING: Using workaround for SS11 bug 6346242, on $@")
+ endif
+ endif
+endif
+
+ifneq ($(PLATFORM),windows)
+
+# UNIXProcess.java is different for solaris and linux. We need to copy
+# the correct UNIXProcess.java over to $(GENSRCDIR)/java/lang/.
+
+$(GENSRCDIR)/java/lang/UNIXProcess.java: \
+ $(PLATFORM_SRC)/classes/java/lang/UNIXProcess.java.$(PLATFORM)
+ $(install-file)
+
+clean::
+ $(RM) $(GENSRCDIR)/java/lang/UNIXProcess.java
+
+endif
+
+
+#
+# Because we can't link against ourselves!
+#
+JAVALIB =
+
+#
+# Special rules.
+#
+clean::
+ $(RM) -r $(CLASSHDRDIR)
+
+clobber::
+ $(RM) -r $(CLASSBINDIR)/java/io $(CLASSBINDIR)/java/lang \
+ $(CLASSBINDIR)/java/security $(CLASSBINDIR)/java/util \
+ $(CLASSBINDIR)/sun/misc
+
+#
+# Additional rule from sun/net/GNUmakefile to copy content-type.properties
+# file so that the MimeTable class won't complain while bootstrapping...
+#
+PROPS = content-types.properties
+
+#
+# Rule to copy calendars.properties file.
+#
+CAL_PROPS = calendars.properties
+
+#
+# Rule to copy tzmappings file on Windows
+#
+ifeq ($(PLATFORM), windows)
+TZMAP = $(LIBDIR)/tzmappings
+TZMAPFILE = $(PLATFORM_SRC)/lib/tzmappings
+
+$(TZMAP): $(TZMAPFILE)
+ $(install-file)
+ $(CHMOD) 444 $@
+endif
+
+build: $(LIBDIR)/$(PROPS) $(LIBDIR)/$(CAL_PROPS) $(TZMAP)
+
+$(LIBDIR)/$(PROPS): $(PLATFORM_SRC)/lib/$(PROPS)
+ $(install-file)
+
+$(LIBDIR)/$(CAL_PROPS): $(SHARE_SRC)/lib/$(CAL_PROPS)
+ $(install-file)
+
+clean::
+ $(RM) -r $(LIBDIR)/$(PROPS) $(TZMAP)
+
+#
+# Rules to create lib/currency.data
+#
+
+CURDATA = $(LIBDIR)/currency.data
+GENERATECURRENCYDATA_JARFILE = $(BUILDTOOLJARDIR)/generatecurrencydata.jar
+
+build: $(CURDATA)
+
+$(CURDATA): \
+ $(GENERATECURRENCYDATA_JARFILE) \
+ $(SHARE_SRC)/classes/java/util/CurrencyData.properties
+ $(RM) $(CURDATA)
+ $(BOOT_JAVA_CMD) -jar $(GENERATECURRENCYDATA_JARFILE) -o $@.temp \
+ < $(SHARE_SRC)/classes/java/util/CurrencyData.properties
+ $(MV) $@.temp $@
+ $(CHMOD) 444 $@
+
+clean::
+ $(RM) $(CURDATA)
+
+
+#
+# Rules to create $(GENSRCDIR)/sun/lang/CharacterData*.java
+#
+CHARACTERDATA = $(BUILDDIR)/tools/GenerateCharacter
+UNICODEDATA = $(BUILDDIR)/tools/UnicodeData
+
+GENERATECHARACTER_JARFILE = $(BUILDTOOLJARDIR)/generatecharacter.jar
+
+$(GENSRCDIR)/java/lang/CharacterDataLatin1.java \
+ $(GENSRCDIR)/java/lang/CharacterData00.java \
+ $(GENSRCDIR)/java/lang/CharacterData01.java \
+ $(GENSRCDIR)/java/lang/CharacterData02.java \
+ $(GENSRCDIR)/java/lang/CharacterData0E.java: \
+ $(wildcard $(CHARACTERDATA)/*) \
+ $(GENERATECHARACTER_JARFILE)
+ @$(prep-target)
+ $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) \
+ -template $(CHARACTERDATA)/CharacterDataLatin1.java.template \
+ -spec $(UNICODEDATA)/UnicodeData.txt \
+ -specialcasing $(UNICODEDATA)/SpecialCasing.txt \
+ -o $(GENSRCDIR)/java/lang/CharacterDataLatin1.java -string \
+ -usecharforbyte -latin1 8
+ $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 0 \
+ -template $(CHARACTERDATA)/CharacterData00.java.template \
+ -spec $(UNICODEDATA)/UnicodeData.txt \
+ -specialcasing $(UNICODEDATA)/SpecialCasing.txt \
+ -o $(GENSRCDIR)/java/lang/CharacterData00.java -string \
+ -usecharforbyte 11 4 1
+ $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 1 \
+ -template $(CHARACTERDATA)/CharacterData01.java.template \
+ -spec $(UNICODEDATA)/UnicodeData.txt \
+ -specialcasing $(UNICODEDATA)/SpecialCasing.txt \
+ -o $(GENSRCDIR)/java/lang/CharacterData01.java -string \
+ -usecharforbyte 11 4 1
+ $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 2 \
+ -template $(CHARACTERDATA)/CharacterData02.java.template \
+ -spec $(UNICODEDATA)/UnicodeData.txt \
+ -specialcasing $(UNICODEDATA)/SpecialCasing.txt \
+ -o $(GENSRCDIR)/java/lang/CharacterData02.java -string \
+ -usecharforbyte 11 4 1
+ $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 14 \
+ -template $(CHARACTERDATA)/CharacterData0E.java.template \
+ -spec $(UNICODEDATA)/UnicodeData.txt \
+ -specialcasing $(UNICODEDATA)/SpecialCasing.txt \
+ -o $(GENSRCDIR)/java/lang/CharacterData0E.java -string \
+ -usecharforbyte 11 4 1
+
+$(GENSRCDIR)/java/lang/%.java : $(CHARACTERDATA)/%.java.template
+ $(install-file)
+
+clean::
+ $(RM) $(GENSRCDIR)/java/lang/CharacterDataLatin1.java
+ $(RM) $(GENSRCDIR)/java/lang/CharacterData00.java
+ $(RM) $(GENSRCDIR)/java/lang/CharacterData01.java
+ $(RM) $(GENSRCDIR)/java/lang/CharacterData02.java
+ $(RM) $(GENSRCDIR)/java/lang/CharacterData0E.java
+ $(RM) $(GENSRCDIR)/java/lang/CharacterDataUndefined.java
+ $(RM) $(GENSRCDIR)/java/lang/CharacterDataPrivateUse.java
+
+#
+# End of rules to create $(GENSRCDIR)/java/lang/CharacterDataXX.java
+#
+
+#
+# Rule to precompile CoreResourceBundleControl.java
+#
+LOCALES_GEN_SH = localelist.sh
+
+$(GENSRCDIR)/sun/util/CoreResourceBundleControl.java: \
+ $(SHARE_SRC)/classes/sun/util/CoreResourceBundleControl-XLocales.java $(LOCALES_GEN_SH)
+ @$(prep-target)
+ NAWK=$(NAWK) SED=$(SED) $(SH) $(LOCALES_GEN_SH) "$(JRE_NONEXIST_LOCALES)" \
+ $< $@
+clean::
+ $(RM) $(GENSRCDIR)/sun/util/CoreResourceBundleControl.java
+
diff --git a/jdk/make/java/java/genlocales.gmk b/jdk/make/java/java/genlocales.gmk
new file mode 100644
index 0000000..05ad9f3
--- /dev/null
+++ b/jdk/make/java/java/genlocales.gmk
@@ -0,0 +1,91 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# This file defines rules to build the locales information for
+# resources in "sun.util.resources" & "sun.text.resources" packages
+#
+
+# Save the current FILES_java & FILES_compiled_properties variables
+
+FILES_java_orig := $(FILES_java)
+FILES_compiled_properties_orig := $(FILES_compiled_properties)
+
+
+# Since all the resources files are going to be compiled into class file format,
+# only FILES_java and FILES_compiled_properties variables will be picked up
+#
+# $(BUILDDIR)/java/util/FILES_java.gmk & $(BUILDDIR)/java/util/FILES_properties.gmk
+# contain "sun.util.resources" for European language support
+
+include $(BUILDDIR)/java/util/FILES_java.gmk
+include $(BUILDDIR)/java/util/FILES_properties.gmk
+
+Euro_Resources_java := $(FILES_java)
+Euro_Resources_properties := $(FILES_compiled_properties)
+
+# $(BUILDDIR)/java/text/FILES_java.gmk contains the "sun.text.resources" for
+# European language support
+
+include $(BUILDDIR)/java/text/FILES_java.gmk
+
+Euro_Resources_java += $(FILES_java)
+
+FILES_compiled_properties=
+
+# $(BUILDDIR)/sun/text/FILES_java.gmk & $(BUILDDIR)/sun/text/FILES_properties.gmk
+# contain both resources for Non-European language support
+
+include $(BUILDDIR)/sun/text/FILES_java.gmk
+include $(BUILDDIR)/sun/text/FILES_properties.gmk
+
+NonEuro_Resources_java := $(FILES_java)
+NonEuro_Resources_properties := $(FILES_compiled_properties)
+
+# Restore the orignal FILES_java & FILES_compiled_properties variables
+FILES_java := $(FILES_java_orig)
+FILES_compiled_properties := $(FILES_compiled_properties_orig)
+
+LocaleDataMetaInfo_Src=$(SHARE_SRC)/classes/sun/util/LocaleDataMetaInfo-XLocales.java
+LocaleDataMetaInfo_Dest=$(GENSRCDIR)/sun/util/LocaleDataMetaInfo.java
+LOCALEGEN_SH=localegen.sh
+RESOURCE_NAMES="FormatData CollationData TimeZoneNames LocaleNames CurrencyNames CalendarData"
+
+$(LocaleDataMetaInfo_Dest):$(LocaleDataMetaInfo_Src) $(LOCALEGEN_SH)
+ @$(RM) $@.tmp.euro $@.tmp.noneuro;
+ @$(prep-target)
+ @$(ECHO) $(subst .properties,'\n',$(Euro_Resources_properties)) > $@.tmp.euro;
+ @$(ECHO) $(subst .java,'\n',$(Euro_Resources_java)) >> $@.tmp.euro;
+ @$(ECHO) $(subst .properties,'\n',$(NonEuro_Resources_properties)) > $@.tmp.noneuro;
+ @$(ECHO) $(subst .java,'\n',$(NonEuro_Resources_java)) >> $@.tmp.noneuro;
+ NAWK=$(NAWK) SED=$(SED) $(SH) $(LOCALEGEN_SH) $(RESOURCE_NAMES) $@.tmp.euro \
+ $@.tmp.noneuro $< $@
+ @$(RM) $@.tmp.euro $@.tmp.noneuro;
+
+genlocales : $(LocaleDataMetaInfo_Dest)
+
+clean clobber::
+ $(RM) $(LocaleDataMetaInfo_Dest)
+
diff --git a/jdk/make/java/java/localegen.sh b/jdk/make/java/java/localegen.sh
new file mode 100644
index 0000000..70e2683
--- /dev/null
+++ b/jdk/make/java/java/localegen.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# This script is to generate the supported locale list string and replace the
+# LocaleDataMetaInfo-XLocales.java in <ws>/src/share/classes/sun/util
+#
+# NAWK & SED is passed in as environment variables.
+#
+
+# A list of resource base name list;
+RESOURCE_NAMES=$1
+
+# A list of European resources;
+EURO_FILES_LIST=$2
+
+# A list of non-European resources;
+NONEURO_FILES_LIST=$3
+
+INPUT_FILE=$4
+OUTPUT_FILE=$5
+
+localelist=
+getlocalelist() {
+ localelist=""
+ localelist=`$NAWK -F$1_ '{print $2}' $2 | sort`
+}
+
+sed_script="$SED -e \"s@^#warn .*@// -- This file was mechanically generated: Do not edit! -- //@\" "
+
+for FILE in $RESOURCE_NAMES
+do
+ getlocalelist $FILE $EURO_FILES_LIST
+ sed_script=$sed_script"-e \"s/#"$FILE"_EuroLocales#/$localelist/g\" "
+ getlocalelist $FILE $NONEURO_FILES_LIST
+ sed_script=$sed_script"-e \"s/#"$FILE"_NonEuroLocales#/$localelist/g\" "
+done
+
+sed_script=$sed_script"$INPUT_FILE > $OUTPUT_FILE"
+eval $sed_script
+
+
diff --git a/jdk/make/java/java/localelist.sh b/jdk/make/java/java/localelist.sh
new file mode 100644
index 0000000..9951a42
--- /dev/null
+++ b/jdk/make/java/java/localelist.sh
@@ -0,0 +1,109 @@
+#!/bin/sh
+
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# This script is to generate the supported locale list string and replace the
+# #LOCALE_LIST# in <ws>/src/share/classes/sun/util/CoreResourceBundleControl.java.
+#
+# NAWK & SED is passed in as environment variables.
+#
+LOCALE_LIST=$1
+INUT_FILE=$2
+OUTPUT_FILE=$3
+
+LOCALES=`(for I in $LOCALE_LIST; do echo $I;done) | sort | uniq`
+JAVA_LOCALES=
+
+toJavaLocale()
+{
+ NewLocale=`echo $1 | $NAWK '
+ BEGIN {
+ # The following values have to be consistent with java.util.Locale.
+ javalocales["en"] = "ENGLISH";
+ javalocales["fr"] = "FRENCH";
+ javalocales["de"] = "GERMAN";
+ javalocales["it"] = "ITALIAN";
+ javalocales["ja"] = "JAPANESE";
+ javalocales["ko"] = "KOREAN";
+ javalocales["zh"] = "CHINESE";
+ javalocales["zh_CN"] = "SIMPLIFIED_CHINESE";
+ javalocales["zh_TW"] = "TRADITIONAL_CHINESE";
+ javalocales["fr_FR"] = "FRANCE";
+ javalocales["de_DE"] = "GERMANY";
+ javalocales["it_IT"] = "ITALY";
+ javalocales["ja_JP"] = "JAPAN";
+ javalocales["ko_KR"] = "KOREA";
+ javalocales["en_GB"] = "UK";
+ javalocales["en_US"] = "US";
+ javalocales["en_CA"] = "CANADA";
+ javalocales["fr_CA"] = "CANADA_FRENCH";
+ }
+ {
+ if ($0 in javalocales) {
+ print " Locale." javalocales[$0];
+ } else {
+ split($0, a, "_");
+ if (a[3] != "") {
+ print " new Locale(\"" a[1] "\", \"" a[2] "\", \"" a[3] "\")";
+ } else if (a[2] != "") {
+ print " new Locale(\"" a[1] "\", \"" a[2] "\")";
+ } else {
+ print " new Locale(\"" a[1] "\")";
+ }
+ }
+ }'`
+
+ JAVA_LOCALES=$JAVA_LOCALES$NewLocale
+}
+
+# count the number of locales
+counter=0
+for i in $LOCALES
+do
+ counter=`expr $counter + 1`
+done
+
+index=0
+for locale in $LOCALES
+do
+ index=`expr $index + 1`;
+ if [ $index != $counter ]
+ then
+ toJavaLocale $locale
+ JAVA_LOCALES=$JAVA_LOCALES","
+ else
+ toJavaLocale $locale
+ fi
+done
+
+# replace the #LOCALE_LIST# in the precompiled CoreResourceBundleControl.java file.
+
+$SED -e "s@^#warn .*@// -- This file was mechanically generated: Do not edit! -- //@" \
+ -e "s/#LOCALE_LIST#/$JAVA_LOCALES/g" $2 > $3
+
+
+
diff --git a/jdk/make/java/java/mapfile-vers b/jdk/make/java/java/mapfile-vers
new file mode 100644
index 0000000..4599570
--- /dev/null
+++ b/jdk/make/java/java/mapfile-vers
@@ -0,0 +1,301 @@
+#
+# Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ JNI_OnLoad;
+ JNU_ThrowNoSuchMethodException;
+ JNU_CallStaticMethodByName;
+ JNU_CallMethodByName;
+ JNU_CallMethodByNameV;
+ JNU_ClassClass;
+ JNU_ClassObject;
+ JNU_ClassString;
+ JNU_ClassThrowable;
+ JNU_CopyObjectArray;
+ JNU_Equals;
+ JNU_GetEnv;
+ JNU_GetFieldByName;
+ JNU_GetStaticFieldByName;
+ JNU_GetStringPlatformChars;
+ JNU_IsInstanceOfByName;
+ JNU_MonitorWait;
+ JNU_NewObjectByName;
+ JNU_NewStringPlatform;
+ JNU_Notify;
+ JNU_NotifyAll;
+ JNU_PrintClass;
+ JNU_PrintString;
+ JNU_ReleaseStringPlatformChars;
+ JNU_SetFieldByName;
+ JNU_SetStaticFieldByName;
+ JNU_ThrowArrayIndexOutOfBoundsException;
+ JNU_ThrowByName;
+ JNU_ThrowByNameWithLastError;
+ JNU_ThrowClassNotFoundException;
+ JNU_ThrowIllegalAccessError;
+ JNU_ThrowIllegalAccessException;
+ JNU_ThrowIllegalArgumentException;
+ JNU_ThrowInstantiationException;
+ JNU_ThrowInternalError;
+ JNU_ThrowIOException;
+ JNU_ThrowIOExceptionWithLastError;
+ JNU_ThrowNoSuchFieldError;
+ JNU_ThrowNoSuchFieldException;
+ JNU_ThrowNoSuchMethodError;
+ JNU_ThrowNullPointerException;
+ JNU_ThrowNumberFormatException;
+ JNU_ThrowOutOfMemoryError;
+ JNU_ThrowStringIndexOutOfBoundsException;
+ JNU_ToString;
+
+ Java_java_io_FileDescriptor_initIDs;
+ Java_java_io_FileDescriptor_sync;
+ Java_java_io_FileInputStream_available;
+ Java_java_io_FileInputStream_close0;
+ Java_java_io_FileInputStream_initIDs;
+ Java_java_io_FileInputStream_open;
+ Java_java_io_FileInputStream_read;
+ Java_java_io_FileInputStream_readBytes;
+ Java_java_io_FileInputStream_skip;
+ Java_java_io_FileOutputStream_close0;
+ Java_java_io_FileOutputStream_initIDs;
+ Java_java_io_FileOutputStream_open;
+ Java_java_io_FileOutputStream_openAppend;
+ Java_java_io_FileOutputStream_write;
+ Java_java_io_FileOutputStream_writeBytes;
+ Java_java_io_FileSystem_getFileSystem;
+ Java_java_io_ObjectInputStream_bytesToDoubles;
+ Java_java_io_ObjectInputStream_bytesToFloats;
+ Java_java_io_ObjectInputStream_latestUserDefinedLoader;
+ Java_java_io_ObjectOutputStream_doublesToBytes;
+ Java_java_io_ObjectOutputStream_floatsToBytes;
+ Java_java_io_ObjectStreamClass_hasStaticInitializer;
+ Java_java_io_ObjectStreamClass_initNative;
+ Java_java_io_RandomAccessFile_close0;
+ Java_java_io_RandomAccessFile_getFilePointer;
+ Java_java_io_RandomAccessFile_initIDs;
+ Java_java_io_RandomAccessFile_length;
+ Java_java_io_RandomAccessFile_open;
+ Java_java_io_RandomAccessFile_read;
+ Java_java_io_RandomAccessFile_readBytes;
+ Java_java_io_RandomAccessFile_seek;
+ Java_java_io_RandomAccessFile_setLength;
+ Java_java_io_RandomAccessFile_write;
+ Java_java_io_RandomAccessFile_writeBytes;
+ Java_java_io_UnixFileSystem_canonicalize0;
+ Java_java_io_UnixFileSystem_checkAccess;
+ Java_java_io_UnixFileSystem_createDirectory;
+ Java_java_io_UnixFileSystem_createFileExclusively;
+ Java_java_io_UnixFileSystem_delete0;
+ Java_java_io_UnixFileSystem_getBooleanAttributes0;
+ Java_java_io_UnixFileSystem_getLastModifiedTime;
+ Java_java_io_UnixFileSystem_getLength;
+ Java_java_io_UnixFileSystem_getSpace;
+ Java_java_io_UnixFileSystem_initIDs;
+ Java_java_io_UnixFileSystem_list;
+ Java_java_io_UnixFileSystem_rename0;
+ Java_java_io_UnixFileSystem_setLastModifiedTime;
+ Java_java_io_UnixFileSystem_setReadOnly;
+ Java_java_io_UnixFileSystem_setPermission;
+ Java_java_lang_Class_forName0;
+ Java_java_lang_Class_getPrimitiveClass;
+ Java_java_lang_Class_isAssignableFrom;
+ Java_java_lang_Class_isInstance;
+ Java_java_lang_Class_registerNatives;
+ Java_java_lang_ClassLoader_findBootstrapClass;
+ Java_java_lang_ClassLoader_defineClass0;
+ Java_java_lang_ClassLoader_defineClass1;
+ Java_java_lang_ClassLoader_defineClass2;
+ Java_java_lang_ClassLoader_findLoadedClass0;
+ Java_java_lang_ClassLoader_resolveClass0;
+ Java_java_lang_ClassLoader_00024NativeLibrary_find;
+ Java_java_lang_ClassLoader_00024NativeLibrary_load;
+ Java_java_lang_ClassLoader_00024NativeLibrary_unload;
+ Java_java_lang_ClassLoader_registerNatives;
+ Java_java_lang_Compiler_registerNatives;
+ Java_java_lang_Double_longBitsToDouble;
+ Java_java_lang_Double_doubleToRawLongBits;
+ Java_java_lang_reflect_Proxy_defineClass0;
+ Java_java_lang_Shutdown_runAllFinalizers;
+ Java_java_lang_ref_Finalizer_invokeFinalizeMethod;
+ Java_java_lang_Float_intBitsToFloat;
+ Java_java_lang_Float_floatToRawIntBits;
+ Java_java_lang_StrictMath_IEEEremainder;
+ Java_java_lang_StrictMath_acos;
+ Java_java_lang_StrictMath_asin;
+ Java_java_lang_StrictMath_atan;
+ Java_java_lang_StrictMath_atan2;
+ Java_java_lang_StrictMath_ceil;
+ Java_java_lang_StrictMath_cos;
+ Java_java_lang_StrictMath_exp;
+ Java_java_lang_StrictMath_floor;
+ Java_java_lang_StrictMath_log;
+ Java_java_lang_StrictMath_log10;
+ Java_java_lang_StrictMath_pow;
+ Java_java_lang_StrictMath_sin;
+ Java_java_lang_StrictMath_sqrt;
+ Java_java_lang_StrictMath_cbrt;
+ Java_java_lang_StrictMath_tan;
+ Java_java_lang_StrictMath_cosh;
+ Java_java_lang_StrictMath_sinh;
+ Java_java_lang_StrictMath_tanh;
+ Java_java_lang_StrictMath_hypot;
+ Java_java_lang_StrictMath_log1p;
+ Java_java_lang_StrictMath_expm1;
+ Java_java_lang_Object_getClass;
+ Java_java_lang_Object_registerNatives;
+ Java_java_lang_Package_getSystemPackage0;
+ Java_java_lang_Package_getSystemPackages0;
+ Java_java_lang_ProcessEnvironment_environ;
+ Java_java_lang_reflect_Array_get;
+ Java_java_lang_reflect_Array_getBoolean;
+ Java_java_lang_reflect_Array_getByte;
+ Java_java_lang_reflect_Array_getChar;
+ Java_java_lang_reflect_Array_getDouble;
+ Java_java_lang_reflect_Array_getFloat;
+ Java_java_lang_reflect_Array_getInt;
+ Java_java_lang_reflect_Array_getLength;
+ Java_java_lang_reflect_Array_getLong;
+ Java_java_lang_reflect_Array_getShort;
+ Java_java_lang_reflect_Array_multiNewArray;
+ Java_java_lang_reflect_Array_newArray;
+ Java_java_lang_reflect_Array_set;
+ Java_java_lang_reflect_Array_setBoolean;
+ Java_java_lang_reflect_Array_setByte;
+ Java_java_lang_reflect_Array_setChar;
+ Java_java_lang_reflect_Array_setDouble;
+ Java_java_lang_reflect_Array_setFloat;
+ Java_java_lang_reflect_Array_setInt;
+ Java_java_lang_reflect_Array_setLong;
+ Java_java_lang_reflect_Array_setShort;
+ Java_java_lang_Runtime_freeMemory;
+ Java_java_lang_Runtime_maxMemory;
+ Java_java_lang_Runtime_gc;
+ Java_java_lang_Runtime_runFinalization0;
+ Java_java_lang_Runtime_totalMemory;
+ Java_java_lang_Runtime_traceInstructions;
+ Java_java_lang_Runtime_traceMethodCalls;
+ Java_java_lang_Runtime_availableProcessors;
+ Java_java_lang_SecurityManager_classDepth;
+ Java_java_lang_SecurityManager_classLoaderDepth0;
+ Java_java_lang_SecurityManager_currentClassLoader0;
+ Java_java_lang_SecurityManager_currentLoadedClass0;
+ Java_java_lang_SecurityManager_getClassContext;
+ Java_java_lang_Shutdown_halt0;
+ Java_java_lang_String_intern;
+ Java_java_lang_System_identityHashCode;
+ Java_java_lang_System_initProperties;
+ Java_java_lang_System_mapLibraryName;
+ Java_java_lang_System_registerNatives;
+ Java_java_lang_System_setErr0;
+ Java_java_lang_System_setIn0;
+ Java_java_lang_System_setOut0;
+ Java_java_lang_Thread_registerNatives;
+ Java_java_lang_Throwable_fillInStackTrace;
+ Java_java_lang_Throwable_getStackTraceDepth;
+ Java_java_lang_Throwable_getStackTraceElement;
+ Java_java_lang_UNIXProcess_initIDs;
+ Java_java_lang_UNIXProcess_waitForProcessExit;
+ Java_java_lang_UNIXProcess_forkAndExec;
+ Java_java_lang_UNIXProcess_destroyProcess;
+ Java_java_nio_Bits_copyFromByteArray;
+ Java_java_nio_Bits_copyToByteArray;
+ Java_java_nio_Bits_copyFromShortArray;
+ Java_java_nio_Bits_copyToShortArray;
+ Java_java_nio_Bits_copyFromIntArray;
+ Java_java_nio_Bits_copyToIntArray;
+ Java_java_nio_Bits_copyFromLongArray;
+ Java_java_nio_Bits_copyToLongArray;
+ Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2;
+ Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2Ljava_security_AccessControlContext_2;
+ Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2;
+ Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2Ljava_security_AccessControlContext_2;
+ Java_java_security_AccessController_getStackAccessControlContext;
+ Java_java_security_AccessController_getInheritedAccessControlContext;
+ Java_java_sql_DriverManager_getCallerClassLoader;
+ Java_java_util_ResourceBundle_getClassContext;
+ Java_java_util_TimeZone_getSystemTimeZoneID;
+ Java_java_util_TimeZone_getSystemGMTOffsetID;
+ Java_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8;
+ Java_java_util_prefs_FileSystemPreferences_chmod;
+ Java_java_util_prefs_FileSystemPreferences_lockFile0;
+ Java_java_util_prefs_FileSystemPreferences_unlockFile0;
+ Java_java_util_logging_FileHandler_isSetUID;
+ Java_sun_misc_MessageUtils_toStderr;
+ Java_sun_misc_MessageUtils_toStdout;
+ Java_sun_misc_NativeSignalHandler_handle0;
+ Java_sun_misc_Signal_findSignal;
+ Java_sun_misc_Signal_handle0;
+ Java_sun_misc_Signal_raise0;
+ Java_sun_reflect_ConstantPool_getClassAt0;
+ Java_sun_reflect_ConstantPool_getClassAtIfLoaded0;
+ Java_sun_reflect_ConstantPool_getDoubleAt0;
+ Java_sun_reflect_ConstantPool_getFieldAt0;
+ Java_sun_reflect_ConstantPool_getFieldAtIfLoaded0;
+ Java_sun_reflect_ConstantPool_getFloatAt0;
+ Java_sun_reflect_ConstantPool_getIntAt0;
+ Java_sun_reflect_ConstantPool_getLongAt0;
+ Java_sun_reflect_ConstantPool_getMemberRefInfoAt0;
+ Java_sun_reflect_ConstantPool_getMethodAt0;
+ Java_sun_reflect_ConstantPool_getMethodAtIfLoaded0;
+ Java_sun_reflect_ConstantPool_getSize0;
+ Java_sun_reflect_ConstantPool_getStringAt0;
+ Java_sun_reflect_ConstantPool_getUTF8At0;
+ Java_java_io_Console_istty;
+ Java_java_io_Console_encoding;
+ Java_java_io_Console_echo;
+ Java_sun_misc_GC_maxObjectInspectionAge;
+ Java_sun_reflect_NativeConstructorAccessorImpl_newInstance0;
+ Java_sun_reflect_NativeMethodAccessorImpl_invoke0;
+ Java_sun_reflect_Reflection_getCallerClass;
+ Java_sun_reflect_Reflection_getClassAccessFlags;
+ Java_sun_misc_Version_getJdkVersionInfo;
+ Java_sun_misc_Version_getJdkSpecialVersion;
+ Java_sun_misc_Version_getJvmVersionInfo;
+ Java_sun_misc_Version_getJvmSpecialVersion;
+ Java_sun_misc_VM_getThreadStateValues;
+ Java_sun_misc_VM_initialize;
+ Java_sun_misc_VMSupport_initAgentProperties;
+
+# Java_sun_misc_VM_getState; threads.c
+# Java_sun_misc_VM_threadsSuspended; threads.c
+# Java_sun_misc_VM_unsuspendSomeThreads; threads.c
+# Java_sun_misc_VM_unsuspendThreads; threads.c
+
+ # Outcalls from libjvm done using dlsym().
+
+ VerifyClassCodes;
+ VerifyClassCodesForMajorVersion;
+ NewStringPlatform;
+ GetStringPlatformChars;
+ Canonicalize;
+ JDK_GetVersionInfo0;
+
+ local:
+ *;
+};
diff --git a/jdk/make/java/java/reflect/Makefile b/jdk/make/java/java/reflect/Makefile
new file mode 100644
index 0000000..d28ecf2
--- /dev/null
+++ b/jdk/make/java/java/reflect/Makefile
@@ -0,0 +1,61 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for reflection and annotations
+#
+
+BUILDDIR = ../../..
+PACKAGE = java.lang.reflect
+PRODUCT = java
+
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile.
+#
+AUTO_FILES_JAVA_DIRS = java/lang/reflect sun/reflect
+
+#
+# Install .lib file.
+#
+INSTALL_DOT_LIB = true
+
+include $(BUILDDIR)/common/Classes.gmk
+
+#
+# Special rules.
+#
+
+subdirs: classes
+
+clean::
+ $(RM) -r $(CLASSHDRDIR)
+
+clobber::
+ $(RM) -r $(CLASSBINDIR)/java/lang/reflect \
+ $(CLASSBINDIR)/java/lang/annotatation
+
+.PHONY: clean clobber
diff --git a/jdk/make/java/java/reorder-i586 b/jdk/make/java/java/reorder-i586
new file mode 100644
index 0000000..6489abc
--- /dev/null
+++ b/jdk/make/java/java/reorder-i586
@@ -0,0 +1,110 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+text: .text%_init;
+text: .text%init64IO: OUTPUTDIR/tmp/java/java.lang/java/obj/UnixFileSystem_md.o;
+text: .text%JNI_OnLoad;
+text: .text%Canonicalize;
+text: .text%canonicalize;
+text: .text%collapse: OUTPUTDIR/tmp/java/java.lang/java/obj/canonicalize_md.o;
+text: .text%Java_java_lang_Object_registerNatives;
+text: .text%Java_java_lang_System_registerNatives;
+text: .text%Java_java_lang_Thread_registerNatives;
+text: .text%Java_java_security_AccessController_getStackAccessControlContext;
+text: .text%Java_java_security_AccessController_getInheritedAccessControlContext;
+text: .text%Java_java_lang_ClassLoader_registerNatives;
+text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2;
+text: .text%Java_java_lang_Class_registerNatives;
+text: .text%Java_java_lang_Class_getPrimitiveClass;
+text: .text%Java_java_lang_System_initProperties;
+text: .text%GetJavaProperties;
+text: .text%uname: OUTPUTDIR/tmp/java/java.lang/java/obj/java_props_md.o;
+text: .text%mapLookup: OUTPUTDIR/tmp/java/java.lang/java/obj/java_props_md.o;
+text: .text%setPathEnvironment: OUTPUTDIR/tmp/java/java.lang/java/obj/java_props_md.o;
+text: .text%JNU_NewStringPlatform;
+text: .text%JNU_CallStaticMethodByName;
+text: .text%NewStringPlatform;
+text: .text%Java_java_io_FileInputStream_initIDs;
+text: .text%Java_java_io_FileDescriptor_initIDs;
+text: .text%Java_java_io_FileOutputStream_initIDs;
+text: .text%Java_java_lang_System_setIn0;
+text: .text%Java_sun_reflect_Reflection_getCallerClass;
+text: .text%Java_java_lang_Class_forName0;
+text: .text%Java_java_lang_String_intern;
+text: .text%Java_sun_reflect_NativeConstructorAccessorImpl_newInstance0;
+text: .text%Java_java_lang_Throwable_fillInStackTrace;
+text: .text%Java_java_lang_System_setOut0;
+text: .text%Java_java_lang_System_setErr0;
+text: .text%Java_java_lang_Compiler_registerNatives;
+text: .text%Java_java_io_FileSystem_getFileSystem;
+text: .text%JNU_NewObjectByName;
+text: .text%Java_java_io_UnixFileSystem_initIDs;
+text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2;
+text: .text%Java_java_io_UnixFileSystem_list;
+text: .text%JNU_GetStringPlatformChars;
+text: .text%JNU_ReleaseStringPlatformChars;
+text: .text%JNU_ClassString;
+text: .text%JNU_CopyObjectArray;
+text: .text%Java_java_io_UnixFileSystem_canonicalize;
+text: .text%Java_java_io_UnixFileSystem_getBooleanAttributes0;
+text: .text%Java_java_lang_ClassLoader_findLoadedClass;
+text: .text%Java_java_lang_ClassLoader_findBootstrapClass;
+text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2Ljava_security_AccessControlContext_2;
+text: .text%Java_java_lang_System_mapLibraryName;
+text: .text%cpchars: OUTPUTDIR/tmp/java/java.lang/java/obj/System.o;
+text: .text%Java_java_lang_ClassLoader_00024NativeLibrary_load;
+text: .text%Java_java_lang_ClassLoader_00024NativeLibrary_find;
+text: .text%Java_java_lang_Float_floatToIntBits;
+text: .text%Java_java_lang_Double_doubleToLongBits;
+text: .text%Java_java_io_FileInputStream_open;
+text: .text%fileOpen;
+text: .text%Java_java_io_UnixFileSystem_getLength;
+text: .text%Java_java_io_FileInputStream_readBytes;
+text: .text%readBytes;
+text: .text%Java_java_io_FileInputStream_close0;
+text: .text%Java_java_lang_Object_getClass;
+text: .text%Java_java_lang_ClassLoader_defineClass0;
+text: .text%VerifyClassCodes;
+# Test Exit
+text: .text%Java_java_lang_Shutdown_halt;
+# Test Hello
+text: .text%Java_java_io_FileOutputStream_writeBytes;
+text: .text%writeBytes;
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%Java_java_util_ResourceBundle_getClassContext;
+text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2Ljava_security_AccessControlContext_2;
+text: .text%JNU_GetEnv;
+text: .text%Java_java_io_UnixFileSystem_checkAccess;
+text: .text%Java_sun_reflect_NativeMethodAccessorImpl_invoke0;
+text: .text%Java_java_lang_ref_Finalizer_invokeFinalizeMethod;
+text: .text%Java_java_io_FileInputStream_available;
+text: .text%Java_java_lang_reflect_Array_newArray;
+text: .text%Java_java_lang_Throwable_getStackTraceDepth;
+text: .text%Java_java_lang_Throwable_getStackTraceElement;
+text: .text%Java_java_lang_System_identityHashCode;
+text: .text%Java_sun_misc_Signal_findSignal;
+text: .text%Java_sun_misc_Signal_handle0;
+text: .text%JNU_NotifyAll;
+# Test LoadFrame
+text: .text%JNU_CallMethodByName;
+text: .text%JNU_CallMethodByNameV;
+text: .text%Java_java_util_logging_FileHandler_lockFile;
+text: .text%Java_java_io_FileOutputStream_open;
+text: .text%Java_java_io_UnixFileSystem_createDirectory;
+text: .text%Java_java_io_UnixFileSystem_getLastModifiedTime;
+text: .text%Java_java_util_prefs_FileSystemPreferences_lockFile0;
+text: .text%Java_java_io_UnixFileSystem_setLastModifiedTime;
+text: .text%Java_java_util_prefs_FileSystemPreferences_unlockFile0;
+text: .text%Java_java_io_FileOutputStream_close0;
+text: .text%Java_java_util_logging_FileHandler_unlockFile;
+# Test LoadJFrame
+text: .text%Java_java_lang_Class_isAssignableFrom;
+text: .text%Java_java_lang_Class_isInstance;
+# Test JHello
+# SwingSet
+text: .text%Java_java_util_TimeZone_getSystemTimeZoneID;
+text: .text%findJavaTZ_md;
+text: .text%Java_java_lang_StrictMath_log;
+text: .text%Java_java_lang_StrictMath_floor;
diff --git a/jdk/make/java/java/reorder-sparc b/jdk/make/java/java/reorder-sparc
new file mode 100644
index 0000000..22a178b
--- /dev/null
+++ b/jdk/make/java/java/reorder-sparc
@@ -0,0 +1,108 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+text: .text%init64IO: OUTPUTDIR/tmp/java/java.lang/java/obj/UnixFileSystem_md.o;
+text: .text%JNI_OnLoad;
+text: .text%Canonicalize;
+text: .text%canonicalize;
+text: .text%collapse: OUTPUTDIR/tmp/java/java.lang/java/obj/canonicalize_md.o;
+text: .text%Java_java_lang_Object_registerNatives;
+text: .text%Java_java_lang_System_registerNatives;
+text: .text%Java_java_lang_Thread_registerNatives;
+text: .text%Java_java_security_AccessController_getStackAccessControlContext;
+text: .text%Java_java_security_AccessController_getInheritedAccessControlContext;
+text: .text%Java_java_lang_ClassLoader_registerNatives;
+text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2;
+text: .text%Java_java_lang_Class_registerNatives;
+text: .text%Java_java_io_ObjectStreamClass_initNative;
+text: .text%Java_java_lang_Class_getPrimitiveClass;
+text: .text%Java_java_lang_System_initProperties;
+text: .text%GetJavaProperties;
+text: .text%JNU_NewStringPlatform;
+text: .text%initializeEncoding: OUTPUTDIR/tmp/java/java.lang/java/obj/jni_util.o;
+text: .text%JNU_CallStaticMethodByName;
+text: .text%newString646_US: OUTPUTDIR/tmp/java/java.lang/java/obj/jni_util.o;
+text: .text%NewStringPlatform;
+text: .text%Java_java_io_FileInputStream_initIDs;
+text: .text%Java_java_io_FileDescriptor_initIDs;
+text: .text%Java_java_io_FileOutputStream_initIDs;
+text: .text%Java_java_lang_System_setIn0;
+text: .text%Java_sun_reflect_Reflection_getCallerClass;
+text: .text%Java_java_lang_Class_forName0;
+text: .text%Java_java_lang_Object_getClass;
+text: .text%Java_sun_reflect_Reflection_getClassAccessFlags;
+text: .text%Java_sun_reflect_NativeConstructorAccessorImpl_newInstance0;
+text: .text%Java_java_lang_System_setOut0;
+text: .text%Java_java_lang_System_setErr0;
+text: .text%Java_java_lang_System_identityHashCode;
+text: .text%Java_sun_misc_Signal_findSignal;
+text: .text%Java_sun_misc_Signal_handle0;
+text: .text%Java_java_io_FileSystem_getFileSystem;
+text: .text%JNU_NewObjectByName;
+text: .text%Java_java_io_UnixFileSystem_initIDs;
+text: .text%Java_java_io_UnixFileSystem_canonicalize;
+text: .text%JNU_GetStringPlatformChars;
+text: .text%JNU_ReleaseStringPlatformChars;
+text: .text%Java_java_io_FileInputStream_open;
+text: .text%fileOpen;
+text: .text%Java_java_io_FileInputStream_readBytes;
+text: .text%readBytes;
+text: .text%Java_java_io_FileInputStream_available;
+text: .text%Java_java_io_FileInputStream_close0;
+text: .text%Java_java_lang_System_mapLibraryName;
+text: .text%Java_java_io_UnixFileSystem_getBooleanAttributes0;
+text: .text%statMode: OUTPUTDIR/tmp/java/java.lang/java/obj/UnixFileSystem_md.o;
+text: .text%Java_java_lang_ClassLoader_00024NativeLibrary_load;
+text: .text%Java_java_lang_Compiler_registerNatives;
+text: .text%Java_java_lang_ClassLoader_00024NativeLibrary_find;
+text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2;
+text: .text%Java_java_io_UnixFileSystem_list;
+text: .text%JNU_ClassString;
+text: .text%JNU_CopyObjectArray;
+text: .text%Java_java_lang_String_intern;
+text: .text%Java_java_lang_ClassLoader_findLoadedClass;
+text: .text%Java_java_lang_ClassLoader_findBootstrapClass;
+text: .text%Java_java_lang_Throwable_fillInStackTrace;
+text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2Ljava_security_AccessControlContext_2;
+text: .text%Java_java_io_UnixFileSystem_getLastModifiedTime;
+text: .text%Java_java_lang_Float_floatToIntBits;
+text: .text%Java_java_lang_Double_doubleToLongBits;
+text: .text%Java_java_io_UnixFileSystem_getLength;
+text: .text%Java_java_lang_ClassLoader_defineClass0;
+text: .text%VerifyClassCodes;
+# Test Exit
+text: .text%Java_java_lang_Shutdown_halt;
+# Test Hello
+text: .text%Java_java_io_FileOutputStream_writeBytes;
+text: .text%writeBytes;
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%Java_java_util_ResourceBundle_getClassContext;
+text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2Ljava_security_AccessControlContext_2;
+text: .text%JNU_GetEnv;
+text: .text%Java_java_io_UnixFileSystem_checkAccess;
+text: .text%Java_java_lang_reflect_Array_newArray;
+text: .text%Java_java_lang_Throwable_getStackTraceDepth;
+text: .text%Java_java_lang_Throwable_getStackTraceElement;
+text: .text%throwFileNotFoundException;
+text: .text%JNU_NotifyAll;
+# Test LoadFrame
+text: .text%Java_java_lang_ref_Finalizer_invokeFinalizeMethod;
+text: .text%JNU_CallMethodByName;
+text: .text%JNU_CallMethodByNameV;
+text: .text%Java_java_io_UnixFileSystem_createDirectory;
+text: .text%Java_java_util_prefs_FileSystemPreferences_lockFile0;
+text: .text%Java_java_io_UnixFileSystem_setLastModifiedTime;
+text: .text%Java_java_util_prefs_FileSystemPreferences_unlockFile0;
+# Test LoadJFrame
+text: .text%Java_sun_reflect_NativeMethodAccessorImpl_invoke0;
+text: .text%Java_java_lang_Class_isInstance;
+# Test JHello
+# SwingSet
+text: .text%Java_java_lang_Class_isAssignableFrom;
+text: .text%Java_java_util_TimeZone_getSystemTimeZoneID;
+text: .text%findJavaTZ_md;
+text: .text%Java_java_lang_StrictMath_log;
+text: .text%Java_java_lang_StrictMath_sqrt;
+text: .text%Java_java_lang_StrictMath_floor;
diff --git a/jdk/make/java/java/reorder-sparcv9 b/jdk/make/java/java/reorder-sparcv9
new file mode 100644
index 0000000..d5f49f2
--- /dev/null
+++ b/jdk/make/java/java/reorder-sparcv9
@@ -0,0 +1,104 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+text: .text%init64IO: OUTPUTDIR/tmp/java/java.lang/java/obj64/UnixFileSystem_md.o;
+text: .text%JNI_OnLoad;
+text: .text%Canonicalize;
+text: .text%canonicalize;
+text: .text%collapse: OUTPUTDIR/tmp/java/java.lang/java/obj64/canonicalize_md.o;
+text: .text%Java_java_lang_Object_registerNatives;
+text: .text%Java_java_lang_System_registerNatives;
+text: .text%Java_java_lang_Thread_registerNatives;
+text: .text%Java_java_security_AccessController_getStackAccessControlContext;
+text: .text%Java_java_security_AccessController_getInheritedAccessControlContext;
+text: .text%Java_java_lang_ClassLoader_registerNatives;
+text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2;
+text: .text%Java_java_lang_Class_registerNatives;
+text: .text%Java_java_lang_Class_getPrimitiveClass;
+text: .text%Java_java_lang_System_initProperties;
+text: .text%GetJavaProperties;
+text: .text%JNU_NewStringPlatform;
+text: .text%initializeEncoding: OUTPUTDIR/tmp/java/java.lang/java/obj64/jni_util.o;
+text: .text%JNU_CallStaticMethodByName;
+text: .text%newString8859_1: OUTPUTDIR/tmp/java/java.lang/java/obj64/jni_util.o;
+text: .text%NewStringPlatform;
+text: .text%Java_java_io_FileInputStream_initIDs;
+text: .text%Java_java_io_FileDescriptor_initIDs;
+text: .text%Java_java_io_FileOutputStream_initIDs;
+text: .text%Java_java_lang_System_setIn0;
+text: .text%Java_sun_reflect_Reflection_getCallerClass;
+text: .text%Java_java_lang_Class_forName0;
+text: .text%Java_java_lang_String_intern;
+text: .text%Java_java_lang_Float_floatToIntBits;
+text: .text%Java_java_lang_Double_doubleToLongBits;
+text: .text%Java_java_lang_ClassLoader_findLoadedClass;
+text: .text%Java_java_lang_ClassLoader_findBootstrapClass;
+text: .text%VerifyClassCodes;
+text: .text%Java_java_lang_Throwable_fillInStackTrace;
+text: .text%Java_java_lang_System_setOut0;
+text: .text%Java_java_lang_System_setErr0;
+text: .text%Java_java_lang_System_identityHashCode;
+text: .text%Java_sun_misc_Signal_findSignal;
+text: .text%Java_sun_misc_Signal_handle0;
+text: .text%Java_java_io_FileSystem_getFileSystem;
+text: .text%JNU_NewObjectByName;
+text: .text%Java_java_io_UnixFileSystem_initIDs;
+text: .text%Java_java_io_UnixFileSystem_canonicalize;
+text: .text%JNU_GetStringPlatformChars;
+text: .text%JNU_ReleaseStringPlatformChars;
+text: .text%Java_java_io_FileInputStream_open;
+text: .text%fileOpen;
+text: .text%Java_java_io_FileInputStream_readBytes;
+text: .text%readBytes;
+text: .text%Java_java_io_FileInputStream_available;
+text: .text%Java_java_io_FileInputStream_close0;
+text: .text%Java_java_lang_Compiler_registerNatives;
+text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2;
+text: .text%Java_java_io_UnixFileSystem_list;
+text: .text%JNU_ClassString;
+text: .text%JNU_CopyObjectArray;
+text: .text%Java_java_io_UnixFileSystem_getBooleanAttributes0;
+text: .text%statMode: OUTPUTDIR/tmp/java/java.lang/java/obj64/UnixFileSystem_md.o;
+text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2Ljava_security_AccessControlContext_2;
+text: .text%Java_java_lang_System_mapLibraryName;
+text: .text%Java_java_lang_ClassLoader_00024NativeLibrary_load;
+text: .text%Java_java_lang_ClassLoader_00024NativeLibrary_find;
+text: .text%Java_java_io_UnixFileSystem_getLength;
+text: .text%Java_java_lang_Object_getClass;
+text: .text%Java_java_lang_ClassLoader_defineClass0;
+# Test Exit
+text: .text%Java_java_lang_Shutdown_halt;
+# Test Hello
+text: .text%Java_java_io_FileOutputStream_writeBytes;
+text: .text%writeBytes;
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%Java_java_util_ResourceBundle_getClassContext;
+text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2Ljava_security_AccessControlContext_2;
+text: .text%JNU_GetEnv;
+text: .text%Java_java_io_UnixFileSystem_checkAccess;
+text: .text%Java_java_lang_ref_Finalizer_invokeFinalizeMethod;
+text: .text%Java_java_lang_reflect_Array_newArray;
+text: .text%Java_java_lang_Throwable_getStackTraceDepth;
+text: .text%Java_java_lang_Throwable_getStackTraceElement;
+text: .text%throwFileNotFoundException: OUTPUTDIR/tmp/java/java.lang/java/obj64/io_util.o;
+text: .text%JNU_NotifyAll;
+# Test LoadFrame
+text: .text%JNU_CallMethodByName;
+text: .text%JNU_CallMethodByNameV;
+text: .text%Java_java_io_UnixFileSystem_createDirectory;
+text: .text%Java_java_io_UnixFileSystem_getLastModifiedTime;
+text: .text%Java_java_util_prefs_FileSystemPreferences_lockFile0;
+text: .text%Java_java_io_UnixFileSystem_setLastModifiedTime;
+text: .text%Java_java_util_prefs_FileSystemPreferences_unlockFile0;
+# Test LoadJFrame
+text: .text%Java_java_lang_Class_isAssignableFrom;
+text: .text%Java_java_lang_Class_isInstance;
+# Test JHello
+# SwingSet
+text: .text%Java_java_util_TimeZone_getSystemTimeZoneID;
+text: .text%findJavaTZ_md;
+text: .text%Java_java_lang_StrictMath_log;
+text: .text%Java_java_lang_StrictMath_sqrt;
+text: .text%Java_java_lang_StrictMath_floor;
diff --git a/jdk/make/java/java_crw_demo/Makefile b/jdk/make/java/java_crw_demo/Makefile
new file mode 100644
index 0000000..2157e2f
--- /dev/null
+++ b/jdk/make/java/java_crw_demo/Makefile
@@ -0,0 +1,67 @@
+#
+# Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+LIBRARY = java_crw_demo
+PRODUCT = sun
+LIBRARY_OUTPUT = java_crw_demo
+
+# Configure the CFLAGS for this library.
+
+include $(BUILDDIR)/common/Defs.gmk
+
+SRCDIR=$(SHARE_SRC)/demo/jvmti/java_crw_demo
+
+# Use the mapfile-vers (See the mapfile located with this Makefile)
+FILES_m = mapfile-vers
+ifdef FILES_m
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+endif
+
+#
+# Files to compile.
+#
+FILES_c = java_crw_demo.c
+
+OTHER_INCLUDES = -I$(SRCDIR)
+
+#
+# This removes all asserts in the optimized version
+#
+CPPFLAGS_OPT += -DNDEBUG
+
+#
+# Library to compile.
+#
+include $(BUILDDIR)/common/Library.gmk
+
+# We don't want to link against -ljava
+JAVALIB=
+
+#
+# Add to ambient vpath so we pick up the library files
+#
+vpath %.c $(SRCDIR)
+
diff --git a/jdk/make/java/java_crw_demo/mapfile-vers b/jdk/make/java/java_crw_demo/mapfile-vers
new file mode 100644
index 0000000..2a23221
--- /dev/null
+++ b/jdk/make/java/java_crw_demo/mapfile-vers
@@ -0,0 +1,34 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ java_crw_demo;
+ java_crw_demo_classname;
+ local:
+ *;
+};
diff --git a/jdk/make/java/java_hprof_demo/Makefile b/jdk/make/java/java_hprof_demo/Makefile
new file mode 100644
index 0000000..7152943
--- /dev/null
+++ b/jdk/make/java/java_hprof_demo/Makefile
@@ -0,0 +1,125 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+LIBRARY = hprof
+PRODUCT = sun
+LIBRARY_OUTPUT = hprof_jvmti
+
+# Configure the CFLAGS for this library.
+
+FILES_m = mapfile-vers
+
+include $(BUILDDIR)/common/Defs.gmk
+
+_OPT=$(CC_HIGHEST_OPT)
+
+SRCDIR=$(SHARE_SRC)/demo/jvmti/hprof
+PSRCDIR=$(PLATFORM_SRC)/demo/jvmti/hprof
+
+# Use the mapfile-vers (See the mapfile located with this Makefile)
+ifdef FILES_m
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+endif
+
+#
+# Files to compile.
+#
+FILES_c = \
+ debug_malloc.c \
+ hprof_blocks.c \
+ hprof_check.c \
+ hprof_class.c \
+ hprof_cpu.c \
+ hprof_error.c \
+ hprof_event.c \
+ hprof_frame.c \
+ hprof_init.c \
+ hprof_io.c \
+ hprof_ioname.c \
+ hprof_listener.c \
+ hprof_loader.c \
+ hprof_md.c \
+ hprof_monitor.c \
+ hprof_object.c \
+ hprof_reference.c \
+ hprof_site.c \
+ hprof_stack.c \
+ hprof_string.c \
+ hprof_table.c \
+ hprof_tag.c \
+ hprof_tls.c \
+ hprof_trace.c \
+ hprof_tracker.c \
+ hprof_util.c
+
+OTHER_INCLUDES = -I$(SRCDIR) \
+ -I$(SHARE_SRC)/npt \
+ -I$(PLATFORM_SRC)/npt \
+ -I$(SHARE_SRC)/demo/jvmti/java_crw_demo
+
+ifeq ($(PLATFORM), windows)
+ OTHER_LDLIBS += wsock32.lib winmm.lib
+else
+ OTHER_LDLIBS += $(LIBSOCKET) -lnsl -ldl
+endif
+
+#
+# Tell library.gmk to copy the txt file first
+#
+INIT += $(LIBDIR)/jvm.hprof.txt
+
+#
+# This removes all asserts in the optimized version
+#
+CPPFLAGS_OPT += -DNDEBUG
+
+#
+# This puts logging code in
+#
+CPPFLAGS_DBG += -DHPROF_LOGGING
+
+#
+# Library to compile.
+#
+include $(BUILDDIR)/common/Library.gmk
+
+# We don't want to link against -ljava
+JAVALIB=
+
+#
+# Add to ambient vpath so we pick up the library files
+#
+vpath %.c $(SRCDIR):$(PSRCDIR)
+
+#
+# Install the hprof prelude
+#
+$(LIBDIR)/jvm.hprof.txt: $(SRCDIR)/jvm.hprof.txt
+ $(install-file)
+
+clean clobber::
+ $(RM) $(LIBDIR)/jvm.hprof.txt
+
diff --git a/jdk/make/java/java_hprof_demo/mapfile-vers b/jdk/make/java/java_hprof_demo/mapfile-vers
new file mode 100644
index 0000000..e817412
--- /dev/null
+++ b/jdk/make/java/java_hprof_demo/mapfile-vers
@@ -0,0 +1,34 @@
+#
+# Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ Agent_OnLoad;
+ Agent_OnUnload;
+ local:
+ *;
+};
diff --git a/jdk/make/java/jexec/Makefile b/jdk/make/java/jexec/Makefile
new file mode 100644
index 0000000..d013944
--- /dev/null
+++ b/jdk/make/java/jexec/Makefile
@@ -0,0 +1,72 @@
+#
+# Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building jexec, a wrapper for direct execution of JAR files
+# on UNIX systems.
+#
+
+BUILDDIR = ../..
+
+PACKAGE = java.jexec
+PRODUCT = sun
+PROGRAM = jexec
+
+include $(BUILDDIR)/common/Defs.gmk
+
+ifeq ($(COMPILE_APPROACH),batch)
+ override COMPILE_APPROACH = normal
+endif
+
+include $(BUILDDIR)/common/Rules.gmk
+
+JEXE_SRC = $(PLATFORM_SRC)/bin
+
+FILES_c = jexec.c
+FILES_o = $(patsubst %.c,$(OBJDIR)/%.o,$(FILES_c))
+
+vpath %.c $(JEXE_SRC)
+
+ifeq ($(PLATFORM), linux)
+ #
+ # On Linux jexec goes in lib, not lib/<arch>
+ #
+ LIB_LOCATION = $(LIBDIR)
+
+ #
+ # Also include the manifest_info.h header file.
+ #
+ OTHER_INCLUDES += -I$(SHARE_SRC)/bin
+endif # PLATFORM
+
+build: $(LIB_LOCATION)/$(PROGRAM)
+
+$(LIB_LOCATION)/$(PROGRAM):: $(FILES_o)
+ $(prep-target)
+ $(LINK_PRE_CMD) $(CC) $(LDFLAGS) $(FILES_o) $(CC_OBJECT_OUTPUT_FLAG)$@
+
+clean clobber::
+ $(RM) $(FILES_o) $(LIB_LOCATION)/$(PROGRAM)
+
diff --git a/jdk/make/java/jli/Makefile b/jdk/make/java/jli/Makefile
new file mode 100644
index 0000000..fb8868f
--- /dev/null
+++ b/jdk/make/java/jli/Makefile
@@ -0,0 +1,165 @@
+#
+# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Java Launcher Infrastructure Library (libjli)
+#
+# This library provides shared support for the Java launcher in all of
+# its manifestations (java, javaw, javac, ...).
+#
+BUILDDIR = ../..
+LIBRARY = jli
+PRODUCT = java
+
+#
+# Must be included before Defs.gmk to be functional.
+#
+# Note that for Windows, both a dynamic and static version are built.
+# Doing the compiles with the static library specified can be overridden
+# by the link step, but not the reverse.
+#
+MS_RUNTIME_STATIC = true
+
+include $(BUILDDIR)/common/Defs.gmk
+
+ZLIB_VERSION = 1.1.3
+ZIP_SRC = $(SHARE_SRC)/native/java/util/zip/zlib-$(ZLIB_VERSION)
+LAUNCHER_SHARE_SRC = $(SHARE_SRC)/bin
+LAUNCHER_PLATFORM_SRC = $(PLATFORM_SRC)/bin
+
+ifeq ($(ARCH_FAMILY), amd64)
+ERGO_FAMILY=i586
+else
+ERGO_FAMILY=$(ARCH_FAMILY)
+endif
+
+
+#
+# Files to compile.
+#
+FILES_c = \
+ java.c \
+ splashscreen_stubs.c \
+ java_md.c \
+ parse_manifest.c \
+ version_comp.c \
+ wildcard.c \
+ jli_util.c \
+ inflate.c \
+ infblock.c \
+ inftrees.c \
+ infcodes.c \
+ inffast.c \
+ infutil.c \
+ zadler32.c \
+ zutil.c
+
+ifneq ($(PLATFORM), windows)
+
+FILES_c += \
+ $(CTARGDIR)ergo.c \
+ $(CTARGDIR)ergo_$(ERGO_FAMILY).c
+endif
+
+
+# Names of arch directories
+LIBARCH_DEFINES = -DLIBARCHNAME='"$(LIBARCH)"'
+ifeq ($(PLATFORM), solaris)
+ LIBARCH_DEFINES += -DLIBARCH32NAME='"$(LIBARCH32)"'
+ LIBARCH_DEFINES += -DLIBARCH64NAME='"$(LIBARCH64)"'
+endif
+
+OTHER_CPPFLAGS += $(LIBARCH_DEFINES)
+
+
+ifneq ($(PLATFORM), windows) # UNIX systems
+ LIB_LOCATION = $(LIBDIR)/$(LIBARCH)/jli
+ # Note: its important to keep this order meaning -lc is the
+ # last library otherwise it could cause compatibility issues
+ # by pulling in SUNW_private symbols from libc
+ LDLIBS = -ldl -lc
+ifeq ($(USE_PTHREADS),true)
+ LDLIBS += -lpthread
+endif # USE_PTHREADS
+endif # PLATFORM
+
+ifeq ($(PLATFORM), windows)
+ EXTRA_LIBS = advapi32.lib \
+ user32.lib
+
+ JAVALIB =
+ OTHER_LCF = -export:JLI_Launch \
+ -export:JLI_ManifestIterate \
+ -export:JLI_SetTraceLauncher
+
+ # Files from zlib built here do not compile with warning level 3
+ # if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+endif
+
+OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC)
+OTHER_INCLUDES += -I$(LAUNCHER_PLATFORM_SRC)
+OTHER_INCLUDES += -I$(ZIP_SRC)
+
+#
+# Library to compile.
+#
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# On Windows, some executable objects need to be statically linked against
+# the jli library. Hence, we need both a standard library (archive) and
+# an import library (associated with a dll). These both usually have the
+# extension .LIB, so they need to be placed in different directories. The
+# import library is build (as usual) in the $(OBJDIR) directory while the
+# standard library is built in a "static" subdirectory. The standard library
+# is not delivered as part of the product, but is only needed as part of
+# the build process. The import library is built by the standard rules
+# in Library.gmk. The additional rules which follow build the standard
+# library.
+#
+ifeq ($(PLATFORM), windows)
+
+STATIC_LIBRARY_DIR = $(OBJDIR)/static
+STATIC_LIBRARY_NAME = $(LIBPREFIX)$(LIBRARY).lib
+STATIC_LIBRARY = $(STATIC_LIBRARY_DIR)/$(STATIC_LIBRARY_NAME)
+
+$(STATIC_LIBRARY_DIR): $(OBJDIR)
+ @$(prep-target)
+ @$(MKDIR) $(STATIC_LIBRARY_DIR)
+
+$(STATIC_LIBRARY): $(STATIC_LIBRARY_DIR)
+ @$(prep-target)
+ $(LIBEXE) -nologo -out:$@ $(FILES_o)
+
+library:: $(STATIC_LIBRARY)
+
+endif # PLATFORM
+
+#
+# Add to ambient vpath so we pick up the library files
+#
+vpath %.c $(LAUNCHER_SHARE_SRC) $(ZIP_SRC) $(LAUNCHER_PLATFORM_SRC)
diff --git a/jdk/make/java/jli/mapfile-vers b/jdk/make/java/jli/mapfile-vers
new file mode 100644
index 0000000..a9e8198
--- /dev/null
+++ b/jdk/make/java/jli/mapfile-vers
@@ -0,0 +1,35 @@
+#
+# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ JLI_Launch;
+ JLI_ManifestIterate;
+ JLI_SetTraceLauncher;
+ local:
+ *;
+};
diff --git a/jdk/make/java/jvm/Makefile b/jdk/make/java/jvm/Makefile
new file mode 100644
index 0000000..42b7563
--- /dev/null
+++ b/jdk/make/java/jvm/Makefile
@@ -0,0 +1,50 @@
+#
+# Copyright 1995-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Make the directories of include files shipped with the JDK.
+#
+
+FILES_h = $(INCLUDEDIR)/jni.h \
+ $(PLATFORM_INCLUDE)/jni_md.h \
+ $(INCLUDEDIR)/jvmti.h \
+ $(INCLUDEDIR)/classfile_constants.h
+
+$(INCLUDEDIR)/%.h: $(SHARE_SRC)/javavm/export/%.h
+ $(install-file)
+
+$(PLATFORM_INCLUDE)/%.h: $(PLATFORM_SRC)/javavm/export/%.h
+ $(install-file)
+
+all: build
+
+build: $(FILES_h)
+
+clean clobber::
+ $(RM) $(FILES_h)
+
diff --git a/jdk/make/java/logging/Makefile b/jdk/make/java/logging/Makefile
new file mode 100644
index 0000000..c6ed187
--- /dev/null
+++ b/jdk/make/java/logging/Makefile
@@ -0,0 +1,54 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = java.util.logging
+PRODUCT = java
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile.
+#
+AUTO_FILES_JAVA_DIRS = java/util/logging
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+RESOURCE_BUNDLES_COMPILED_PROPERTIES = \
+ sun/util/logging/resources/logging.properties
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+properties: $(LIBDIR)/logging.properties
+
+$(LIBDIR)/logging.properties: $(SHARE_SRC)/lib/logging.properties
+ $(install-file)
+
+build: properties
+
diff --git a/jdk/make/java/main/Makefile b/jdk/make/java/main/Makefile
new file mode 100644
index 0000000..4e90729
--- /dev/null
+++ b/jdk/make/java/main/Makefile
@@ -0,0 +1,41 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building java command line tools
+#
+
+BUILDDIR = ../..
+PRODUCT = java
+include $(BUILDDIR)/common/Defs.gmk
+
+ifeq ($(PLATFORM), windows)
+SUBDIRS = java javaw
+else
+SUBDIRS = java
+endif
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/java/main/java/Makefile b/jdk/make/java/main/java/Makefile
new file mode 100644
index 0000000..ad924f6
--- /dev/null
+++ b/jdk/make/java/main/java/Makefile
@@ -0,0 +1,68 @@
+#
+# Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PROGRAM = java
+PRODUCT = java
+
+#
+# Statically link java to avoid the dependency on msvcr71.dll. This
+# must be set before Defs.gmk is included.
+#
+MS_RUNTIME_STATIC = true
+
+#
+# Statically link java to avoid the dependency on jli.dll. This
+# must be set before Program.gmk is included.
+#
+STATIC_JLI = true
+
+include $(BUILDDIR)/common/Defs.gmk
+
+# Override the default version info with our own resource file (see 5106536)
+ifeq ($(PLATFORM), windows)
+LDLIBS_COMMON += user32.lib
+ifdef OPENJDK
+ RC_FLAGS += -i "$(PLATFORM_SRC)/resource/icons"
+else
+ RC_FLAGS += -i "$(CLOSED_SRC)/windows/native/sun/windows"
+endif
+ VERSIONINFO_RESOURCE = $(PLATFORM_SRC)/resource/java.rc
+endif
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Program.gmk
+OTHER_CPPFLAGS += -DEXPAND_CLASSPATH_WILDCARDS
+OTHER_CPPFLAGS += -DLAUNCHER_NAME=\"$(LAUNCHER_NAME)\"
+
+ifeq ($(PLATFORM), solaris)
+LDFLAGS += -R$(OPENWIN_LIB)
+endif
+
+ifeq ($(PLATFORM), solaris)
+LDFLAGS += -M mapfile-$(ARCH)
+endif
diff --git a/jdk/make/java/main/java/mapfile-amd64 b/jdk/make/java/main/java/mapfile-amd64
new file mode 100644
index 0000000..d3f5964
--- /dev/null
+++ b/jdk/make/java/main/java/mapfile-amd64
@@ -0,0 +1,39 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+#
+# Specify what global symbols we export. Note that we're not really
+# interested in declaring a version, simply scoping the file is sufficient.
+#
+
+{
+ global:
+ main; # Provides basic adb symbol offsets
+ environ; # Public symbols and required by Java run time
+ _environ;
+ __environ_lock;
+
+ local:
+ *;
+};
diff --git a/jdk/make/java/main/java/mapfile-i586 b/jdk/make/java/main/java/mapfile-i586
new file mode 100644
index 0000000..74dd9a4
--- /dev/null
+++ b/jdk/make/java/main/java/mapfile-i586
@@ -0,0 +1,48 @@
+#
+# Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+#
+# Specify what global symbols we export. Note that we're not really
+# interested in declaring a version, simply scoping the file is sufficient.
+#
+
+{
+ global:
+ main; # Provides basic adb symbol offsets
+ environ; # Public symbols and required by Java run time
+ _environ;
+ __environ_lock;
+ ___Argv; # The following are private, but as they are
+ _start; # exported from ctr1/crtn, the clever hacker
+ _init; # might know about them. However note, that
+ _fini; # their use is strictly not supported.
+ _lib_version;
+# _mcount;
+ __fsr;
+ __fsr_init_value;
+ __longdouble_used;
+
+ local:
+ *;
+};
diff --git a/jdk/make/java/main/java/mapfile-sparc b/jdk/make/java/main/java/mapfile-sparc
new file mode 100644
index 0000000..48ca836
--- /dev/null
+++ b/jdk/make/java/main/java/mapfile-sparc
@@ -0,0 +1,47 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# Specify what global symbols we export. Note that we're not really
+# interested in declaring a version, simply scoping the file is sufficient.
+#
+
+{
+ global:
+ main; # Provides basic adb symbol offsets
+ environ; # Public symbols and required by Java run time
+ _environ;
+ __environ_lock;
+ ___Argv; # The following are private, but as they are
+ _start; # exported from ctr1/crtn, the clever hacker
+ _init; # might know about them. However note, that
+ _fini; # their use is strictly not supported.
+ _lib_version;
+ __cg92_used;
+ __xargc;
+ __xargv;
+ __fsr_init_value;
+
+ local:
+ *;
+};
diff --git a/jdk/make/java/main/java/mapfile-sparcv9 b/jdk/make/java/main/java/mapfile-sparcv9
new file mode 100644
index 0000000..b74614e
--- /dev/null
+++ b/jdk/make/java/main/java/mapfile-sparcv9
@@ -0,0 +1,48 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Specify what global symbols we export. Note that we're not really
+# interested in declaring a version, simply scoping the file is sufficient.
+#
+
+{
+ global:
+ main; # Provides basic adb symbol offsets
+ environ; # Public symbols and required by Java run time
+ _environ;
+ __environ_lock;
+ ___Argv; # The following are private, but as they are
+ _start; # exported from ctr1/crtn, the clever hacker
+ _init; # might know about them. However note, that
+ _fini; # their use is strictly not supported.
+ _lib_version;
+ __xargc;
+ __xargv;
+ __fsr_init_value;
+
+ local:
+ *;
+};
diff --git a/jdk/make/java/main/javaw/Makefile b/jdk/make/java/main/javaw/Makefile
new file mode 100644
index 0000000..9afb5d0
--- /dev/null
+++ b/jdk/make/java/main/javaw/Makefile
@@ -0,0 +1,66 @@
+#
+# Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building javaw.exe (for windows)
+#
+
+BUILDDIR = ../../..
+PROGRAM = javaw
+PRODUCT = java
+
+#
+# Statically link javaw to avoid the dependency on msvcr71.dll. This
+# must be set before Defs.gmk is included.
+#
+MS_RUNTIME_STATIC = true
+
+#
+# Statically link javaw to avoid the dependency on jli.dll. This
+# must be set before Program.gmk is included.
+#
+STATIC_JLI = true
+
+include $(BUILDDIR)/common/Defs.gmk
+
+OTHER_CPPFLAGS += -DJAVAW
+LDLIBS_COMMON += user32.lib
+
+# Override the default version info with our own resource file (see 5106536)
+ifeq ($(PLATFORM), windows)
+ifdef OPENJDK
+ RC_FLAGS += -i "$(PLATFORM_SRC)/resource/icons"
+else
+ RC_FLAGS += -i "$(CLOSED_SRC)/windows/native/sun/windows"
+endif
+ VERSIONINFO_RESOURCE = $(PLATFORM_SRC)/resource/java.rc
+endif
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Program.gmk
+OTHER_CPPFLAGS += -DEXPAND_CLASSPATH_WILDCARDS
+OTHER_CPPFLAGS += -DLAUNCHER_NAME=\"$(LAUNCHER_NAME)\"
diff --git a/jdk/make/java/management/Exportedfiles.gmk b/jdk/make/java/management/Exportedfiles.gmk
new file mode 100644
index 0000000..3299b9f
--- /dev/null
+++ b/jdk/make/java/management/Exportedfiles.gmk
@@ -0,0 +1,42 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# These are the names of Java classes for which we will make .h files.
+#
+
+FILES_export = \
+ sun/management/ClassLoadingImpl.java \
+ sun/management/FileSystemImpl.java \
+ sun/management/Flag.java \
+ sun/management/GarbageCollectorImpl.java \
+ sun/management/GcInfoBuilder.java \
+ sun/management/HotSpotDiagnostic.java \
+ sun/management/HotspotThread.java \
+ sun/management/MemoryImpl.java \
+ sun/management/MemoryManagerImpl.java \
+ sun/management/MemoryPoolImpl.java \
+ sun/management/ThreadImpl.java \
+ sun/management/VMManagementImpl.java
diff --git a/jdk/make/java/management/FILES_c.gmk b/jdk/make/java/management/FILES_c.gmk
new file mode 100644
index 0000000..1ac574d
--- /dev/null
+++ b/jdk/make/java/management/FILES_c.gmk
@@ -0,0 +1,40 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ ClassLoadingImpl.c \
+ FileSystemImpl.c \
+ Flag.c \
+ GarbageCollectorImpl.c \
+ GcInfoBuilder.c \
+ HotSpotDiagnostic.c \
+ HotspotThread.c \
+ MemoryImpl.c \
+ MemoryManagerImpl.c \
+ MemoryPoolImpl.c \
+ ThreadImpl.c \
+ VMManagementImpl.c \
+ management.c
+
diff --git a/jdk/make/java/management/Makefile b/jdk/make/java/management/Makefile
new file mode 100644
index 0000000..4d39d51
--- /dev/null
+++ b/jdk/make/java/management/Makefile
@@ -0,0 +1,107 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = java.lang.management
+LIBRARY = management
+PRODUCT = java
+include $(BUILDDIR)/common/Defs.gmk
+
+MGMT_SRC = $(SHARE_SRC)/classes/java/lang/management
+SMGMT_SRC = $(SHARE_SRC)/classes/sun/management
+
+AGENTJAR = $(LIBDIR)/management-agent.jar
+MANIFEST = $(SMGMT_SRC)/manifest
+
+#
+# Use mapfile
+#
+FILES_m = mapfile-vers
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+#
+# Files to compile
+#
+include FILES_c.gmk
+
+AUTO_FILES_JAVA_DIRS = java/lang/management com/sun/management sun/management
+
+include Exportedfiles.gmk
+
+ifeq ($(PLATFORM),windows)
+
+FILES_c += OperatingSystem_md.c
+
+FILES_export += com/sun/management/OperatingSystem.java
+
+else # PLATFORM (i.e. solaris & linux)
+
+FILES_c += UnixOperatingSystem_md.c
+
+FILES_export += com/sun/management/UnixOperatingSystem.java
+endif # PLATFORM
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+RESOURCE_BUNDLES_COMPILED_PROPERTIES = sun/management/resources/agent.properties
+
+#
+# Find C source files
+#
+vpath %.c $(SHARE_SRC)/native/sun/management
+vpath %.c $(PLATFORM_SRC)/native/sun/management
+vpath %.c $(PLATFORM_SRC)/native/com/sun/management
+
+#
+# Access to management.h
+#
+
+OTHER_INCLUDES += \
+ -I$(SHARE_SRC)/native/sun/management
+
+ifeq ($(PLATFORM),windows)
+ OTHER_LDLIBS += $(JVMLIB)
+endif
+
+#
+# Library to compile.
+#
+include $(BUILDDIR)/common/Library.gmk
+
+$(AGENTJAR): $(LIBDIR) $(TEMPDIR)/manifest
+ $(BOOT_JAR_CMD) -cfm $(AGENTJAR) $(TEMPDIR)/manifest
+
+$(TEMPDIR)/manifest: $(MANIFEST)
+ $(install-file)
+
+build: $(AGENTJAR)
+
+clean clobber::
+ $(RM) -r $(CLASSDESTDIR)/java/management
+ $(RM) -r $(CLASSDESTDIR)/sun/management
+ $(RM) $(TEMPDIR)/manifest $(AGENTJAR)
+
diff --git a/jdk/make/java/management/mapfile-vers b/jdk/make/java/management/mapfile-vers
new file mode 100644
index 0000000..644c064
--- /dev/null
+++ b/jdk/make/java/management/mapfile-vers
@@ -0,0 +1,112 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define library interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_com_sun_management_UnixOperatingSystem_getCommittedVirtualMemorySize;
+ Java_com_sun_management_UnixOperatingSystem_getFreePhysicalMemorySize;
+ Java_com_sun_management_UnixOperatingSystem_getFreeSwapSpaceSize;
+ Java_com_sun_management_UnixOperatingSystem_getMaxFileDescriptorCount;
+ Java_com_sun_management_UnixOperatingSystem_getOpenFileDescriptorCount;
+ Java_com_sun_management_UnixOperatingSystem_getProcessCpuTime;
+ Java_com_sun_management_UnixOperatingSystem_getTotalPhysicalMemorySize;
+ Java_com_sun_management_UnixOperatingSystem_getTotalSwapSpaceSize;
+ Java_com_sun_management_UnixOperatingSystem_initialize;
+ Java_sun_management_ClassLoadingImpl_setVerboseClass;
+ Java_sun_management_FileSystemImpl_isAccessUserOnly0;
+ Java_sun_management_Flag_getAllFlagNames;
+ Java_sun_management_Flag_getFlags;
+ Java_sun_management_Flag_getInternalFlagCount;
+ Java_sun_management_Flag_initialize;
+ Java_sun_management_Flag_setLongValue;
+ Java_sun_management_Flag_setBooleanValue;
+ Java_sun_management_Flag_setStringValue;
+ Java_sun_management_GarbageCollectorImpl_getCollectionCount;
+ Java_sun_management_GarbageCollectorImpl_getCollectionTime;
+ Java_sun_management_GcInfoBuilder_fillGcAttributeInfo;
+ Java_sun_management_GcInfoBuilder_getLastGcInfo0;
+ Java_sun_management_GcInfoBuilder_getNumGcExtAttributes;
+ Java_sun_management_HotSpotDiagnostic_dumpHeap;
+ Java_sun_management_HotspotThread_getInternalThreadCount;
+ Java_sun_management_HotspotThread_getInternalThreadTimes0;
+ Java_sun_management_MemoryImpl_getMemoryManagers0;
+ Java_sun_management_MemoryImpl_getMemoryPools0;
+ Java_sun_management_MemoryImpl_getMemoryUsage0;
+ Java_sun_management_MemoryImpl_setVerboseGC;
+ Java_sun_management_MemoryManagerImpl_getMemoryPools0;
+ Java_sun_management_MemoryPoolImpl_getCollectionUsage0;
+ Java_sun_management_MemoryPoolImpl_getMemoryManagers0;
+ Java_sun_management_MemoryPoolImpl_getPeakUsage0;
+ Java_sun_management_MemoryPoolImpl_getUsage0;
+ Java_sun_management_MemoryPoolImpl_resetPeakUsage0;
+ Java_sun_management_MemoryPoolImpl_setCollectionThreshold0;
+ Java_sun_management_MemoryPoolImpl_setPoolCollectionSensor;
+ Java_sun_management_MemoryPoolImpl_setPoolUsageSensor;
+ Java_sun_management_MemoryPoolImpl_setUsageThreshold0;
+ Java_sun_management_ThreadImpl_dumpThreads0;
+ Java_sun_management_ThreadImpl_findDeadlockedThreads0;
+ Java_sun_management_ThreadImpl_findMonitorDeadlockedThreads0;
+ Java_sun_management_ThreadImpl_getThreadInfo0;
+ Java_sun_management_ThreadImpl_getThreads;
+ Java_sun_management_ThreadImpl_getThreadTotalCpuTime0;
+ Java_sun_management_ThreadImpl_getThreadUserCpuTime0;
+ Java_sun_management_ThreadImpl_resetContentionTimes0;
+ Java_sun_management_ThreadImpl_resetPeakThreadCount0;
+ Java_sun_management_ThreadImpl_setThreadContentionMonitoringEnabled0;
+ Java_sun_management_ThreadImpl_setThreadCpuTimeEnabled0;
+ Java_sun_management_VMManagementImpl_getAvailableProcessors;
+ Java_sun_management_VMManagementImpl_getClassInitializationTime;
+ Java_sun_management_VMManagementImpl_getClassLoadingTime;
+ Java_sun_management_VMManagementImpl_getClassVerificationTime;
+ Java_sun_management_VMManagementImpl_getDaemonThreadCount;
+ Java_sun_management_VMManagementImpl_getInitializedClassCount;
+ Java_sun_management_VMManagementImpl_getLiveThreadCount;
+ Java_sun_management_VMManagementImpl_getLoadedClassSize;
+ Java_sun_management_VMManagementImpl_getMethodDataSize;
+ Java_sun_management_VMManagementImpl_getPeakThreadCount;
+ Java_sun_management_VMManagementImpl_getProcessId;
+ Java_sun_management_VMManagementImpl_getSafepointCount;
+ Java_sun_management_VMManagementImpl_getSafepointSyncTime;
+ Java_sun_management_VMManagementImpl_getStartupTime;
+ Java_sun_management_VMManagementImpl_getTotalApplicationNonStoppedTime;
+ Java_sun_management_VMManagementImpl_getTotalClassCount;
+ Java_sun_management_VMManagementImpl_getTotalCompileTime;
+ Java_sun_management_VMManagementImpl_getTotalSafepointTime;
+ Java_sun_management_VMManagementImpl_getTotalThreadCount;
+ Java_sun_management_VMManagementImpl_getUnloadedClassCount;
+ Java_sun_management_VMManagementImpl_getUnloadedClassSize;
+ Java_sun_management_VMManagementImpl_getVerboseClass;
+ Java_sun_management_VMManagementImpl_getVerboseGC;
+ Java_sun_management_VMManagementImpl_getVersion0;
+ Java_sun_management_VMManagementImpl_getVmArguments0;
+ Java_sun_management_VMManagementImpl_initOptionalSupportFields;
+ Java_sun_management_VMManagementImpl_isThreadContentionMonitoringEnabled;
+ Java_sun_management_VMManagementImpl_isThreadCpuTimeEnabled;
+ JNI_OnLoad;
+ local:
+ *;
+};
diff --git a/jdk/make/java/math/Makefile b/jdk/make/java/math/Makefile
new file mode 100644
index 0000000..05cb9eb
--- /dev/null
+++ b/jdk/make/java/math/Makefile
@@ -0,0 +1,47 @@
+#
+# Copyright 1996-2003 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+
+PACKAGE = java.math
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile.
+#
+FILES_java = \
+ java/math/BigInteger.java \
+ java/math/MutableBigInteger.java \
+ java/math/SignedMutableBigInteger.java \
+ java/math/BitSieve.java \
+ java/math/BigDecimal.java \
+ java/math/MathContext.java \
+ java/math/RoundingMode.java
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/java/net/FILES_c.gmk b/jdk/make/java/net/FILES_c.gmk
new file mode 100644
index 0000000..2eb4daa
--- /dev/null
+++ b/jdk/make/java/net/FILES_c.gmk
@@ -0,0 +1,55 @@
+#
+# Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ DatagramPacket.c \
+ InetAddress.c \
+ Inet4Address.c \
+ Inet6Address.c \
+ NetworkInterface.c \
+ InetAddressImplFactory.c \
+ Inet4AddressImpl.c \
+ Inet6AddressImpl.c \
+ SocketInputStream.c \
+ SocketOutputStream.c \
+ net_util.c \
+ net_util_md.c \
+ ResolverConfigurationImpl.c \
+ DefaultProxySelector.c
+
+ifeq ($(PLATFORM), linux)
+ FILES_c += linux_close.c
+endif
+
+ifeq ($(PLATFORM), windows)
+ FILES_c += TwoStacksPlainSocketImpl.c
+ FILES_c += DualStackPlainSocketImpl.c
+ FILES_c += TwoStacksPlainDatagramSocketImpl.c
+ FILES_c += DualStackPlainDatagramSocketImpl.c
+else
+ FILES_c += PlainSocketImpl.c
+ FILES_c += PlainDatagramSocketImpl.c
+endif
+
diff --git a/jdk/make/java/net/Makefile b/jdk/make/java/net/Makefile
new file mode 100644
index 0000000..6218c63
--- /dev/null
+++ b/jdk/make/java/net/Makefile
@@ -0,0 +1,120 @@
+#
+# Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = java.net
+LIBRARY = net
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+include FILES_c.gmk
+
+AUTO_FILES_JAVA_DIRS = java/net
+
+ifeq ($(PLATFORM), windows)
+ # Windows 9x module only needed on 32-bit build
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ FILES_c += NetworkInterface_win9x.c
+ endif
+ FILES_c += NTLMAuthSequence.c
+ FILES_c += NetworkInterface_winXP.c
+endif
+
+FILES_export = \
+ java/net/Socket.java \
+ java/net/SocketOptions.java \
+ java/net/SocketImpl.java \
+ java/net/AbstractPlainSocketImpl.java \
+ java/net/PlainSocketImpl.java \
+ java/net/ServerSocket.java \
+ java/net/InetAddress.java \
+ java/net/Inet4Address.java \
+ java/net/Inet6Address.java \
+ java/net/InetAddressImpl.java \
+ java/net/Inet4AddressImpl.java \
+ java/net/Inet6AddressImpl.java \
+ java/net/NetworkInterface.java \
+ java/net/SocketInputStream.java \
+ java/net/SocketOutputStream.java \
+ java/net/DefaultDatagramSocketImplFactory.java \
+ java/net/DatagramPacket.java \
+ java/net/DatagramSocket.java \
+ java/net/DatagramSocketImpl.java \
+ java/net/AbstractPlainDatagramSocketImpl.java \
+ java/net/MulticastSocket.java \
+ java/net/UnknownHostException.java \
+ java/net/ProtocolException.java \
+ sun/net/spi/DefaultProxySelector.java
+
+ifeq ($(PLATFORM), windows)
+ FILES_export += java/net/TwoStacksPlainSocketImpl.java
+ FILES_export += java/net/DualStackPlainSocketImpl.java
+ FILES_export += java/net/TwoStacksPlainDatagramSocketImpl.java
+ FILES_export += java/net/DualStackPlainDatagramSocketImpl.java
+else
+ FILES_export += java/net/PlainDatagramSocketImpl.java
+endif
+
+#
+# Find platform specific native code
+#
+vpath %.c $(PLATFORM_SRC)/native/sun/net/dns $(PLATFORM_SRC)/native/sun/net/www/protocol/http $(PLATFORM_SRC)/native/sun/net/spi
+
+#
+# Include rules
+#
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+include $(BUILDDIR)/common/Library.gmk
+
+ifeq ($(PLATFORM), windows)
+ OTHER_LDLIBS = ws2_32.lib $(JVMLIB)
+ # Will not compile at warning level 3 if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+else
+ OTHER_LDLIBS = $(LIBSOCKET) -lnsl -ldl $(JVMLIB)
+endif
+ifeq ($(PLATFORM), linux)
+ OTHER_LDLIBS += -lpthread
+endif
+
+CLASSES.export += java.lang.Integer java.io.FileDescriptor java.net.InetAddressImplFactory java.net.Inet4AddressImpl java.net.Inet6AddressImpl
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+
+properties: $(LIBDIR) $(LIBDIR)/net.properties
+
+$(LIBDIR)/net.properties: $(SHARE_SRC)/lib/net.properties
+ @$(RM) $@
+ $(CP) $< $@
+
+build: properties
+
diff --git a/jdk/make/java/net/mapfile-vers b/jdk/make/java/net/mapfile-vers
new file mode 100644
index 0000000..86cb351
--- /dev/null
+++ b/jdk/make/java/net/mapfile-vers
@@ -0,0 +1,107 @@
+#
+# Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ JNI_OnLoad;
+ Java_java_net_PlainSocketImpl_socketListen;
+ Java_java_net_PlainDatagramSocketImpl_getTTL;
+ Java_java_net_PlainDatagramSocketImpl_init;
+ Java_java_net_SocketOutputStream_socketWrite0;
+ Java_java_net_PlainSocketImpl_socketCreate;
+ Java_java_net_PlainSocketImpl_socketAvailable;
+ Java_java_net_PlainDatagramSocketImpl_join;
+ Java_java_net_PlainDatagramSocketImpl_socketGetOption;
+ Java_java_net_InetAddress_init;
+ Java_java_net_Inet4Address_init;
+ Java_java_net_Inet6Address_init;
+ Java_java_net_PlainDatagramSocketImpl_setTTL;
+ Java_java_net_PlainDatagramSocketImpl_socketSetOption;
+ Java_java_net_PlainDatagramSocketImpl_bind0;
+ Java_java_net_PlainSocketImpl_socketAccept;
+ Java_java_net_DatagramPacket_init;
+ Java_java_net_PlainDatagramSocketImpl_leave;
+ Java_java_net_SocketInputStream_socketRead0;
+ Java_java_net_InetAddressImplFactory_isIPv6Supported;
+ Java_java_net_Inet4AddressImpl_getLocalHostName;
+ Java_java_net_Inet4AddressImpl_lookupAllHostAddr;
+ Java_java_net_Inet4AddressImpl_getHostByAddr;
+ Java_java_net_Inet4AddressImpl_isReachable0;
+ Java_java_net_Inet6AddressImpl_getLocalHostName;
+ Java_java_net_Inet6AddressImpl_lookupAllHostAddr;
+ Java_java_net_Inet6AddressImpl_getHostByAddr;
+ Java_java_net_Inet6AddressImpl_isReachable0;
+ Java_java_net_NetworkInterface_init;
+ Java_java_net_NetworkInterface_getByName0;
+ Java_java_net_NetworkInterface_getByIndex;
+ Java_java_net_NetworkInterface_getByInetAddress0;
+ Java_java_net_NetworkInterface_getAll;
+ Java_java_net_NetworkInterface_isUp0;
+ Java_java_net_NetworkInterface_isLoopback0;
+ Java_java_net_NetworkInterface_isP2P0;
+ Java_java_net_NetworkInterface_supportsMulticast0;
+ Java_java_net_NetworkInterface_getMacAddr0;
+ Java_java_net_NetworkInterface_getMTU0;
+ Java_java_net_PlainDatagramSocketImpl_send;
+ Java_java_net_PlainSocketImpl_socketClose0;
+ Java_java_net_SocketOutputStream_init;
+ Java_java_net_PlainDatagramSocketImpl_peek;
+ Java_java_net_PlainDatagramSocketImpl_peekData;
+ Java_java_net_PlainSocketImpl_socketSetOption;
+ Java_java_net_PlainSocketImpl_socketSendUrgentData;
+ Java_java_net_PlainDatagramSocketImpl_datagramSocketCreate;
+ Java_java_net_PlainSocketImpl_socketGetOption;
+ Java_java_net_PlainDatagramSocketImpl_receive0;
+ Java_java_net_PlainDatagramSocketImpl_connect0;
+ Java_java_net_PlainDatagramSocketImpl_disconnect0;
+ Java_java_net_PlainDatagramSocketImpl_datagramSocketClose;
+ Java_java_net_PlainSocketImpl_initProto;
+ Java_java_net_PlainSocketImpl_socketBind;
+ Java_java_net_PlainSocketImpl_socketShutdown;
+ Java_java_net_SocketInputStream_init;
+ Java_java_net_PlainSocketImpl_socketConnect;
+ Java_java_net_PlainDatagramSocketImpl_getTimeToLive;
+ Java_java_net_PlainDatagramSocketImpl_setTimeToLive;
+ Java_sun_net_dns_ResolverConfigurationImpl_localDomain0;
+ Java_sun_net_dns_ResolverConfigurationImpl_fallbackDomain0;
+ Java_sun_net_spi_DefaultProxySelector_init;
+ Java_sun_net_spi_DefaultProxySelector_getSystemProxy;
+ NET_AllocSockaddr;
+ NET_SockaddrToInetAddress;
+ NET_SockaddrEqualsInetAddress;
+ NET_InetAddressToSockaddr;
+ NET_GetPortFromSockaddr;
+ NET_SetSockOpt;
+ NET_GetSockOpt;
+ NET_Bind;
+ NET_MapSocketOption;
+ NET_Wait;
+ ipv6_available;
+
+ local:
+ *;
+};
diff --git a/jdk/make/java/nio/Exportedfiles.gmk b/jdk/make/java/nio/Exportedfiles.gmk
new file mode 100644
index 0000000..49c4e24
--- /dev/null
+++ b/jdk/make/java/nio/Exportedfiles.gmk
@@ -0,0 +1,46 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# These are the names of Java classes for which we will make .h files.
+#
+
+FILES_export = \
+ java/net/SocketOptions.java \
+ java/nio/MappedByteBuffer.java \
+ sun/nio/ch/DatagramChannelImpl.java \
+ sun/nio/ch/DatagramDispatcher.java \
+ sun/nio/ch/FileChannelImpl.java \
+ sun/nio/ch/FileDispatcher.java \
+ sun/nio/ch/FileKey.java \
+ sun/nio/ch/FileLockImpl.java \
+ sun/nio/ch/IOStatus.java \
+ sun/nio/ch/IOUtil.java \
+ sun/nio/ch/Net.java \
+ sun/nio/ch/PollArrayWrapper.java \
+ sun/nio/ch/ServerSocketChannelImpl.java \
+ sun/nio/ch/SocketChannelImpl.java \
+ sun/nio/ch/SocketDispatcher.java \
+ java/io/FileDescriptor.java \
diff --git a/jdk/make/java/nio/FILES_c.gmk b/jdk/make/java/nio/FILES_c.gmk
new file mode 100644
index 0000000..6f7c3ff
--- /dev/null
+++ b/jdk/make/java/nio/FILES_c.gmk
@@ -0,0 +1,37 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ DatagramChannelImpl.c \
+ DatagramDispatcher.c \
+ FileChannelImpl.c \
+ FileDispatcher.c \
+ FileKey.c \
+ IOUtil.c \
+ MappedByteBuffer.c \
+ Net.c \
+ ServerSocketChannelImpl.c \
+ SocketChannelImpl.c \
+ SocketDispatcher.c
diff --git a/jdk/make/java/nio/FILES_java.gmk b/jdk/make/java/nio/FILES_java.gmk
new file mode 100644
index 0000000..5958812
--- /dev/null
+++ b/jdk/make/java/nio/FILES_java.gmk
@@ -0,0 +1,270 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_src = \
+ java/nio/Bits.java \
+ java/nio/Buffer.java \
+ java/nio/ByteOrder.java \
+ java/nio/MappedByteBuffer.java \
+ java/nio/StringCharBuffer.java \
+ \
+ java/nio/channels/ByteChannel.java \
+ java/nio/channels/Channel.java \
+ java/nio/channels/Channels.java \
+ java/nio/channels/DatagramChannel.java \
+ java/nio/channels/FileChannel.java \
+ java/nio/channels/FileLock.java \
+ java/nio/channels/GatheringByteChannel.java \
+ java/nio/channels/InterruptibleChannel.java \
+ java/nio/channels/ReadableByteChannel.java \
+ java/nio/channels/ScatteringByteChannel.java \
+ java/nio/channels/SelectableChannel.java \
+ java/nio/channels/Selector.java \
+ java/nio/channels/SelectionKey.java \
+ java/nio/channels/ServerSocketChannel.java \
+ java/nio/channels/SocketChannel.java \
+ java/nio/channels/WritableByteChannel.java \
+ \
+ java/nio/channels/spi/AbstractInterruptibleChannel.java \
+ java/nio/channels/spi/AbstractSelectableChannel.java \
+ java/nio/channels/spi/AbstractSelectionKey.java \
+ java/nio/channels/spi/AbstractSelector.java \
+ java/nio/channels/spi/SelectorProvider.java \
+ \
+ java/nio/charset/Charset.java \
+ java/nio/charset/CoderResult.java \
+ java/nio/charset/CoderMalfunctionError.java \
+ java/nio/charset/CodingErrorAction.java \
+ java/nio/charset/MalformedInputException.java \
+ java/nio/charset/UnmappableCharacterException.java \
+ \
+ java/nio/charset/spi/CharsetProvider.java \
+ \
+ sun/nio/ByteBuffered.java \
+ \
+ sun/nio/ch/AbstractPollArrayWrapper.java \
+ sun/nio/ch/AllocatedNativeObject.java \
+ sun/nio/ch/ChannelInputStream.java \
+ sun/nio/ch/DatagramChannelImpl.java \
+ sun/nio/ch/DatagramDispatcher.java \
+ sun/nio/ch/DatagramSocketAdaptor.java \
+ sun/nio/ch/DefaultSelectorProvider.java \
+ sun/nio/ch/DirectBuffer.java \
+ sun/nio/ch/FileChannelImpl.java \
+ sun/nio/ch/FileDispatcher.java \
+ sun/nio/ch/FileKey.java \
+ sun/nio/ch/Interruptible.java \
+ sun/nio/ch/IOUtil.java \
+ sun/nio/ch/IOStatus.java \
+ sun/nio/ch/IOVecWrapper.java \
+ sun/nio/ch/NativeDispatcher.java \
+ sun/nio/ch/NativeObject.java \
+ sun/nio/ch/NativeThread.java \
+ sun/nio/ch/NativeThreadSet.java \
+ sun/nio/ch/Net.java \
+ sun/nio/ch/OptionAdaptor.java \
+ sun/nio/ch/PipeImpl.java \
+ sun/nio/ch/PollArrayWrapper.java \
+ sun/nio/ch/Reflect.java \
+ sun/nio/ch/SelectionKeyImpl.java \
+ sun/nio/ch/SelectorImpl.java \
+ sun/nio/ch/SelectorProviderImpl.java \
+ sun/nio/ch/SelChImpl.java \
+ sun/nio/ch/ServerSocketAdaptor.java \
+ sun/nio/ch/ServerSocketChannelImpl.java \
+ sun/nio/ch/SinkChannelImpl.java \
+ sun/nio/ch/SocketAdaptor.java \
+ sun/nio/ch/SocketChannelImpl.java \
+ sun/nio/ch/SocketDispatcher.java \
+ sun/nio/ch/SocketOpts.java \
+ sun/nio/ch/SocketOptsImpl.java \
+ sun/nio/ch/SourceChannelImpl.java \
+ sun/nio/ch/Util.java \
+ \
+ sun/nio/cs/AbstractCharsetProvider.java \
+ sun/nio/cs/FastCharsetProvider.java \
+ sun/nio/cs/HistoricallyNamedCharset.java \
+ sun/nio/cs/ISO_8859_1.java \
+ sun/nio/cs/ISO_8859_15.java \
+ sun/nio/cs/MS1252.java \
+ sun/nio/cs/SingleByteDecoder.java \
+ sun/nio/cs/SingleByteEncoder.java \
+ sun/nio/cs/StreamEncoder.java \
+ sun/nio/cs/StreamDecoder.java \
+ sun/nio/cs/Surrogate.java \
+ sun/nio/cs/ThreadLocalCoders.java \
+ sun/nio/cs/US_ASCII.java \
+ sun/nio/cs/UTF_16.java \
+ sun/nio/cs/UTF_16BE.java \
+ sun/nio/cs/UTF_16LE.java \
+ sun/nio/cs/UTF_8.java \
+ sun/nio/cs/UnicodeDecoder.java \
+ sun/nio/cs/UnicodeEncoder.java \
+ sun/nio/cs/UTF_32.java \
+ sun/nio/cs/UTF_32BE.java \
+ sun/nio/cs/UTF_32LE.java \
+ sun/nio/cs/UTF_32BE_BOM.java \
+ sun/nio/cs/UTF_32LE_BOM.java \
+ sun/nio/cs/UTF_32Coder.java \
+ \
+ java/net/DatagramSocket.java \
+ java/net/DatagramSocketImpl.java \
+ java/net/PlainSocketImpl.java \
+ java/net/Socket.java \
+ java/net/ServerSocket.java \
+ java/net/SocketImpl.java \
+ java/net/Socket.java \
+ java/io/InputStreamReader.java \
+ java/io/OutputStreamWriter.java \
+ java/lang/String.java \
+ java/lang/StringCoding.java \
+ \
+ sun/misc/Cleaner.java \
+ sun/util/PreHashedMap.java
+
+# Generated coder classes
+#
+FILES_gen_coder = \
+ java/nio/charset/CharsetDecoder.java \
+ java/nio/charset/CharsetEncoder.java
+
+# Generated buffer classes
+#
+FILES_gen_buffer = \
+ java/nio/ByteBuffer.java \
+ java/nio/CharBuffer.java \
+ java/nio/ShortBuffer.java \
+ java/nio/IntBuffer.java \
+ java/nio/LongBuffer.java \
+ java/nio/FloatBuffer.java \
+ java/nio/DoubleBuffer.java \
+ \
+ java/nio/HeapByteBuffer.java \
+ java/nio/HeapByteBufferR.java \
+ java/nio/HeapCharBuffer.java \
+ java/nio/HeapCharBufferR.java \
+ java/nio/HeapShortBuffer.java \
+ java/nio/HeapShortBufferR.java \
+ java/nio/HeapIntBuffer.java \
+ java/nio/HeapIntBufferR.java \
+ java/nio/HeapLongBuffer.java \
+ java/nio/HeapLongBufferR.java \
+ java/nio/HeapFloatBuffer.java \
+ java/nio/HeapFloatBufferR.java \
+ java/nio/HeapDoubleBuffer.java \
+ java/nio/HeapDoubleBufferR.java \
+ \
+ java/nio/DirectByteBuffer.java \
+ java/nio/DirectByteBufferR.java \
+ \
+ java/nio/DirectCharBufferU.java \
+ java/nio/DirectCharBufferRU.java \
+ java/nio/DirectShortBufferU.java \
+ java/nio/DirectShortBufferRU.java \
+ java/nio/DirectIntBufferU.java \
+ java/nio/DirectIntBufferRU.java \
+ java/nio/DirectLongBufferU.java \
+ java/nio/DirectLongBufferRU.java \
+ java/nio/DirectFloatBufferU.java \
+ java/nio/DirectFloatBufferRU.java \
+ java/nio/DirectDoubleBufferU.java \
+ java/nio/DirectDoubleBufferRU.java \
+ \
+ java/nio/DirectCharBufferS.java \
+ java/nio/DirectCharBufferRS.java \
+ java/nio/DirectShortBufferS.java \
+ java/nio/DirectShortBufferRS.java \
+ java/nio/DirectIntBufferS.java \
+ java/nio/DirectIntBufferRS.java \
+ java/nio/DirectLongBufferS.java \
+ java/nio/DirectLongBufferRS.java \
+ java/nio/DirectFloatBufferS.java \
+ java/nio/DirectFloatBufferRS.java \
+ java/nio/DirectDoubleBufferS.java \
+ java/nio/DirectDoubleBufferRS.java \
+ \
+ java/nio/ByteBufferAsCharBufferB.java \
+ java/nio/ByteBufferAsCharBufferRB.java \
+ java/nio/ByteBufferAsShortBufferB.java \
+ java/nio/ByteBufferAsShortBufferRB.java \
+ java/nio/ByteBufferAsIntBufferB.java \
+ java/nio/ByteBufferAsIntBufferRB.java \
+ java/nio/ByteBufferAsLongBufferB.java \
+ java/nio/ByteBufferAsLongBufferRB.java \
+ java/nio/ByteBufferAsFloatBufferB.java \
+ java/nio/ByteBufferAsFloatBufferRB.java \
+ java/nio/ByteBufferAsDoubleBufferB.java \
+ java/nio/ByteBufferAsDoubleBufferRB.java \
+ \
+ java/nio/ByteBufferAsCharBufferL.java \
+ java/nio/ByteBufferAsCharBufferRL.java \
+ java/nio/ByteBufferAsShortBufferL.java \
+ java/nio/ByteBufferAsShortBufferRL.java \
+ java/nio/ByteBufferAsIntBufferL.java \
+ java/nio/ByteBufferAsIntBufferRL.java \
+ java/nio/ByteBufferAsLongBufferL.java \
+ java/nio/ByteBufferAsLongBufferRL.java \
+ java/nio/ByteBufferAsFloatBufferL.java \
+ java/nio/ByteBufferAsFloatBufferRL.java \
+ java/nio/ByteBufferAsDoubleBufferL.java \
+ java/nio/ByteBufferAsDoubleBufferRL.java
+
+# Generated exception classes
+#
+FILES_gen_ex = \
+ java/nio/BufferOverflowException.java \
+ java/nio/BufferUnderflowException.java \
+ java/nio/InvalidMarkException.java \
+ java/nio/ReadOnlyBufferException.java \
+ \
+ java/nio/channels/AlreadyConnectedException.java \
+ java/nio/channels/AsynchronousCloseException.java \
+ java/nio/channels/ClosedByInterruptException.java \
+ java/nio/channels/ClosedChannelException.java \
+ java/nio/channels/ClosedSelectorException.java \
+ java/nio/channels/ConnectionPendingException.java \
+ java/nio/channels/FileLockInterruptionException.java \
+ java/nio/channels/IllegalBlockingModeException.java \
+ java/nio/channels/IllegalSelectorException.java \
+ java/nio/channels/NoConnectionPendingException.java \
+ java/nio/channels/NonReadableChannelException.java \
+ java/nio/channels/NonWritableChannelException.java \
+ java/nio/channels/NotYetBoundException.java \
+ java/nio/channels/NotYetConnectedException.java \
+ java/nio/channels/OverlappingFileLockException.java \
+ java/nio/channels/UnresolvedAddressException.java \
+ java/nio/channels/UnsupportedAddressTypeException.java \
+ \
+ sun/nio/ch/AlreadyBoundException.java \
+ \
+ java/nio/charset/CharacterCodingException.java \
+ java/nio/charset/IllegalCharsetNameException.java \
+ java/nio/charset/UnsupportedCharsetException.java
+
+FILES_gen_csp = sun/nio/cs/StandardCharsets.java
+
+FILES_gen = $(FILES_gen_coder) $(FILES_gen_buffer) $(FILES_gen_ex) $(FILES_gen_csp)
+
+FILES_java = $(FILES_src) $(FILES_gen)
diff --git a/jdk/make/java/nio/Makefile b/jdk/make/java/nio/Makefile
new file mode 100644
index 0000000..98a8388
--- /dev/null
+++ b/jdk/make/java/nio/Makefile
@@ -0,0 +1,642 @@
+#
+# Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for java.nio
+#
+
+BUILDDIR = ../..
+PACKAGE = java.nio
+LIBRARY = nio
+PRODUCT = java
+OTHER_JAVACFLAGS += -Xmaxwarns 1000 -Xlint:serial -Werror
+include $(BUILDDIR)/common/Defs.gmk
+
+NIO_SRC = $(SHARE_SRC)/classes/java/nio
+NIO_GEN = $(GENSRCDIR)/java/nio
+
+SNIO_SRC = $(SHARE_SRC)/classes/sun/nio
+SNIO_GEN = $(GENSRCDIR)/sun/nio
+
+#
+# Files to compile
+#
+
+include FILES_java.gmk
+include FILES_c.gmk
+include Exportedfiles.gmk
+
+ifeq ($(PLATFORM), solaris)
+FILES_java += \
+ sun/nio/ch/AbstractPollSelectorImpl.java \
+ sun/nio/ch/DevPollArrayWrapper.java \
+ sun/nio/ch/DevPollSelectorImpl.java \
+ sun/nio/ch/DevPollSelectorProvider.java \
+ sun/nio/ch/InheritedChannel.java \
+ sun/nio/ch/PollSelectorProvider.java \
+ sun/nio/ch/PollSelectorImpl.java
+
+FILES_c += \
+ DevPollArrayWrapper.c \
+ InheritedChannel.c \
+ PollArrayWrapper.c \
+ NativeThread.c
+
+FILES_export += \
+ sun/nio/ch/DevPollArrayWrapper.java \
+ sun/nio/ch/InheritedChannel.java \
+ sun/nio/ch/NativeThread.java
+endif # PLATFORM = solaris
+
+ifeq ($(PLATFORM), windows)
+FILES_java += \
+ sun/nio/ch/WindowsSelectorImpl.java \
+ sun/nio/ch/WindowsSelectorProvider.java
+
+FILES_c += \
+ WindowsSelectorImpl.c
+
+FILES_export += \
+ sun/nio/ch/WindowsSelectorImpl.java
+endif # PLATFORM = windows
+
+ifeq ($(PLATFORM), linux)
+FILES_java += \
+ sun/nio/ch/AbstractPollSelectorImpl.java \
+ sun/nio/ch/EPollArrayWrapper.java \
+ sun/nio/ch/EPollSelectorProvider.java \
+ sun/nio/ch/EPollSelectorImpl.java \
+ sun/nio/ch/InheritedChannel.java \
+ sun/nio/ch/PollSelectorProvider.java \
+ sun/nio/ch/PollSelectorImpl.java
+
+FILES_c += \
+ EPollArrayWrapper.c \
+ PollArrayWrapper.c \
+ InheritedChannel.c \
+ NativeThread.c
+
+FILES_export += \
+ sun/nio/ch/EPollArrayWrapper.java \
+ sun/nio/ch/InheritedChannel.java \
+ sun/nio/ch/NativeThread.java
+endif # PLATFORM = linux
+
+# Find platform-specific C source files
+#
+vpath %.c $(PLATFORM_SRC)/native/sun/nio/ch
+vpath %.c $(SHARE_SRC)/native/sun/nio/ch
+
+#
+# Various variables
+#
+
+JAVALIB = # Don't self-link
+
+#
+# Access to io_util.c and net_util.c
+#
+
+OTHER_INCLUDES += \
+ -I$(SHARE_SRC)/native/sun/nio/ch \
+ -I$(SHARE_SRC)/native/java/io \
+ -I$(SHARE_SRC)/native/java/net \
+ -I$(PLATFORM_SRC)/native/java/net \
+ -I$(CLASSHDRDIR)/../../../java.lang/java/CClassHeaders
+
+ifeq ($(PLATFORM),windows)
+ OTHER_LDLIBS += $(JVMLIB) ws2_32.lib \
+ -libpath:$(LIBDIR) java.lib \
+ $(OBJDIR)/../../../../sun/java.net/net/$(OBJDIRNAME)/net.lib \
+ $(OBJDIR)/../../../java.lang/java/$(OBJDIRNAME)/io_util.obj \
+ $(OBJDIR)/../../../java.lang/java/$(OBJDIRNAME)/FileDescriptor_md.obj
+endif
+ifeq ($(PLATFORM), linux)
+COMPILER_WARNINGS_FATAL=true
+OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -ljava -lnet -lpthread -ldl
+endif
+ifeq ($(PLATFORM), solaris)
+OTHER_LDLIBS += $(JVMLIB) $(LIBSOCKET) -lposix4 -ldl \
+ -L$(LIBDIR)/$(LIBARCH) -ljava -lnet
+endif # PLATFORM
+
+#
+# Rules
+#
+
+build: sources
+
+clean clobber::
+ $(RM) -r $(NIO_GEN) $(SNIO_GEN)
+ $(RM) -r $(CLASSDESTDIR)/java/nio
+ $(RM) -r $(CLASSDESTDIR)/sun/nio
+
+ifeq ($(PLATFORM), solaris)
+FILES_m = mapfile-solaris
+endif
+ifeq ($(PLATFORM), linux)
+FILES_m = mapfile-linux
+endif
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# Generate source files
+#
+
+SPP = spp.sh
+SPP_CMD = $(SH) $(SPP)
+
+FILES_genout = $(FILES_gen:%.java=$(GENSRCDIR)/%.java)
+
+BUF_SRC=$(NIO_SRC)
+CH_SRC=$(NIO_SRC)/channels
+CS_SRC=$(NIO_SRC)/charset
+SCH_SRC=$(SNIO_SRC)/ch
+SCS_SRC=$(SNIO_SRC)/cs
+
+BUF_GEN=$(NIO_GEN)
+CH_GEN=$(NIO_GEN)/channels
+CS_GEN=$(NIO_GEN)/charset
+SCH_GEN=$(SNIO_GEN)/ch
+SCS_GEN=$(SNIO_GEN)/cs
+
+sources: $(SPP) $(FILES_genout)
+
+#
+# Generated buffer classes
+#
+
+GEN_BUFFER_SH = genBuffer.sh
+
+GEN_BUFFER_CMD = SPP="$(SPP_CMD)" NAWK=$(NAWK) SED=$(SED) \
+ $(SH) $(GEN_BUFFER_SH)
+
+# Public abstract buffer classes
+#
+$(BUF_GEN)/ByteBuffer.java: $(BUF_SRC)/X-Buffer.java \
+ $(BUF_SRC)/X-Buffer-bin.java \
+ $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=byte BIN=1 SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/CharBuffer.java: $(BUF_SRC)/X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=char SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ShortBuffer.java: $(BUF_SRC)/X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=short SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/IntBuffer.java: $(BUF_SRC)/X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=int SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/LongBuffer.java: $(BUF_SRC)/X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=long SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/FloatBuffer.java: $(BUF_SRC)/X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=float SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DoubleBuffer.java: $(BUF_SRC)/X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=double SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+
+# Buffers whose contents are heap-allocated
+#
+$(BUF_GEN)/HeapByteBuffer.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=byte SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/HeapByteBuffer%.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=byte RW=$* SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/HeapCharBuffer.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=char SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/HeapCharBuffer%.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=char RW=$* SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/HeapShortBuffer.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=short SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/HeapShortBuffer%.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=short RW=$* SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/HeapIntBuffer.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=int SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/HeapIntBuffer%.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=int RW=$* SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/HeapLongBuffer.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=long SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/HeapLongBuffer%.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=long RW=$* SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/HeapFloatBuffer.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=float SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/HeapFloatBuffer%.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=float RW=$* SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/HeapDoubleBuffer.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=double SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/HeapDoubleBuffer%.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=double RW=$* SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+
+# Direct byte buffer
+#
+$(BUF_GEN)/DirectByteBuffer.java: $(BUF_SRC)/Direct-X-Buffer.java \
+ $(BUF_SRC)/Direct-X-Buffer.java \
+ $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=byte BIN=1 SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectByteBuffer%.java: $(BUF_SRC)/Direct-X-Buffer.java \
+ $(BUF_SRC)/Direct-X-Buffer.java \
+ $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=byte RW=$* BIN=1 SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+
+# Unswapped views of direct byte buffers
+#
+$(BUF_GEN)/DirectCharBufferU.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=char BO=U SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectCharBuffer%U.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=char RW=$* BO=U SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectShortBufferU.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=short BO=U SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectShortBuffer%U.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=short RW=$* BO=U SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectIntBufferU.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=int BO=U SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectIntBuffer%U.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=int RW=$* BO=U SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectLongBufferU.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=long BO=U SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectLongBuffer%U.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=long RW=$* BO=U SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectFloatBufferU.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=float BO=U SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectFloatBuffer%U.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=float RW=$* BO=U SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectDoubleBufferU.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=double BO=U SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectDoubleBuffer%U.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=double RW=$* BO=U SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+
+# Swapped views of direct byte buffers
+#
+$(BUF_GEN)/DirectCharBufferS.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=char BO=S SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectCharBuffer%S.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=char RW=$* BO=S SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectShortBufferS.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=short BO=S SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectShortBuffer%S.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=short RW=$* BO=S SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectIntBufferS.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=int BO=S SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectIntBuffer%S.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=int RW=$* BO=S SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectLongBufferS.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=long BO=S SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectLongBuffer%S.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=long RW=$* BO=S SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectFloatBufferS.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=float BO=S SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectFloatBuffer%S.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=float RW=$* BO=S SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectDoubleBufferS.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=double BO=S SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/DirectDoubleBuffer%S.java: $(BUF_SRC)/Direct-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=double RW=$* BO=S SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+
+# Big-endian views of byte buffers
+#
+$(BUF_GEN)/ByteBufferAsCharBufferB.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=char BO=B SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsCharBuffer%B.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=char RW=$* BO=B SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsShortBufferB.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=short BO=B SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsShortBuffer%B.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=short RW=$* BO=B SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsIntBufferB.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=int BO=B SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsIntBuffer%B.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=int RW=$* BO=B SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsLongBufferB.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=long BO=B SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsLongBuffer%B.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=long RW=$* BO=B SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsFloatBufferB.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=float BO=B SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsFloatBuffer%B.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=float RW=$* BO=B SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsDoubleBufferB.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=double BO=B SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsDoubleBuffer%B.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=double RW=$* BO=B SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+
+# Little-endian views of byte buffers
+#
+$(BUF_GEN)/ByteBufferAsCharBufferL.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=char BO=L SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsCharBuffer%L.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=char RW=$* BO=L SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsShortBufferL.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=short BO=L SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsShortBuffer%L.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=short RW=$* BO=L SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsIntBufferL.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=int BO=L SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsIntBuffer%L.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=int RW=$* BO=L SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsLongBufferL.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=long BO=L SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsLongBuffer%L.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=long RW=$* BO=L SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsFloatBufferL.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=float BO=L SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsFloatBuffer%L.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=float RW=$* BO=L SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsDoubleBufferL.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=double BO=L SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+$(BUF_GEN)/ByteBufferAsDoubleBuffer%L.java: $(BUF_SRC)/ByteBufferAs-X-Buffer.java $(GEN_BUFFER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ TYPE=double RW=$* BO=L SRC=$< DST=$@.temp $(GEN_BUFFER_CMD)
+ $(MV) $@.temp $@
+
+#
+# Generated coder classes
+#
+
+GEN_CODER_SH = genCoder.sh
+
+GEN_CODER_CMD = SPP="$(SPP_CMD)" SED=$(SED) NAWK=$(NAWK) $(SH) $(GEN_CODER_SH)
+
+$(CS_GEN)/CharsetDecoder.java: $(CS_SRC)/Charset-X-Coder.java $(GEN_CODER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ $(GEN_CODER_CMD) decoder $< $@.temp
+ $(MV) $@.temp $@
+
+$(CS_GEN)/CharsetEncoder.java: $(CS_SRC)/Charset-X-Coder.java $(GEN_CODER_SH)
+ $(prep-target)
+ @$(RM) $@.temp
+ $(GEN_CODER_CMD) encoder $< $@.temp
+ $(MV) $@.temp $@
+
+#
+# Generated exception classes
+#
+
+GEN_EX_SH = genExceptions.sh
+
+GEN_EX_CMD = NAWK=$(NAWK) $(SHELL) $(GEN_EX_SH)
+
+$(CH_GEN)/%Exception.java: genExceptions.sh $(CH_SRC)/exceptions
+ $(prep-target)
+ @$(RM) $@.temp
+ $(GEN_EX_CMD) $(CH_SRC)/exceptions $(CH_GEN)
+
+$(CS_GEN)/%Exception.java: genExceptions.sh $(CS_SRC)/exceptions
+ $(prep-target)
+ @$(RM) $@.temp
+ $(GEN_EX_CMD) $(CS_SRC)/exceptions $(CS_GEN)
+
+$(BUF_GEN)/%Exception.java: genExceptions.sh $(BUF_SRC)/exceptions
+ $(prep-target)
+ @$(RM) $@.temp
+ $(GEN_EX_CMD) $(BUF_SRC)/exceptions $(BUF_GEN)
+
+$(SCH_GEN)/%Exception.java: genExceptions.sh $(SCH_SRC)/exceptions
+ $(prep-target)
+ @$(RM) $@.temp
+ $(GEN_EX_CMD) $(SCH_SRC)/exceptions $(SCH_GEN)
+
+
+#
+# Generated charset-provider classes
+#
+
+HASHER_JARFILE = $(BUILDTOOLJARDIR)/hasher.jar
+
+$(SCS_GEN)/StandardCharsets.java: genCharsetProvider.sh \
+ $(HASHER_JARFILE) $(SCS_SRC)/standard-charsets
+ $(prep-target)
+ @$(RM) $@.temp
+ NAWK=$(NAWK) TEMPDIR=$(TEMPDIR) \
+ HASHER="$(BOOT_JAVA_CMD) -jar $(HASHER_JARFILE)" \
+ $(SHELL) -e genCharsetProvider.sh $(SCS_SRC)/standard-charsets $(SCS_GEN)
+
+.PHONY: sources
diff --git a/jdk/make/java/nio/addNotices.sh b/jdk/make/java/nio/addNotices.sh
new file mode 100644
index 0000000..924be90
--- /dev/null
+++ b/jdk/make/java/nio/addNotices.sh
@@ -0,0 +1,45 @@
+#! /bin/sh
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Parse the first contiguous comment block in this script and generate
+# a java comment block. If this script is invoked with a copyright
+# year/year range, the java comment block will contain a Sun copyright.
+
+COPYRIGHT_YEARS=$1
+
+cat <<__END__
+/*
+__END__
+
+if [ "x$COPYRIGHT_YEARS" != x ]; then
+ cat <<__END__
+ * Copyright $COPYRIGHT_YEARS Sun Microsystems, Inc. All Rights Reserved.
+__END__
+fi
+
+$NAWK ' /^#.*Copyright.*Sun/ { next }
+ /^#([^!]|$)/ { sub(/^#/, " *"); print }
+ /^$/ { print " */"; exit } ' $0
diff --git a/jdk/make/java/nio/genBuffer.sh b/jdk/make/java/nio/genBuffer.sh
new file mode 100644
index 0000000..ef10c12
--- /dev/null
+++ b/jdk/make/java/nio/genBuffer.sh
@@ -0,0 +1,166 @@
+#! /bin/sh
+
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Generate concrete buffer classes
+
+# Required environment variables
+# NAWK SED SPP To invoke tools
+# TYPE Primitive type
+# SRC Source file
+# DST Destination file
+#
+# Optional environment variables
+# RW Mutability: R(ead only), W(ritable)
+# BO Byte order: B(ig), L(ittle), S(wapped), U(nswapped)
+# BIN Defined => generate binary-data access methods
+
+type=$TYPE
+rw=$RW
+rwkey=XX
+
+case $type in
+ char) fulltype=character;;
+ *) fulltype=$type;;
+esac
+
+case $type in
+ byte) LBPV=0;;
+ char | short) LBPV=1;;
+ int | float) LBPV=2;;
+ long | double) LBPV=3;;
+esac
+
+typesAndBits() {
+
+ type="$1"; BO="$2"
+ memtype=$type; swaptype=$type; frombits=; tobits=
+
+ case $type in
+ float) memtype=int
+ if [ x$BO != xU ]; then
+ swaptype=int
+ fromBits=Float.intBitsToFloat
+ toBits=Float.floatToRawIntBits
+ fi;;
+ double) memtype=long
+ if [ x$BO != xU ]; then
+ swaptype=long
+ fromBits=Double.longBitsToDouble
+ toBits=Double.doubleToRawLongBits
+ fi;;
+ esac
+
+ echo memtype=$memtype swaptype=$swaptype fromBits=$fromBits toBits=$toBits
+
+ echo $type $fulltype $memtype $swaptype \
+ | $NAWK '{ type = $1; fulltype = $2; memtype = $3; swaptype = $4;
+ x = substr(type, 1, 1);
+ Type = toupper(x) substr(type, 2);
+ Fulltype = toupper(x) substr(fulltype, 2);
+ Memtype = toupper(substr(memtype, 1, 1)) substr(memtype, 2);
+ Swaptype = toupper(substr(swaptype, 1, 1)) substr(swaptype, 2);
+ printf("Type=%s x=%s Fulltype=%s Memtype=%s Swaptype=%s ",
+ Type, x, Fulltype, Memtype, Swaptype); }'
+
+ echo "swap=`if [ x$BO = xS ]; then echo Bits.swap; fi`"
+
+}
+
+eval `typesAndBits $type $BO`
+
+a=`if [ $type = int ]; then echo an; else echo a; fi`
+A=`if [ $type = int ]; then echo An; else echo A; fi`
+
+if [ "x$rw" = xR ]; then rwkey=ro; else rwkey=rw; fi
+
+set -e
+
+$SPP <$SRC >$DST \
+ -K$type \
+ -Dtype=$type \
+ -DType=$Type \
+ -Dfulltype=$fulltype \
+ -DFulltype=$Fulltype \
+ -Dx=$x \
+ -Dmemtype=$memtype \
+ -DMemtype=$Memtype \
+ -DSwaptype=$Swaptype \
+ -DfromBits=$fromBits \
+ -DtoBits=$toBits \
+ -DLG_BYTES_PER_VALUE=$LBPV \
+ -DBYTES_PER_VALUE="(1 << $LBPV)" \
+ -DBO=$BO \
+ -Dswap=$swap \
+ -DRW=$rw \
+ -K$rwkey \
+ -Da=$a \
+ -DA=$A \
+ -Kbo$BO
+
+if [ $BIN ]; then
+
+ genBinOps() {
+ type="$1"
+ Type=`echo $1 | $NAWK '{ print toupper(substr($1, 1, 1)) substr($1, 2) }'`
+ fulltype="$2"
+ LBPV="$3"
+ nbytes="$4"
+ nbytesButOne="$5"
+ a=`if [ $type = int ]; then echo an; else echo a; fi`
+ src=$6
+ eval `typesAndBits $type`
+ $SPP <$src \
+ -Dtype=$type \
+ -DType=$Type \
+ -Dfulltype=$fulltype \
+ -Dmemtype=$memtype \
+ -DMemtype=$Memtype \
+ -DfromBits=$fromBits \
+ -DtoBits=$toBits \
+ -DLG_BYTES_PER_VALUE=$LBPV \
+ -DBYTES_PER_VALUE="(1 << $LBPV)" \
+ -Dnbytes=$nbytes \
+ -DnbytesButOne=$nbytesButOne \
+ -DRW=$rw \
+ -K$rwkey \
+ -Da=$a \
+ -be
+ }
+
+ mv $DST $DST.tmp
+ sed -e '/#BIN/,$d' <$DST.tmp >$DST
+ rm -f $DST.tmp
+ binops=`dirname $SRC`/`basename $SRC .java`-bin.java
+ genBinOps char character 1 two one $binops >>$DST
+ genBinOps short short 1 two one $binops >>$DST
+ genBinOps int integer 2 four three $binops >>$DST
+ genBinOps long long 3 eight seven $binops >>$DST
+ genBinOps float float 2 four three $binops >>$DST
+ genBinOps double double 3 eight seven $binops >>$DST
+ echo '}' >>$DST
+
+fi
diff --git a/jdk/make/java/nio/genCharsetProvider.sh b/jdk/make/java/nio/genCharsetProvider.sh
new file mode 100644
index 0000000..1c344da
--- /dev/null
+++ b/jdk/make/java/nio/genCharsetProvider.sh
@@ -0,0 +1,131 @@
+#! /bin/sh
+
+#
+# Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Generate a charset provider class
+
+# Required environment variables
+# NAWK awk tool
+# TEMPDIR temporary directory
+# HASHER Hasher program
+
+SPEC=$1; shift
+DST=$1; shift
+
+eval `$NAWK <$SPEC '
+ /^[ \t]*copyright / { printf "COPYRIGHT_YEARS=%s\n", $2; }
+ /^[ \t]*package / { printf "PKG=%s\n", $2; }
+ /^[ \t]*class / { printf "CLASS=%s\n", $2; }
+'`
+
+OUT=$DST/$CLASS.java
+echo '-->' $OUT
+
+
+# Header
+#
+
+$SHELL addNotices.sh "$COPYRIGHT_YEARS" > $OUT
+
+cat <<__END__ >>$OUT
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+package $PKG;
+
+import java.nio.charset.*;
+
+
+public class $CLASS
+ extends FastCharsetProvider
+{
+
+__END__
+
+
+# Alias tables
+#
+$NAWK <$SPEC >>$OUT '
+ BEGIN { n = 1; m = 1; }
+
+ /^[ \t]*charset / {
+ csn = $2; cln = $3;
+ lcsn = tolower(csn);
+ lcsns[n++] = lcsn;
+ csns[lcsn] = csn;
+ classMap[lcsn] = cln;
+ if (n > 2)
+ printf " };\n\n";
+ printf " static final String[] aliases_%s = new String[] {\n", cln;
+ }
+
+ /^[ \t]*alias / {
+ acsns[m++] = tolower($2);
+ aliasMap[tolower($2)] = lcsn;
+ printf " \"%s\",\n", $2;
+ }
+
+ END {
+ printf " };\n\n";
+ }
+'
+
+
+# Prehashed alias and class maps
+#
+$NAWK <$SPEC >$TEMPDIR/aliases '
+ /^[ \t]*charset / {
+ csn = $2;
+ lcsn = tolower(csn);
+ }
+ /^[ \t]*alias / {
+ an = tolower($2);
+ printf "%-20s \"%s\"\n", an, lcsn;
+ }
+'
+
+$NAWK <$SPEC >$TEMPDIR/classes '
+ /^[ \t]*charset / {
+ csn = $2; cln = $3;
+ lcsn = tolower(csn);
+ printf "%-20s \"%s\"\n", lcsn, cln;
+ }
+'
+
+${HASHER} -i Aliases <$TEMPDIR/aliases >>$OUT
+${HASHER} -i Classes <$TEMPDIR/classes >>$OUT
+${HASHER} -i -e Cache -t Charset <$TEMPDIR/classes >>$OUT
+
+
+# Constructor
+#
+cat <<__END__ >>$OUT
+ public $CLASS() {
+ super("$PKG", new Aliases(), new Classes(), new Cache());
+ }
+
+}
+__END__
diff --git a/jdk/make/java/nio/genCoder.sh b/jdk/make/java/nio/genCoder.sh
new file mode 100644
index 0000000..def83d9
--- /dev/null
+++ b/jdk/make/java/nio/genCoder.sh
@@ -0,0 +1,99 @@
+#! /bin/sh
+
+#
+# Copyright 2000-2001 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Generate charset coder and decoder classes
+
+# Environment variables required from make: SED SPP
+
+what=$1
+SRC=$2
+DST=$3
+
+if [ x$what = xdecoder ]; then
+
+ echo ' '$SRC '--('$what')-->' $DST
+ $SPP <$SRC >$DST \
+ -K$what \
+ -DA='A' \
+ -Da='a' \
+ -DCode='Decode' \
+ -Dcode='decode' \
+ -DitypesPhrase='bytes in a specific charset' \
+ -DotypesPhrase='sixteen-bit Unicode characters' \
+ -Ditype='byte' \
+ -Dotype='character' \
+ -DItype='Byte' \
+ -DOtype='Char' \
+ -Dcoder='decoder' \
+ -DCoder='Decoder' \
+ -Dcoding='decoding' \
+ -DOtherCoder='Encoder' \
+ -DreplTypeName='string' \
+ -DdefaultRepl='"\\\\uFFFD"' \
+ -DdefaultReplName='<tt>"\\\\uFFFD"<\/tt>' \
+ -DreplType='String' \
+ -DreplFQType='java.lang.String' \
+ -DreplLength='length()' \
+ -DItypesPerOtype='CharsPerByte' \
+ -DnotLegal='not legal for this charset' \
+ -Dotypes-per-itype='chars-per-byte' \
+ -DoutSequence='Unicode character'
+
+elif [ x$what = xencoder ]; then
+
+ echo ' '$SRC '--('$what')-->' $DST
+ $SPP <$SRC >$DST \
+ -K$what \
+ -DA='An' \
+ -Da='an' \
+ -DCode='Encode' \
+ -Dcode='encode' \
+ -DitypesPhrase='sixteen-bit Unicode characters' \
+ -DotypesPhrase='bytes in a specific charset' \
+ -Ditype='character' \
+ -Dotype='byte' \
+ -DItype='Char' \
+ -DOtype='Byte' \
+ -Dcoder='encoder' \
+ -DCoder='Encoder' \
+ -Dcoding='encoding' \
+ -DOtherCoder='Decoder' \
+ -DreplTypeName='byte array' \
+ -DdefaultRepl='new byte[] { (byte)'"'"\\?"'"' }' \
+ -DdefaultReplName='<tt>{<\/tt>\\\ <tt>(byte)'"'"\\?"'"'<\/tt>\\\ <tt>}<\/tt>' \
+ -DreplType='byte[]' \
+ -DreplFQType='byte[]' \
+ -DreplLength='length' \
+ -DItypesPerOtype='BytesPerChar' \
+ -DnotLegal='not a legal sixteen-bit Unicode sequence' \
+ -Dotypes-per-itype='bytes-per-char' \
+ -DoutSequence='byte sequence in the given charset'
+
+else
+ echo Illegal coder type: $what
+ exit 1
+fi
diff --git a/jdk/make/java/nio/genExceptions.sh b/jdk/make/java/nio/genExceptions.sh
new file mode 100644
index 0000000..0e2020c
--- /dev/null
+++ b/jdk/make/java/nio/genExceptions.sh
@@ -0,0 +1,110 @@
+#! /bin/sh
+#
+# Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Generate exception classes
+
+SPEC=$1
+DST=$2
+
+gen() {
+ ID=$1
+ WHAT=$2
+ SVUID=$3
+ ARG_TYPE=$4
+ ARG_ID=$5
+ ARG_PROP=$6
+ ARG_PHRASE=$7
+ ARG_PARAM="$ARG_TYPE$ $ARG_ID"
+ echo '-->' $DST/$ID.java
+ out=$DST/${ID}.java
+
+ $SHELL addNotices.sh "$COPYRIGHT_YEARS" > $out
+
+cat >>$out <<__END__
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+package $PACKAGE;
+
+
+/**$WHAT
+ *
+ * @since $SINCE
+ */
+
+public `if [ ${ABSTRACT:-0} = 1 ];
+ then echo 'abstract '; fi`class $ID
+ extends ${SUPER}
+{
+
+ private static final long serialVersionUID = $SVUID;
+__END__
+
+ if [ $ARG_ID ]; then
+
+ cat >>$out <<__END__
+
+ private $ARG_TYPE $ARG_ID;
+
+ /**
+ * Constructs an instance of this class. </p>
+ *
+ * @param $ARG_ID
+ * The $ARG_PHRASE
+ */
+ public $ID($ARG_TYPE $ARG_ID) {
+ super(String.valueOf($ARG_ID));
+ this.$ARG_ID = $ARG_ID;
+ }
+
+ /**
+ * Retrieves the $ARG_PHRASE. </p>
+ *
+ * @return The $ARG_PHRASE
+ */
+ public $ARG_TYPE get$ARG_PROP() {
+ return $ARG_ID;
+ }
+
+}
+__END__
+
+ else
+
+ cat >>$out <<__END__
+
+ /**
+ * Constructs an instance of this class.
+ */
+ public $ID() { }
+
+}
+__END__
+
+ fi
+}
+
+. $SPEC
diff --git a/jdk/make/java/nio/mapfile-linux b/jdk/make/java/nio/mapfile-linux
new file mode 100644
index 0000000..dc2044c
--- /dev/null
+++ b/jdk/make/java/nio/mapfile-linux
@@ -0,0 +1,79 @@
+
+SUNWprivate_1.1 {
+ global:
+ Java_java_nio_MappedByteBuffer_force0;
+ Java_java_nio_MappedByteBuffer_isLoaded0;
+ Java_java_nio_MappedByteBuffer_load0;
+ Java_sun_nio_ch_DatagramChannelImpl_disconnect0;
+ Java_sun_nio_ch_DatagramChannelImpl_initIDs;
+ Java_sun_nio_ch_DatagramChannelImpl_receive0;
+ Java_sun_nio_ch_DatagramChannelImpl_send0;
+ Java_sun_nio_ch_DatagramDispatcher_read0;
+ Java_sun_nio_ch_DatagramDispatcher_readv0;
+ Java_sun_nio_ch_DatagramDispatcher_write0;
+ Java_sun_nio_ch_DatagramDispatcher_writev0;
+ Java_sun_nio_ch_EPollArrayWrapper_epollCreate;
+ Java_sun_nio_ch_EPollArrayWrapper_epollCtl;
+ Java_sun_nio_ch_EPollArrayWrapper_epollWait;
+ Java_sun_nio_ch_EPollArrayWrapper_fdLimit;
+ Java_sun_nio_ch_EPollArrayWrapper_init;
+ Java_sun_nio_ch_EPollArrayWrapper_interrupt;
+ Java_sun_nio_ch_FileChannelImpl_close0;
+ Java_sun_nio_ch_FileChannelImpl_force0;
+ Java_sun_nio_ch_FileChannelImpl_initIDs;
+ Java_sun_nio_ch_FileChannelImpl_lock0;
+ Java_sun_nio_ch_FileChannelImpl_map0;
+ Java_sun_nio_ch_FileChannelImpl_position0;
+ Java_sun_nio_ch_FileChannelImpl_release0;
+ Java_sun_nio_ch_FileChannelImpl_size0;
+ Java_sun_nio_ch_FileChannelImpl_transferTo0;
+ Java_sun_nio_ch_FileChannelImpl_truncate0;
+ Java_sun_nio_ch_FileChannelImpl_unmap0;
+ Java_sun_nio_ch_FileDispatcher_close0;
+ Java_sun_nio_ch_FileDispatcher_closeIntFD;
+ Java_sun_nio_ch_FileDispatcher_init;
+ Java_sun_nio_ch_FileDispatcher_preClose0;
+ Java_sun_nio_ch_FileDispatcher_pread0;
+ Java_sun_nio_ch_FileDispatcher_pwrite0;
+ Java_sun_nio_ch_FileDispatcher_read0;
+ Java_sun_nio_ch_FileDispatcher_readv0;
+ Java_sun_nio_ch_FileDispatcher_write0;
+ Java_sun_nio_ch_FileDispatcher_writev0;
+ Java_sun_nio_ch_FileKey_init;
+ Java_sun_nio_ch_FileKey_initIDs;
+ Java_sun_nio_ch_InheritedChannel_close0;
+ Java_sun_nio_ch_InheritedChannel_dup;
+ Java_sun_nio_ch_InheritedChannel_dup2;
+ Java_sun_nio_ch_InheritedChannel_open0;
+ Java_sun_nio_ch_InheritedChannel_peerAddress0;
+ Java_sun_nio_ch_InheritedChannel_peerPort0;
+ Java_sun_nio_ch_InheritedChannel_soType0;
+ Java_sun_nio_ch_IOUtil_configureBlocking;
+ Java_sun_nio_ch_IOUtil_drain;
+ Java_sun_nio_ch_IOUtil_fdVal;
+ Java_sun_nio_ch_IOUtil_initIDs;
+ Java_sun_nio_ch_IOUtil_initPipe;
+ Java_sun_nio_ch_IOUtil_randomBytes;
+ Java_sun_nio_ch_IOUtil_setfdVal;
+ Java_sun_nio_ch_NativeThread_current;
+ Java_sun_nio_ch_NativeThread_init;
+ Java_sun_nio_ch_NativeThread_signal;
+ Java_sun_nio_ch_Net_socket0;
+ Java_sun_nio_ch_Net_bind;
+ Java_sun_nio_ch_Net_connect;
+ Java_sun_nio_ch_Net_localPort;
+ Java_sun_nio_ch_Net_localInetAddress;
+ Java_sun_nio_ch_Net_getIntOption0;
+ Java_sun_nio_ch_Net_setIntOption0;
+ Java_sun_nio_ch_Net_initIDs;
+ Java_sun_nio_ch_PollArrayWrapper_interrupt;
+ Java_sun_nio_ch_PollArrayWrapper_poll0;
+ Java_sun_nio_ch_ServerSocketChannelImpl_accept0;
+ Java_sun_nio_ch_ServerSocketChannelImpl_initIDs;
+ Java_sun_nio_ch_ServerSocketChannelImpl_listen;
+ Java_sun_nio_ch_SocketChannelImpl_checkConnect;
+ Java_sun_nio_ch_SocketChannelImpl_shutdown;
+
+ local:
+ *;
+};
diff --git a/jdk/make/java/nio/mapfile-solaris b/jdk/make/java/nio/mapfile-solaris
new file mode 100644
index 0000000..77ef8ea
--- /dev/null
+++ b/jdk/make/java/nio/mapfile-solaris
@@ -0,0 +1,79 @@
+
+SUNWprivate_1.1 {
+ global:
+ Java_java_nio_MappedByteBuffer_force0;
+ Java_java_nio_MappedByteBuffer_isLoaded0;
+ Java_java_nio_MappedByteBuffer_load0;
+ Java_sun_nio_ch_DatagramChannelImpl_disconnect0;
+ Java_sun_nio_ch_DatagramChannelImpl_initIDs;
+ Java_sun_nio_ch_DatagramChannelImpl_receive0;
+ Java_sun_nio_ch_DatagramChannelImpl_send0;
+ Java_sun_nio_ch_DatagramDispatcher_read0;
+ Java_sun_nio_ch_DatagramDispatcher_readv0;
+ Java_sun_nio_ch_DatagramDispatcher_write0;
+ Java_sun_nio_ch_DatagramDispatcher_writev0;
+ Java_sun_nio_ch_DevPollArrayWrapper_fdLimit;
+ Java_sun_nio_ch_DevPollArrayWrapper_init;
+ Java_sun_nio_ch_DevPollArrayWrapper_interrupt;
+ Java_sun_nio_ch_DevPollArrayWrapper_poll0;
+ Java_sun_nio_ch_DevPollArrayWrapper_register;
+ Java_sun_nio_ch_DevPollArrayWrapper_registerMultiple;
+ Java_sun_nio_ch_FileChannelImpl_close0;
+ Java_sun_nio_ch_FileChannelImpl_force0;
+ Java_sun_nio_ch_FileChannelImpl_initIDs;
+ Java_sun_nio_ch_FileChannelImpl_lock0;
+ Java_sun_nio_ch_FileChannelImpl_map0;
+ Java_sun_nio_ch_FileChannelImpl_position0;
+ Java_sun_nio_ch_FileChannelImpl_release0;
+ Java_sun_nio_ch_FileChannelImpl_size0;
+ Java_sun_nio_ch_FileChannelImpl_transferTo0;
+ Java_sun_nio_ch_FileChannelImpl_truncate0;
+ Java_sun_nio_ch_FileChannelImpl_unmap0;
+ Java_sun_nio_ch_FileDispatcher_close0;
+ Java_sun_nio_ch_FileDispatcher_closeIntFD;
+ Java_sun_nio_ch_FileDispatcher_init;
+ Java_sun_nio_ch_FileDispatcher_preClose0;
+ Java_sun_nio_ch_FileDispatcher_pread0;
+ Java_sun_nio_ch_FileDispatcher_pwrite0;
+ Java_sun_nio_ch_FileDispatcher_read0;
+ Java_sun_nio_ch_FileDispatcher_readv0;
+ Java_sun_nio_ch_FileDispatcher_write0;
+ Java_sun_nio_ch_FileDispatcher_writev0;
+ Java_sun_nio_ch_FileKey_init;
+ Java_sun_nio_ch_FileKey_initIDs;
+ Java_sun_nio_ch_InheritedChannel_close0;
+ Java_sun_nio_ch_InheritedChannel_dup;
+ Java_sun_nio_ch_InheritedChannel_dup2;
+ Java_sun_nio_ch_InheritedChannel_open0;
+ Java_sun_nio_ch_InheritedChannel_peerAddress0;
+ Java_sun_nio_ch_InheritedChannel_peerPort0;
+ Java_sun_nio_ch_InheritedChannel_soType0;
+ Java_sun_nio_ch_IOUtil_configureBlocking;
+ Java_sun_nio_ch_IOUtil_drain;
+ Java_sun_nio_ch_IOUtil_fdVal;
+ Java_sun_nio_ch_IOUtil_initIDs;
+ Java_sun_nio_ch_IOUtil_initPipe;
+ Java_sun_nio_ch_IOUtil_randomBytes;
+ Java_sun_nio_ch_IOUtil_setfdVal;
+ Java_sun_nio_ch_NativeThread_current;
+ Java_sun_nio_ch_NativeThread_init;
+ Java_sun_nio_ch_NativeThread_signal;
+ Java_sun_nio_ch_Net_socket0;
+ Java_sun_nio_ch_Net_bind;
+ Java_sun_nio_ch_Net_connect;
+ Java_sun_nio_ch_Net_localPort;
+ Java_sun_nio_ch_Net_localInetAddress;
+ Java_sun_nio_ch_Net_getIntOption0;
+ Java_sun_nio_ch_Net_setIntOption0;
+ Java_sun_nio_ch_Net_initIDs;
+ Java_sun_nio_ch_PollArrayWrapper_interrupt;
+ Java_sun_nio_ch_PollArrayWrapper_poll0;
+ Java_sun_nio_ch_ServerSocketChannelImpl_accept0;
+ Java_sun_nio_ch_ServerSocketChannelImpl_initIDs;
+ Java_sun_nio_ch_ServerSocketChannelImpl_listen;
+ Java_sun_nio_ch_SocketChannelImpl_checkConnect;
+ Java_sun_nio_ch_SocketChannelImpl_shutdown;
+
+ local:
+ *;
+};
diff --git a/jdk/make/java/nio/reorder-i586 b/jdk/make/java/nio/reorder-i586
new file mode 100644
index 0000000..b1ef113
--- /dev/null
+++ b/jdk/make/java/nio/reorder-i586
@@ -0,0 +1,17 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%Java_sun_nio_ch_FileChannelImpl_initIDs;
+text: .text%Java_sun_nio_ch_FileDispatcher_initIDs;
+text: .text%Java_sun_nio_ch_IOUtil_initIDs;
+text: .text%Java_sun_nio_ch_FileDispatcher_read0;
+text: .text%convertReturnVal;
+# Test LoadFrame
+# Test LoadJFrame
+# Test JHello
+# SwingSet
diff --git a/jdk/make/java/nio/reorder-sparc b/jdk/make/java/nio/reorder-sparc
new file mode 100644
index 0000000..621b6c4
--- /dev/null
+++ b/jdk/make/java/nio/reorder-sparc
@@ -0,0 +1,12 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+# Test LoadFrame
+# Test LoadJFrame
+# Test JHello
+# SwingSet
diff --git a/jdk/make/java/nio/reorder-sparcv9 b/jdk/make/java/nio/reorder-sparcv9
new file mode 100644
index 0000000..b1ef113
--- /dev/null
+++ b/jdk/make/java/nio/reorder-sparcv9
@@ -0,0 +1,17 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%Java_sun_nio_ch_FileChannelImpl_initIDs;
+text: .text%Java_sun_nio_ch_FileDispatcher_initIDs;
+text: .text%Java_sun_nio_ch_IOUtil_initIDs;
+text: .text%Java_sun_nio_ch_FileDispatcher_read0;
+text: .text%convertReturnVal;
+# Test LoadFrame
+# Test LoadJFrame
+# Test JHello
+# SwingSet
diff --git a/jdk/make/java/nio/spp.sh b/jdk/make/java/nio/spp.sh
new file mode 100644
index 0000000..036ca22
--- /dev/null
+++ b/jdk/make/java/nio/spp.sh
@@ -0,0 +1,165 @@
+#! /bin/sh
+
+#
+# Copyright 2000-2001 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# SPP: A simple/sed-based/stream preprocessor
+# Mark Reinhold / mr@sun.com
+#
+# Usage: spp [-be] [-Kkey] -Dvar=value ... <in >out
+#
+# Source-file constructs
+#
+# Meaningful only at beginning of line, works with any number of keys:
+#
+# #if[key] Includes text between #if/#end if -Kkey specified,
+# #else[key] otherwise changes text to blank lines; key test
+# #end[key] may be negated by prefixing !, e.g., #if[!key]
+#
+# #begin If -be is specified then lines up to and including
+# #end #begin, and from #end to EOF, are deleted
+#
+# #warn Changed into warning that file is generated
+#
+# // ## Changed into blank line
+#
+# Meaningful anywhere in line, works only for first two keys:
+#
+# {#if[key]?yes} Expands to yes if -Kkey specified
+# {#if[key]?yes:no} Expands to yes if -Kkey, otherwise no
+# {#if[!key]?yes} Expands to yes if -Kother
+# {#if[!key]?yes:no} Expands to yes if -Kother, otherwise no
+# $var$ Expands to value if -Dvar=value given
+#
+# yes, no must not contain whitespace
+#
+# If the environment variable SED is defined, uses that instead of sed
+# If the environment variable NAWK is defined, uses that instead of awk
+#
+
+SED=${SED:-sed}
+NAWK=${NAWK:-awk}
+
+# Map a string of the form -Dvar=value into an appropriate sed command
+#
+subst() {
+ # The first two lines are to avoid the direct use of echo,
+ # which does not treat backslashes consistently across platforms
+ echo '' \
+ | $SED -e "s.*$*" \
+ | $SED -e 's-D\([a-zA-Z_][-a-zA-Z_]*\)=\(.*\)'"s\\\\\$\\1\\\\\$\2gg" \
+ -e 's-D\([a-zA-Z_][-a-zA-Z_]*\)'"s\\\\\$\\1\\\\\$1gg" \
+ -e 's/ //g'
+}
+
+es=
+be=
+keys=
+key1=_1_
+key2=_2_
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -be)
+ be='-e 1,/^#begin$/d -e /^#end$/,$d'
+ ;;
+ -D*)
+ es="$es -e `subst $1`"
+ ;;
+ -K*)
+ nk=`echo $1 | $SED -e 's/-K//'`
+ if [ "x$keys" = x ]; then keys="$nk"; else keys="$keys $nk"; fi
+ if [ "x$key1" = x_1_ ]; then key1="$nk";
+ elif [ "x$key2" = x_2_ ]; then key2="$nk"; fi
+ ;;
+ *)
+ echo "Usage: $0 [-be] [-Kkey] -Dvar=value ... <in >out"
+ exit 1
+ ;;
+ esac
+ shift
+done
+
+text='[-a-zA-Z0-9&;,.<>/#() ]'
+
+$SED $es \
+ -e 's// /g' \
+ -e "s@^#warn .*@// -- This file was mechanically generated: Do not edit! -- //@" \
+ -e 's-// ##.*$--' $be \
+ -e "s/{#if\[$key1\]?\($text*\):\($text*\)}/\1/g" \
+ -e "s/{#if\[!$key1\]?\($text*\):\($text*\)}/\2/g" \
+ -e "s/{#if\[$key1\]?\($text*\)}/\1/g" \
+ -e "s/{#if\[!$key1\]?\($text*\)}//g" \
+ -e "s/{#if\[$key2\]?\($text*\):\($text*\)}/\1/g" \
+ -e "s/{#if\[!$key2\]?\($text*\):\($text*\)}/\2/g" \
+ -e "s/{#if\[$key2\]?\($text*\)}/\1/g" \
+ -e "s/{#if\[!$key2\]?\($text*\)}//g" \
+ -e "s/{#if\[[a-z]*\]?\($text*\):\($text*\)}/\2/g" \
+ -e "s/{#if\[![a-z]*\]?\($text*\):\($text*\)}/\1/g" \
+ -e "s/{#if\[[a-z]*\]?\($text*\)}//g" \
+ -e "s/{#if\[![a-z]*\]?\($text*\)}/\1/g" \
+| $NAWK \
+ 'function key(s) {
+ i = match(s, "[a-zA-Z][a-zA-Z]*\\]");
+ if (i > 0) return substr(s, i, RLENGTH - 1);
+ return "XYZZY"; }
+ function neg(s) { return match(s, "!") > 0; }
+ BEGIN {
+ KEYS = "'"$keys"'"
+ n = split(KEYS, ks, " *");
+ for (i = 1; i <= n; i++) keys[ks[i]] = 1;
+ top = 1; copy[top] = 1 }
+ /^#if\[!?[a-zA-Z][a-zA-Z]*\]/ \
+ { k = key($0);
+ n = neg($0);
+ stack[++top] = k;
+ if ((k in keys) == !n) {
+ copy[top] = copy[top - 1];
+ } else {
+ copy[top] = 0;
+ }
+ print ""; next }
+ /^#else\[!?[a-zA-Z][a-zA-Z]*\]/ \
+ { k = key($0);
+ if (stack[top] == k) {
+ copy[top] = copy[top - 1] && !copy[top];
+ } else {
+ printf "%d: Mismatched #else key\n", NR | "cat 1>&2";
+ exit 11
+ }
+ print ""; next }
+ /^#end\[!?[a-zA-Z][a-zA-Z]*\]/ \
+ { k = key($0);
+ if (stack[top] == k) {
+ top--;
+ } else {
+ printf "%d: Mismatched #end key\n", NR | "cat 1>&2"
+ exit 11
+ }
+ print ""; next }
+ /^#/ {
+ printf "%d: Malformed #directive\n", NR | "cat 1>&2"
+ exit 11
+ }
+ { if (copy[top]) print; else print "" }'
diff --git a/jdk/make/java/npt/Makefile b/jdk/make/java/npt/Makefile
new file mode 100644
index 0000000..48cab86
--- /dev/null
+++ b/jdk/make/java/npt/Makefile
@@ -0,0 +1,77 @@
+#
+# Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+LIBRARY = npt
+PRODUCT = sun
+LIBRARY_OUTPUT = npt
+
+# Configure the CFLAGS for this library.
+
+FILES_m = mapfile-vers
+
+include $(BUILDDIR)/common/Defs.gmk
+
+SRCDIR=$(SHARE_SRC)/npt
+PSRCDIR=$(PLATFORM_SRC)/npt
+
+# Use the mapfile-vers (See the mapfile located with this Makefile)
+ifdef FILES_m
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+endif
+
+#
+# Files to compile.
+#
+FILES_c = \
+ npt.c \
+ utf.c \
+ utf_md.c
+
+OTHER_INCLUDES = -I$(SRCDIR) -I$(PSRCDIR)
+
+#
+# This removes all asserts in the optimized version
+#
+CPPFLAGS_OPT += -DNDEBUG
+
+#
+# Library to compile.
+#
+include $(BUILDDIR)/common/Library.gmk
+
+# We don't want to link against -ljava
+JAVALIB=
+
+# Add -export options to explicitly spell exported symbols
+ifeq ($(PLATFORM), windows)
+ OTHER_LCF += -export:nptInitialize -export:nptTerminate
+endif
+
+#
+# Add to ambient vpath so we pick up the library files
+#
+vpath %.c $(SRCDIR):$(PSRCDIR)
+
diff --git a/jdk/make/java/npt/mapfile-vers b/jdk/make/java/npt/mapfile-vers
new file mode 100644
index 0000000..7d78a9d
--- /dev/null
+++ b/jdk/make/java/npt/mapfile-vers
@@ -0,0 +1,34 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ nptInitialize;
+ nptTerminate;
+ local:
+ *;
+};
diff --git a/jdk/make/java/redist/FILES.gmk b/jdk/make/java/redist/FILES.gmk
new file mode 100644
index 0000000..a90da60
--- /dev/null
+++ b/jdk/make/java/redist/FILES.gmk
@@ -0,0 +1,56 @@
+#
+# Copyright 1998-2003 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# List of lucida font files that we redistribute.
+#
+
+SHARED_FONTFILES = \
+ $(LIBDIR)/fonts/LucidaTypewriterRegular.ttf \
+ $(LIBDIR)/fonts/LucidaTypewriterBold.ttf \
+ $(LIBDIR)/fonts/LucidaBrightRegular.ttf \
+ $(LIBDIR)/fonts/LucidaBrightDemiBold.ttf \
+ $(LIBDIR)/fonts/LucidaBrightItalic.ttf \
+ $(LIBDIR)/fonts/LucidaBrightDemiItalic.ttf \
+ $(LIBDIR)/fonts/LucidaSansRegular.ttf \
+ $(LIBDIR)/fonts/LucidaSansDemiBold.ttf \
+
+ifeq ($(PLATFORM), linux)
+
+# The oblique versions of the font are derived from the base versions
+# and since 2D can do this derivation on the fly at run time there is no
+# need to redistribute the fonts. An exception to this is on Linux.
+# The reason is that the Lucidas are specified in the font.properties files
+# on Linux, and so AWT/Motif components expect to be able to ask the Xserver
+# for these oblique fonts, but the Xserver cannot do the same derivation as
+# 2D can.
+
+OBLIQUE_FONTFILES = \
+ $(LIBDIR)/oblique-fonts/LucidaTypewriterOblique.ttf \
+ $(LIBDIR)/oblique-fonts/LucidaTypewriterBoldOblique.ttf \
+ $(LIBDIR)/oblique-fonts/LucidaSansOblique.ttf \
+ $(LIBDIR)/oblique-fonts/LucidaSansDemiOblique.ttf \
+
+endif
diff --git a/jdk/make/java/redist/Makefile b/jdk/make/java/redist/Makefile
new file mode 100644
index 0000000..832cd62
--- /dev/null
+++ b/jdk/make/java/redist/Makefile
@@ -0,0 +1,400 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Imports files exported by a hotspot build or provided from an external
+# location into the OUTPUTDIR, and also primes the OUTPUTDIR with files
+# that are provided inside this workspace.
+#
+# IMPORT_LIST contains the list of destination files that are copied
+# from external places (outside this workspace).
+#
+# INTERNAL_IMPORT_LIST is the list of destination files from BUILDDIR.
+#
+
+BUILDDIR = ../..
+PRODUCT = java
+include $(BUILDDIR)/common/Defs.gmk
+
+SERVER_LOCATION = server
+CLIENT_LOCATION = client
+
+DB_SUFFIX = _db
+
+ifeq ($(PLATFORM), windows)
+ LIB_LOCATION = $(BINDIR)
+else
+ LIB_LOCATION = $(LIBDIR)/$(LIBARCH)
+endif
+
+JVM_NAME = $(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX)
+JVMLIB_NAME = $(LIB_PREFIX)jvm.$(LIB_SUFFIX)
+JVMMAP_NAME = $(LIB_PREFIX)jvm.map
+JVMPDB_NAME = $(LIB_PREFIX)jvm.pdb
+LIBJSIG_NAME = $(LIB_PREFIX)jsig.$(LIBRARY_SUFFIX)
+JVMDB_NAME = $(LIB_PREFIX)jvm$(DB_SUFFIX).$(LIBRARY_SUFFIX)
+
+CLASSSHARINGDATA_DIR = $(BUILDDIR)/tools/sharing
+
+# Needed to do file copy
+ABS_BUILDDIR :=$(call FullPath,$(BUILDDIR))
+
+all: build
+
+# List of files created here or coming from BUILDDIR area (this workspace)
+INTERNAL_IMPORT_LIST = $(LIBDIR)/classlist
+
+# List of files coming from outside this workspace
+IMPORT_LIST = $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVM_NAME) \
+ $(LIB_LOCATION)/$(SERVER_LOCATION)/Xusage.txt
+
+# INCLUDE_SA is false on platforms where SA is not supported.
+# On platforms where it is supported, we want to allow it to
+# not be present, at least temporarily. So,
+# if the SA files (well, just sa-jdi.jar) do not exist
+# in the HOTSPOT_IMPORT_PATH, then we won't build SA.
+SA_EXISTS := $(shell if [ -r $(HOTSPOT_IMPORT_PATH)/lib/sa-jdi.jar ] ; then \
+ $(ECHO) true; \
+ else \
+ $(ECHO) false; \
+ fi)
+
+ifeq ($(SA_EXISTS), false)
+ INCLUDE_SA := false
+endif
+
+ifeq ($(INCLUDE_SA), true)
+ IMPORT_LIST += $(LIBDIR)/sa-jdi.jar \
+ $(LIB_LOCATION)/$(SALIB_NAME)
+ ifeq ($(PLATFORM), windows)
+ IMPORT_LIST += $(LIB_LOCATION)/$(SAMAP_NAME) \
+ $(LIB_LOCATION)/$(SAPDB_NAME)
+ endif
+endif # INCLUDE_SA
+
+# Hotspot client is only available on 32-bit builds
+ifeq ($(ARCH_DATA_MODEL), 32)
+ IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME) \
+ $(LIB_LOCATION)/$(CLIENT_LOCATION)/Xusage.txt
+endif
+
+ifeq ($(PLATFORM), windows)
+# Windows vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv Windows
+
+IMPORT_LIST += $(MS_RUNTIME_LIBRARIES:%=$(BINDIR)/%)
+
+# NOTE: These might actually come from BUILDDIR, depends on the settings.
+$(BINDIR)/msvcrt.dll: $(MSVCRT_DLL_PATH)/msvcrt.dll
+ $(install-import-file)
+ $(CHMOD) a+x $@
+$(BINDIR)/msvcr71.dll: $(MSVCR71_DLL_PATH)/msvcr71.dll
+ $(install-import-file)
+ $(CHMOD) a+x $@
+
+# Get the hotspot .map and .pdb files for client and server
+IMPORT_LIST += \
+ $(LIBDIR)/$(JVMLIB_NAME) \
+ $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMMAP_NAME) \
+ $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMPDB_NAME)
+
+# Hotspot client is only available on 32-bit builds
+ifeq ($(ARCH_DATA_MODEL), 32)
+ IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMMAP_NAME) \
+ $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMPDB_NAME)
+endif
+
+$(LIBDIR)/$(JVMLIB_NAME): $(HOTSPOT_LIB_PATH)/$(JVMLIB_NAME)
+ $(install-import-file)
+
+# it is OK for the .map and .pdb files to not exist, so do not force a
+# dependency on them from the bootstrap location, and allow the copy to fail.
+$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMMAP_NAME):
+ @$(prep-target)
+ -$(CP) $(HOTSPOT_CLIENT_PATH)/$(JVMMAP_NAME) $@
+
+$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMMAP_NAME):
+ @$(prep-target)
+ -$(CP) $(HOTSPOT_SERVER_PATH)/$(JVMMAP_NAME) $@
+
+$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMPDB_NAME):
+ @$(prep-target)
+ -$(CP) $(HOTSPOT_CLIENT_PATH)/$(JVMPDB_NAME) $@
+
+$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMPDB_NAME):
+ @$(prep-target)
+ -$(CP) $(HOTSPOT_SERVER_PATH)/$(JVMPDB_NAME) $@
+
+# Windows ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Windows
+else # PLATFORM
+# NOT Windows vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv NOT Windows
+
+IMPORT_LIST += \
+ $(LIB_LOCATION)/$(LIBJSIG_NAME) \
+ $(LIB_LOCATION)/$(SERVER_LOCATION)/$(LIBJSIG_NAME)
+
+ifeq ($(PLATFORM), solaris)
+ IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDB_NAME)
+endif
+
+ifeq ($(ARCH_DATA_MODEL), 32)
+
+IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME)
+
+ifeq ($(PLATFORM), solaris)
+# solaris vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv solaris
+
+ifeq ($(ARCH), sparc)
+ IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/64/$(JVMDB_NAME)
+endif
+
+IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMDB_NAME)
+
+ifeq ($(ARCH), sparc)
+ IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/64/$(JVMDB_NAME)
+endif
+
+# For backwards compatability, make a link of the 32-bit client JVM to $(LIBDIR)
+IMPORT_LIST += $(LIB_LOCATION)/$(JVM_NAME)
+
+# create a link from lib/libjvm.so to client/libjvm.so
+$(LIB_LOCATION)/$(JVM_NAME): $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME)
+ @$(prep-target)
+ $(LN) -s $(CLIENT_LOCATION)/$(JVM_NAME) $@
+
+# solaris ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ solaris
+endif # 32bit solaris
+
+endif # 32bit
+
+# NOT Windows ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ NOT Windows
+
+endif # PLATFORM
+
+$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME): $(HOTSPOT_CLIENT_PATH)/$(JVM_NAME)
+ $(install-import-file)
+
+$(LIB_LOCATION)/$(LIBJSIG_NAME): $(HOTSPOT_SERVER_PATH)/$(LIBJSIG_NAME)
+ $(install-import-file)
+
+$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME) \
+$(LIB_LOCATION)/$(SERVER_LOCATION)/$(LIBJSIG_NAME):
+ @$(prep-target)
+ $(LN) -s ../$(LIBJSIG_NAME) $@
+
+$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMDB_NAME): $(HOTSPOT_CLIENT_PATH)/$(JVMDB_NAME)
+ $(install-import-file)
+
+$(LIB_LOCATION)/$(CLIENT_LOCATION)/64/$(JVMDB_NAME): $(HOTSPOT_CLIENT_PATH)/64/$(JVMDB_NAME)
+ $(install-import-file)
+
+$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDB_NAME): $(HOTSPOT_SERVER_PATH)/$(JVMDB_NAME)
+ $(install-import-file)
+
+$(LIB_LOCATION)/$(SERVER_LOCATION)/64/$(JVMDB_NAME): $(HOTSPOT_SERVER_PATH)/64/$(JVMDB_NAME)
+ $(install-import-file)
+
+$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVM_NAME): $(HOTSPOT_SERVER_PATH)/$(JVM_NAME)
+ $(install-import-file)
+
+$(LIB_LOCATION)/$(SERVER_LOCATION)/Xusage.txt : $(HOTSPOT_SERVER_PATH)/Xusage.txt
+ $(install-import-file)
+
+$(LIB_LOCATION)/$(CLIENT_LOCATION)/Xusage.txt : $(HOTSPOT_CLIENT_PATH)/Xusage.txt
+ $(install-import-file)
+
+ifeq ($(INCLUDE_SA), true)
+# The Serviceability Agent is built in the Hotspot workspace.
+# It contains two files:
+# - sa-jdi.jar: This goes into the same dir as tools.jar.
+# - a shared library: sawindbg.dll on windows / libproc.sa on unix
+# This goes into the same dir as the other
+# shared libs, eg. libjdwp.so.
+$(LIBDIR)/sa-jdi.jar: $(HOTSPOT_IMPORT_PATH)/lib/sa-jdi.jar
+ $(install-import-file)
+
+$(LIB_LOCATION)/$(SALIB_NAME): $(HOTSPOT_SALIB_PATH)/$(SALIB_NAME)
+ $(install-import-file)
+
+ifeq ($(PLATFORM), windows)
+$(LIB_LOCATION)/$(SAPDB_NAME): $(HOTSPOT_SALIB_PATH)/$(SAPDB_NAME)
+ $(install-import-file)
+
+$(LIB_LOCATION)/$(SAMAP_NAME): $(HOTSPOT_SALIB_PATH)/$(SAMAP_NAME)
+ $(install-import-file)
+endif # windows
+endif # INCLUDE_SA
+
+#
+# Specific to OpenJDK building
+#
+ifdef OPENJDK
+
+include $(BUILDDIR)/common/internal/BinaryPlugs.gmk
+
+build: import-binary-plugs
+
+else # !OPENJDK
+
+INTERNAL_IMPORT_LIST += \
+ $(LIBDIR)/security/US_export_policy.jar \
+ $(LIBDIR)/security/local_policy.jar \
+ $(LIBDIR)/jce.jar
+
+$(LIBDIR)/jce.jar: \
+ $(BUILDDIR)/closed/tools/crypto/jce/jce.jar
+ $(install-file)
+$(LIBDIR)/security/US_export_policy.jar: \
+ $(BUILDDIR)/closed/tools/crypto/jce/US_export_policy.jar
+ $(install-file)
+$(LIBDIR)/security/local_policy.jar: \
+ $(BUILDDIR)/closed/tools/crypto/jce/local_policy.jar
+ $(install-file)
+
+endif # OPENJDK
+
+ADDJSUM_JARFILE = $(BUILDTOOLJARDIR)/addjsum.jar
+
+# Construct classlist file
+$(LIBDIR)/classlist: \
+ $(CLASSSHARINGDATA_DIR)/classlist.$(PLATFORM) \
+ $(ADDJSUM_JARFILE)
+ @$(prep-target)
+ @$(RM) -f $@.temp
+ $(BOOT_JAVA_CMD) -jar $(ADDJSUM_JARFILE) \
+ $(CLASSSHARINGDATA_DIR)/classlist.$(PLATFORM) $@.temp
+ $(MV) $@.temp $@
+
+ifndef OPENJDK
+
+# Lucida font files are not included in the OpenJDK distribution.
+# Get names of font files
+include FILES.gmk
+
+# Copy font files into OUTPUTDIR area
+
+FONTFILES = $(SHARED_FONTFILES)
+FONTSDIR = $(LIBDIR)/fonts
+FONTSDIRFILE = $(FONTSDIR)/fonts.dir
+INTERNAL_IMPORT_LIST += $(FONTFILES)
+
+ifneq ($(PLATFORM), windows)
+ INTERNAL_IMPORT_LIST += $(FONTSDIRFILE)
+endif
+
+$(LIBDIR)/fonts/%.ttf: $(CLOSED_SRC)/share/lib/fonts/%.ttf
+ $(install-file)
+
+$(FONTSDIRFILE): $(PLATFORM_SRC)/classes/sun/awt/motif/java.fonts.dir
+ $(install-file)
+
+ifeq ($(PLATFORM), linux)
+
+# The oblique fonts are only needed/wanted on Linux.
+
+OBLFONTSDIR = $(LIBDIR)/oblique-fonts
+OBLFONTSDIRFILE = $(OBLFONTSDIR)/fonts.dir
+INTERNAL_IMPORT_LIST += $(OBLIQUE_FONTFILES) $(OBLFONTSDIRFILE)
+
+$(LIBDIR)/oblique-fonts/%.ttf: $(CLOSED_SRC)/share/lib/fonts/oblique/%.ttf
+ $(install-file)
+
+$(OBLFONTSDIRFILE): $(PLATFORM_SRC)/classes/sun/awt/motif/java.oblique-fonts.dir
+ $(install-file)
+
+endif # linux
+endif # !OPENJDK
+
+# Import internal files (ones that are stashed in this source tree)
+import_internal_files : $(INTERNAL_IMPORT_LIST)
+
+# Import files from the JDK that we are not building
+import_files: $(IMPORT_LIST)
+
+# Get component information variables and rules
+include $(BUILDDIR)/common/internal/ImportComponents.gmk
+
+# Security files we need to import
+SEC_FILES_ZIP=$(ABS_BUILDDIR)/tools/crypto/sec-bin.zip
+SEC_FILES_WIN_ZIP=$(ABS_BUILDDIR)/tools/crypto/sec-windows-bin.zip
+JGSS_WIN32_FILES_ZIP=$(ABS_BUILDDIR)/tools/crypto/jgss-windows-i586-bin.zip
+JGSS_WIN64_FILES_ZIP=$(ABS_BUILDDIR)/tools/crypto/jgss-windows-x64-bin.zip
+
+# Unzip zip file $2 into directory $1 (if $2 exists)
+# Warning: $2 must be absolute path not relative
+define SecUnzipper
+if [ -f $2 ] ; then \
+ $(MKDIR) -p $1; \
+ $(ECHO) "( $(CD) $1 && $(UNZIP) -o $2 )"; \
+ ( $(CD) $1 && $(UNZIP) -o $2 ); \
+fi
+endef
+
+# If sec-bin exists, unpack it into the build directory
+# Also, the library recompile build indirectly depends on two SSL classes,
+# so copy those as well FIXUP
+# if sec-windows-bin exists, unpack it into the build directory
+# if JGSS files exists, unpack it into the build directory
+$(TEMPDIR)/security_imported:
+ @$(prep-target)
+ @$(call SecUnzipper,$(OUTPUTDIR),$(SEC_FILES_ZIP))
+ifeq ($(PLATFORM), windows)
+ @$(call SecUnzipper,$(OUTPUTDIR),$(SEC_FILES_WIN_ZIP))
+endif
+ifeq ($(PLATFORM), windows)
+ ifeq ($(ARCH_DATA_MODEL), 32)
+ @$(call SecUnzipper,$(OUTPUTDIR),$(JGSS_WIN32_FILES_ZIP))
+ else
+ @$(call SecUnzipper,$(OUTPUTDIR),$(JGSS_WIN64_FILES_ZIP))
+ endif
+endif
+ @$(ECHO) "Imported on `$(DATE)`" > $@
+
+# Import all files from other components
+$(TEMPDIR)/components_imported:
+ @$(prep-target)
+ $(call import-component-binaries,$(ABS_OUTPUTDIR))
+ $(call import-component-sources,$(IMPORTSRCDIR))
+ $(call import-component-docs,$(IMPORTDOCDIR))
+ $(call import-component-classes,$(CLASSDESTDIR))
+ @$(ECHO) "Imported on `$(DATE)`" > $@
+
+# Do pretty much everything
+build : import_files \
+ import_internal_files \
+ $(TEMPDIR)/components_imported \
+ $(TEMPDIR)/security_imported
+
+# Clean up what we imported (except for component files)
+clean clobber::
+ $(RM) $(IMPORT_LIST)
+ $(RM) $(INTERNAL_IMPORT_LIST)
+ $(call import-component-sources-clean,$(IMPORTSRCDIR))
+ $(call import-component-docs-clean,$(IMPORTDOCDIR))
+ $(call import-component-classes-clean,$(CLASSDESTDIR))
+ $(RM) $(TEMPDIR)/components_imported
+ $(RM) $(TEMPDIR)/security_imported
+
+.PHONY: import_files import_internal_files
+
diff --git a/jdk/make/java/rmi/Makefile b/jdk/make/java/rmi/Makefile
new file mode 100644
index 0000000..de3940a
--- /dev/null
+++ b/jdk/make/java/rmi/Makefile
@@ -0,0 +1,39 @@
+#
+# Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building java.rmi.*
+#
+
+BUILDDIR = ../..
+
+PACKAGE = java.rmi
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+AUTO_FILES_JAVA_DIRS = java/rmi
+
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/java/security/Makefile b/jdk/make/java/security/Makefile
new file mode 100644
index 0000000..5da905a
--- /dev/null
+++ b/jdk/make/java/security/Makefile
@@ -0,0 +1,107 @@
+#
+# Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = java.security
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Rules
+#
+AUTO_FILES_JAVA_DIRS = java/security
+
+#
+# Directories
+#
+
+PROPS_SRC = $(TOPDIR)/src/share/lib/security/java.security
+SUNPKCS11 =
+
+ifeq ($(PLATFORM), solaris)
+PROPS_SRC = $(TOPDIR)/src/share/lib/security/java.security-solaris
+SUNPKCS11 = sunpkcs11
+
+else # PLATFORM
+
+# Register Microsoft CryptoAPI provider only on (non-64-bit) Windows platform.
+ifeq ($(PLATFORM), windows)
+ ifneq ($(ARCH_DATA_MODEL), 64)
+ PROPS_SRC = $(TOPDIR)/src/share/lib/security/java.security-windows
+ endif
+endif
+endif # PLATFORM
+
+
+PROPS_BUILD = $(LIBDIR)/security/java.security
+
+SUNPKCS11_SRC = $(TOPDIR)/src/share/lib/security/sunpkcs11-solaris.cfg
+SUNPKCS11_BUILD = $(LIBDIR)/security/sunpkcs11-solaris.cfg
+
+POLICY_SRC = $(TOPDIR)/src/share/lib/security/java.policy
+POLICY_BUILD = $(LIBDIR)/security/java.policy
+
+CACERTS_SRC = $(CACERTS_FILE)
+CACERTS_BUILD = $(LIBDIR)/security/cacerts
+
+FILES_class = $(FILES_java:%.java=$(CLASSBINDIR)/%.class)
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Rules.gmk
+
+build: properties $(SUNPKCS11) policy cacerts
+
+install: all
+
+properties: classes $(PROPS_BUILD)
+
+sunpkcs11: classes $(SUNPKCS11_BUILD)
+
+policy: classes $(POLICY_BUILD)
+
+cacerts: classes $(CACERTS_BUILD)
+
+$(PROPS_BUILD): $(PROPS_SRC)
+ $(install-file)
+
+$(SUNPKCS11_BUILD): $(SUNPKCS11_SRC)
+ $(install-file)
+
+$(POLICY_BUILD): $(POLICY_SRC)
+ $(install-file)
+
+$(CACERTS_BUILD): $(CACERTS_SRC)
+ $(install-file)
+
+clean clobber:: .delete.classlist
+ $(RM) -r $(CLASSBINDIR)/java/security
+ $(RM) $(PROPS_BUILD) $(POLICY_BUILD) $(CACERTS_BUILD) $(SUNPKCS11_BUILD)
+
+# Additional Rule for building sun.security.util
+$(CLASSBINDIR)/%.class: $(SHARE_SRC)/sun/%.java
+ @$(ECHO) $? >> $(TEMPDIR)/.classes.list
+
diff --git a/jdk/make/java/sql/Makefile b/jdk/make/java/sql/Makefile
new file mode 100644
index 0000000..61e8047
--- /dev/null
+++ b/jdk/make/java/sql/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all of JDBC
+#
+
+BUILDDIR = ../..
+PACKAGE = java.sql
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile.
+#
+AUTO_FILES_JAVA_DIRS = java/sql
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/java/sun_nio/FILES_java.gmk b/jdk/make/java/sun_nio/FILES_java.gmk
new file mode 100644
index 0000000..d7ca6cd
--- /dev/null
+++ b/jdk/make/java/sun_nio/FILES_java.gmk
@@ -0,0 +1,137 @@
+#
+# Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# This is the list of java classes that will be automatically built
+# from sources. See Exportedfiles.gmk for the list of files which
+# will generate header files
+#
+FILES_java = \
+ sun/nio/cs/StandardCharsets.java \
+ sun/nio/cs/AbstractCharsetProvider.java \
+ sun/nio/cs/HistoricallyNamedCharset.java \
+ sun/nio/cs/Surrogate.java \
+ sun/nio/cs/SingleByteEncoder.java \
+ sun/nio/cs/SingleByteDecoder.java \
+ sun/nio/cs/UnicodeEncoder.java \
+ sun/nio/cs/UnicodeDecoder.java \
+ sun/nio/cs/ISO_8859_1.java \
+ sun/nio/cs/ISO_8859_2.java \
+ sun/nio/cs/ISO_8859_4.java \
+ sun/nio/cs/ISO_8859_5.java \
+ sun/nio/cs/ISO_8859_7.java \
+ sun/nio/cs/ISO_8859_9.java \
+ sun/nio/cs/ISO_8859_13.java \
+ sun/nio/cs/ISO_8859_15.java \
+ sun/nio/cs/IBM437.java \
+ sun/nio/cs/IBM737.java \
+ sun/nio/cs/IBM775.java \
+ sun/nio/cs/IBM850.java \
+ sun/nio/cs/IBM852.java \
+ sun/nio/cs/IBM855.java \
+ sun/nio/cs/IBM857.java \
+ sun/nio/cs/IBM858.java \
+ sun/nio/cs/IBM862.java \
+ sun/nio/cs/IBM866.java \
+ sun/nio/cs/IBM874.java \
+ sun/nio/cs/KOI8_R.java \
+ sun/nio/cs/KOI8_U.java \
+ sun/nio/cs/MS1250.java \
+ sun/nio/cs/MS1251.java \
+ sun/nio/cs/MS1252.java \
+ sun/nio/cs/MS1253.java \
+ sun/nio/cs/MS1254.java \
+ sun/nio/cs/MS1257.java \
+ sun/nio/cs/US_ASCII.java \
+ sun/nio/cs/UTF_16.java \
+ sun/nio/cs/UTF_16BE.java \
+ sun/nio/cs/UTF_16LE.java \
+ sun/nio/cs/UTF_16LE_BOM.java \
+ sun/nio/cs/UTF_32.java \
+ sun/nio/cs/UTF_32BE.java \
+ sun/nio/cs/UTF_32LE.java \
+ sun/nio/cs/UTF_32BE_BOM.java \
+ sun/nio/cs/UTF_32LE_BOM.java
+
+
+FILES_java += \
+ sun/io/Converters.java \
+ sun/io/ByteToCharConverter.java \
+ sun/io/ByteToCharASCII.java \
+ sun/io/ByteToCharUTF8.java \
+ sun/io/ByteToCharUTF16.java \
+ sun/io/ByteToCharUnicode.java \
+ sun/io/ByteToCharUnicodeBig.java \
+ sun/io/ByteToCharUnicodeBigUnmarked.java \
+ sun/io/ByteToCharUnicodeLittle.java \
+ sun/io/ByteToCharUnicodeLittleUnmarked.java \
+ sun/io/CharToByteConverter.java \
+ sun/io/CharToByteASCII.java \
+ sun/io/CharToByteUTF8.java \
+ sun/io/CharToByteUTF16.java \
+ sun/io/CharToByteUnicode.java \
+ sun/io/CharToByteUnicodeBig.java \
+ sun/io/CharToByteUnicodeBigUnmarked.java \
+ sun/io/CharToByteUnicodeLittle.java \
+ sun/io/CharToByteUnicodeLittleUnmarked.java \
+ sun/io/CharacterEncoding.java \
+ sun/io/ConversionBufferFullException.java \
+ sun/io/MalformedInputException.java \
+ sun/io/UnknownCharacterException.java \
+ sun/io/ByteToCharISO8859_1.java \
+ sun/io/CharToByteISO8859_1.java \
+ sun/io/ByteToCharISO8859_2.java \
+ sun/io/CharToByteISO8859_2.java \
+ sun/io/ByteToCharISO8859_4.java \
+ sun/io/CharToByteISO8859_4.java \
+ sun/io/ByteToCharISO8859_5.java \
+ sun/io/CharToByteISO8859_5.java \
+ sun/io/ByteToCharISO8859_7.java \
+ sun/io/CharToByteISO8859_7.java \
+ sun/io/ByteToCharISO8859_9.java \
+ sun/io/CharToByteISO8859_9.java \
+ sun/io/ByteToCharISO8859_13.java \
+ sun/io/CharToByteISO8859_13.java \
+ sun/io/ByteToCharISO8859_15.java \
+ sun/io/CharToByteISO8859_15.java \
+ sun/io/ByteToCharCp1250.java \
+ sun/io/CharToByteCp1250.java \
+ sun/io/ByteToCharCp1251.java \
+ sun/io/CharToByteCp1251.java \
+ sun/io/ByteToCharCp1252.java \
+ sun/io/CharToByteCp1252.java \
+ sun/io/ByteToCharCp1253.java \
+ sun/io/CharToByteCp1253.java \
+ sun/io/ByteToCharCp1254.java \
+ sun/io/CharToByteCp1254.java \
+ sun/io/ByteToCharCp1257.java \
+ sun/io/CharToByteCp1257.java \
+ sun/io/ByteToCharKOI8_R.java \
+ sun/io/CharToByteKOI8_R.java \
+ sun/io/ByteToCharSingleByte.java \
+ sun/io/CharToByteSingleByte.java
+
+
+
diff --git a/jdk/make/java/sun_nio/Makefile b/jdk/make/java/sun_nio/Makefile
new file mode 100644
index 0000000..bf316df
--- /dev/null
+++ b/jdk/make/java/sun_nio/Makefile
@@ -0,0 +1,52 @@
+#
+# Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for sun/nio files
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.nio
+PRODUCT = sun
+
+OTHER_JAVACFLAGS += -Xlint:serial -Werror
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile.
+#
+include FILES_java.gmk
+
+#
+# Install .lib file.
+#
+INSTALL_DOT_LIB = true
+
+include $(BUILDDIR)/common/Classes.gmk
+
+clean::
+ $(RM) -r $(CLASSHDRDIR)
+clobber::
+ $(RM) -r $(CLASSBINDIR)/sun/nio/cs
diff --git a/jdk/make/java/text/FILES_java.gmk b/jdk/make/java/text/FILES_java.gmk
new file mode 100644
index 0000000..67b4c19
--- /dev/null
+++ b/jdk/make/java/text/FILES_java.gmk
@@ -0,0 +1,259 @@
+#
+# Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_java = \
+ java/text/Annotation.java \
+ java/text/AttributedCharacterIterator.java \
+ java/text/AttributedString.java \
+ java/text/BreakDictionary.java \
+ java/text/BreakIterator.java \
+ java/text/Bidi.java \
+ java/text/CharacterIterator.java \
+ java/text/CharacterIteratorFieldDelegate.java \
+ java/text/ChoiceFormat.java \
+ java/text/Collator.java \
+ java/text/CollationElementIterator.java \
+ java/text/CollationKey.java \
+ java/text/CollationRules.java \
+ java/text/DateFormat.java \
+ java/text/DateFormatSymbols.java \
+ java/text/DecimalFormat.java \
+ java/text/DictionaryBasedBreakIterator.java \
+ java/text/DigitList.java \
+ java/text/EntryPair.java \
+ java/text/Format.java \
+ java/text/FieldPosition.java \
+ java/text/DontCareFieldPosition.java \
+ java/text/MergeCollation.java \
+ java/text/MessageFormat.java \
+ java/text/Normalizer.java \
+ java/text/NumberFormat.java \
+ java/text/DecimalFormatSymbols.java \
+ java/text/ParseException.java \
+ java/text/ParsePosition.java \
+ java/text/PatternEntry.java \
+ java/text/RBCollationTables.java \
+ java/text/RBTableBuilder.java \
+ java/text/RuleBasedBreakIterator.java \
+ java/text/RuleBasedCollator.java \
+ java/text/RuleBasedCollationKey.java \
+ java/text/SimpleDateFormat.java \
+ java/text/StringCharacterIterator.java \
+ java/text/spi/BreakIteratorProvider.java \
+ java/text/spi/CollatorProvider.java \
+ java/text/spi/DateFormatProvider.java \
+ java/text/spi/DateFormatSymbolsProvider.java \
+ java/text/spi/DecimalFormatSymbolsProvider.java \
+ java/text/spi/NumberFormatProvider.java \
+ sun/text/SupplementaryCharacterData.java \
+ sun/text/CodePointIterator.java \
+ sun/text/CollatorUtilities.java \
+ sun/text/CompactByteArray.java \
+ sun/text/ComposedCharIter.java \
+ sun/text/IntHashtable.java \
+ sun/text/Normalizer.java \
+ sun/text/SupplementaryCharacterData.java \
+ sun/text/UCompactIntArray.java \
+ sun/text/normalizer/CharTrie.java \
+ sun/text/normalizer/CharacterIteratorWrapper.java \
+ sun/text/normalizer/ICUBinary.java \
+ sun/text/normalizer/ICUData.java \
+ sun/text/normalizer/IntTrie.java \
+ sun/text/normalizer/NormalizerBase.java \
+ sun/text/normalizer/NormalizerDataReader.java \
+ sun/text/normalizer/NormalizerImpl.java \
+ sun/text/normalizer/RangeValueIterator.java \
+ sun/text/normalizer/Replaceable.java \
+ sun/text/normalizer/ReplaceableString.java \
+ sun/text/normalizer/ReplaceableUCharacterIterator.java \
+ sun/text/normalizer/RuleCharacterIterator.java \
+ sun/text/normalizer/SymbolTable.java \
+ sun/text/normalizer/Trie.java \
+ sun/text/normalizer/TrieIterator.java \
+ sun/text/normalizer/UCharacter.java \
+ sun/text/normalizer/UCharacterIterator.java \
+ sun/text/normalizer/UCharacterProperty.java \
+ sun/text/normalizer/UCharacterPropertyReader.java \
+ sun/text/normalizer/UProperty.java \
+ sun/text/normalizer/UTF16.java \
+ sun/text/normalizer/UnicodeMatcher.java \
+ sun/text/normalizer/UnicodeSet.java \
+ sun/text/normalizer/UnicodeSetIterator.java \
+ sun/text/normalizer/Utility.java \
+ sun/text/normalizer/VersionInfo.java \
+ \
+ sun/text/resources/BreakIteratorInfo.java \
+ \
+ sun/text/resources/CollationData.java \
+ sun/text/resources/CollationData_be.java \
+ sun/text/resources/CollationData_bg.java \
+ sun/text/resources/CollationData_ca.java \
+ sun/text/resources/CollationData_cs.java \
+ sun/text/resources/CollationData_da.java \
+ sun/text/resources/CollationData_de.java \
+ sun/text/resources/CollationData_el.java \
+ sun/text/resources/CollationData_en.java \
+ sun/text/resources/CollationData_es.java \
+ sun/text/resources/CollationData_et.java \
+ sun/text/resources/CollationData_fi.java \
+ sun/text/resources/CollationData_fr.java \
+ sun/text/resources/CollationData_hr.java \
+ sun/text/resources/CollationData_hu.java \
+ sun/text/resources/CollationData_is.java \
+ sun/text/resources/CollationData_it.java \
+ sun/text/resources/CollationData_lt.java \
+ sun/text/resources/CollationData_lv.java \
+ sun/text/resources/CollationData_mk.java \
+ sun/text/resources/CollationData_nl.java \
+ sun/text/resources/CollationData_no.java \
+ sun/text/resources/CollationData_pl.java \
+ sun/text/resources/CollationData_pt.java \
+ sun/text/resources/CollationData_ro.java \
+ sun/text/resources/CollationData_ru.java \
+ sun/text/resources/CollationData_sk.java \
+ sun/text/resources/CollationData_sl.java \
+ sun/text/resources/CollationData_sq.java \
+ sun/text/resources/CollationData_sr.java \
+ sun/text/resources/CollationData_sv.java \
+ sun/text/resources/CollationData_tr.java \
+ sun/text/resources/CollationData_uk.java \
+ \
+ sun/text/resources/FormatData.java \
+ sun/text/resources/FormatData_be.java \
+ sun/text/resources/FormatData_be_BY.java \
+ sun/text/resources/FormatData_bg.java \
+ sun/text/resources/FormatData_bg_BG.java \
+ sun/text/resources/FormatData_ca.java \
+ sun/text/resources/FormatData_ca_ES.java \
+ sun/text/resources/FormatData_cs.java \
+ sun/text/resources/FormatData_cs_CZ.java \
+ sun/text/resources/FormatData_da.java \
+ sun/text/resources/FormatData_da_DK.java \
+ sun/text/resources/FormatData_de.java \
+ sun/text/resources/FormatData_de_AT.java \
+ sun/text/resources/FormatData_de_CH.java \
+ sun/text/resources/FormatData_de_DE.java \
+ sun/text/resources/FormatData_de_LU.java \
+ sun/text/resources/FormatData_el.java \
+ sun/text/resources/FormatData_el_CY.java \
+ sun/text/resources/FormatData_el_GR.java \
+ sun/text/resources/FormatData_en.java \
+ sun/text/resources/FormatData_en_US.java \
+ sun/text/resources/FormatData_en_AU.java \
+ sun/text/resources/FormatData_en_CA.java \
+ sun/text/resources/FormatData_en_GB.java \
+ sun/text/resources/FormatData_en_IE.java \
+ sun/text/resources/FormatData_en_IN.java \
+ sun/text/resources/FormatData_en_MT.java \
+ sun/text/resources/FormatData_en_NZ.java \
+ sun/text/resources/FormatData_en_PH.java \
+ sun/text/resources/FormatData_en_SG.java \
+ sun/text/resources/FormatData_en_ZA.java \
+ sun/text/resources/FormatData_es.java \
+ sun/text/resources/FormatData_es_BO.java \
+ sun/text/resources/FormatData_es_AR.java \
+ sun/text/resources/FormatData_es_CL.java \
+ sun/text/resources/FormatData_es_CO.java \
+ sun/text/resources/FormatData_es_CR.java \
+ sun/text/resources/FormatData_es_DO.java \
+ sun/text/resources/FormatData_es_EC.java \
+ sun/text/resources/FormatData_es_ES.java \
+ sun/text/resources/FormatData_es_GT.java \
+ sun/text/resources/FormatData_es_HN.java \
+ sun/text/resources/FormatData_es_MX.java \
+ sun/text/resources/FormatData_es_NI.java \
+ sun/text/resources/FormatData_es_PA.java \
+ sun/text/resources/FormatData_es_PE.java \
+ sun/text/resources/FormatData_es_PR.java \
+ sun/text/resources/FormatData_es_PY.java \
+ sun/text/resources/FormatData_es_SV.java \
+ sun/text/resources/FormatData_es_US.java \
+ sun/text/resources/FormatData_es_UY.java \
+ sun/text/resources/FormatData_es_VE.java \
+ sun/text/resources/FormatData_et.java \
+ sun/text/resources/FormatData_et_EE.java \
+ sun/text/resources/FormatData_fi.java \
+ sun/text/resources/FormatData_fi_FI.java \
+ sun/text/resources/FormatData_fr.java \
+ sun/text/resources/FormatData_fr_BE.java \
+ sun/text/resources/FormatData_fr_CA.java \
+ sun/text/resources/FormatData_fr_CH.java \
+ sun/text/resources/FormatData_fr_FR.java \
+ sun/text/resources/FormatData_fr_LU.java \
+ sun/text/resources/FormatData_ga.java \
+ sun/text/resources/FormatData_ga_IE.java \
+ sun/text/resources/FormatData_hr.java \
+ sun/text/resources/FormatData_hr_HR.java \
+ sun/text/resources/FormatData_hu.java \
+ sun/text/resources/FormatData_hu_HU.java \
+ sun/text/resources/FormatData_in.java \
+ sun/text/resources/FormatData_in_ID.java \
+ sun/text/resources/FormatData_is.java \
+ sun/text/resources/FormatData_is_IS.java \
+ sun/text/resources/FormatData_it.java \
+ sun/text/resources/FormatData_it_CH.java \
+ sun/text/resources/FormatData_it_IT.java \
+ sun/text/resources/FormatData_lt.java \
+ sun/text/resources/FormatData_lt_LT.java \
+ sun/text/resources/FormatData_lv.java \
+ sun/text/resources/FormatData_lv_LV.java \
+ sun/text/resources/FormatData_mk.java \
+ sun/text/resources/FormatData_mk_MK.java \
+ sun/text/resources/FormatData_ms.java \
+ sun/text/resources/FormatData_ms_MY.java \
+ sun/text/resources/FormatData_mt.java \
+ sun/text/resources/FormatData_mt_MT.java \
+ sun/text/resources/FormatData_nl.java \
+ sun/text/resources/FormatData_nl_BE.java \
+ sun/text/resources/FormatData_nl_NL.java \
+ sun/text/resources/FormatData_no.java \
+ sun/text/resources/FormatData_no_NO.java \
+ sun/text/resources/FormatData_no_NO_NY.java \
+ sun/text/resources/FormatData_pl.java \
+ sun/text/resources/FormatData_pl_PL.java \
+ sun/text/resources/FormatData_pt.java \
+ sun/text/resources/FormatData_pt_BR.java \
+ sun/text/resources/FormatData_pt_PT.java \
+ sun/text/resources/FormatData_ro.java \
+ sun/text/resources/FormatData_ro_RO.java \
+ sun/text/resources/FormatData_ru.java \
+ sun/text/resources/FormatData_ru_RU.java \
+ sun/text/resources/FormatData_sk.java \
+ sun/text/resources/FormatData_sk_SK.java \
+ sun/text/resources/FormatData_sl.java \
+ sun/text/resources/FormatData_sl_SI.java \
+ sun/text/resources/FormatData_sq.java \
+ sun/text/resources/FormatData_sq_AL.java \
+ sun/text/resources/FormatData_sr.java \
+ sun/text/resources/FormatData_sr_BA.java \
+ sun/text/resources/FormatData_sr_CS.java \
+ sun/text/resources/FormatData_sr_ME.java \
+ sun/text/resources/FormatData_sr_RS.java \
+ sun/text/resources/FormatData_sv.java \
+ sun/text/resources/FormatData_sv_SE.java \
+ sun/text/resources/FormatData_tr.java \
+ sun/text/resources/FormatData_tr_TR.java \
+ sun/text/resources/FormatData_uk.java \
+ sun/text/resources/FormatData_uk_UA.java
diff --git a/jdk/make/java/text/Makefile b/jdk/make/java/text/Makefile
new file mode 100644
index 0000000..76955e2
--- /dev/null
+++ b/jdk/make/java/text/Makefile
@@ -0,0 +1,104 @@
+#
+# Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+
+PACKAGE = java.text
+PRODUCT = sun
+
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+include FILES_java.gmk
+
+#
+# Include
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+#
+# Rules to add data files BreakIterator
+#
+TEXT_CLASSES = $(BUILDTOOLCLASSDIR)/java.text/classes
+
+# input
+#
+# Notes: sun.text.resources.BreakIteratorRules no longer goes to runtime.
+# They are used at JDK build phase in order to create $(BIFILES) which
+# are used on runtime instead.
+#
+TEXT_SRCDIR = $(SHARE_SRC)/classes/sun/text/resources
+TEXT_SOURCES = $(TEXT_SRCDIR)/BreakIteratorRules.java \
+ $(TEXT_SRCDIR)/BreakIteratorInfo.java
+UNICODEDATA = $(BUILDDIR)/tools/UnicodeData
+
+# output
+TEXT_CLASSDIR = $(CLASSBINDIR)/sun/text/resources
+BIFILES = $(TEXT_CLASSDIR)/CharacterBreakIteratorData \
+ $(TEXT_CLASSDIR)/WordBreakIteratorData \
+ $(TEXT_CLASSDIR)/LineBreakIteratorData \
+ $(TEXT_CLASSDIR)/SentenceBreakIteratorData
+
+ICU_FILES = $(TEXT_CLASSDIR)/unorm.icu \
+ $(TEXT_CLASSDIR)/uprops.icu
+
+# builder
+GENERATEBREAKITERATORDATA_JARFILE = \
+ $(BUILDTOOLJARDIR)/generatebreakiteratordata.jar
+
+$(BIFILES): $(GENERATEBREAKITERATORDATA_JARFILE) \
+ $(UNICODEDATA)/UnicodeData.txt \
+ $(TEXT_SOURCES)
+ $(prep-target)
+ $(RM) -r $(TEXT_CLASSES)
+ $(MKDIR) -p $(TEXT_CLASSES)
+ $(BOOT_JAVAC_CMD) -d $(TEXT_CLASSES) \
+ -sourcepath $(TEXT_SRCDIR) \
+ $(TEXT_SOURCES)
+ $(MKDIR) -p $(TEXT_CLASSDIR)
+ $(BOOT_JAVA_CMD) -Xbootclasspath/p:$(TEXT_CLASSES) \
+ -jar $(GENERATEBREAKITERATORDATA_JARFILE) \
+ -o $(TEXT_CLASSDIR) \
+ -spec $(UNICODEDATA)/UnicodeData.txt
+ @$(java-vm-cleanup)
+
+build: $(BIFILES) $(ICU_FILES)
+
+#
+# Extra rules to copy unorm.icu and uprops.icu
+#
+$(TEXT_CLASSDIR)/unorm.icu: $(TEXT_SRCDIR)/unorm.icu
+ $(install-file)
+
+$(TEXT_CLASSDIR)/uprops.icu: $(TEXT_SRCDIR)/uprops.icu
+ $(install-file)
+
+clean clobber::
+ $(RM) -r $(TEXT_CLASSES)
+ $(RM) -r $(BIFILES)
+ $(RM) $(ICU_FILES)
+
diff --git a/jdk/make/java/util/FILES_java.gmk b/jdk/make/java/util/FILES_java.gmk
new file mode 100644
index 0000000..53dae82
--- /dev/null
+++ b/jdk/make/java/util/FILES_java.gmk
@@ -0,0 +1,40 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_java = \
+ sun/util/resources/LocaleData.java \
+ sun/util/resources/OpenListResourceBundle.java \
+ sun/util/resources/LocaleNamesBundle.java \
+ sun/util/resources/TimeZoneNamesBundle.java \
+ sun/util/resources/TimeZoneNames.java \
+ sun/util/resources/TimeZoneNames_de.java \
+ sun/util/resources/TimeZoneNames_en.java \
+ sun/util/resources/TimeZoneNames_en_CA.java \
+ sun/util/resources/TimeZoneNames_en_GB.java \
+ sun/util/resources/TimeZoneNames_en_IE.java \
+ sun/util/resources/TimeZoneNames_es.java \
+ sun/util/resources/TimeZoneNames_fr.java \
+ sun/util/resources/TimeZoneNames_it.java \
+ sun/util/resources/TimeZoneNames_sv.java
diff --git a/jdk/make/java/util/FILES_properties.gmk b/jdk/make/java/util/FILES_properties.gmk
new file mode 100644
index 0000000..d52aeb5
--- /dev/null
+++ b/jdk/make/java/util/FILES_properties.gmk
@@ -0,0 +1,202 @@
+#
+# Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_compiled_properties = \
+ sun/util/resources/LocaleNames.properties \
+ sun/util/resources/LocaleNames_be.properties \
+ sun/util/resources/LocaleNames_bg.properties \
+ sun/util/resources/LocaleNames_ca.properties \
+ sun/util/resources/LocaleNames_cs.properties \
+ sun/util/resources/LocaleNames_da.properties \
+ sun/util/resources/LocaleNames_de.properties \
+ sun/util/resources/LocaleNames_el.properties \
+ sun/util/resources/LocaleNames_el_CY.properties \
+ sun/util/resources/LocaleNames_en.properties \
+ sun/util/resources/LocaleNames_en_MT.properties \
+ sun/util/resources/LocaleNames_en_PH.properties \
+ sun/util/resources/LocaleNames_en_SG.properties \
+ sun/util/resources/LocaleNames_es.properties \
+ sun/util/resources/LocaleNames_es_US.properties \
+ sun/util/resources/LocaleNames_et.properties \
+ sun/util/resources/LocaleNames_fi.properties \
+ sun/util/resources/LocaleNames_fr.properties \
+ sun/util/resources/LocaleNames_ga.properties \
+ sun/util/resources/LocaleNames_hr.properties \
+ sun/util/resources/LocaleNames_hu.properties \
+ sun/util/resources/LocaleNames_in.properties \
+ sun/util/resources/LocaleNames_is.properties \
+ sun/util/resources/LocaleNames_it.properties \
+ sun/util/resources/LocaleNames_lt.properties \
+ sun/util/resources/LocaleNames_lv.properties \
+ sun/util/resources/LocaleNames_mk.properties \
+ sun/util/resources/LocaleNames_ms.properties \
+ sun/util/resources/LocaleNames_mt.properties \
+ sun/util/resources/LocaleNames_nl.properties \
+ sun/util/resources/LocaleNames_no.properties \
+ sun/util/resources/LocaleNames_pl.properties \
+ sun/util/resources/LocaleNames_pt.properties \
+ sun/util/resources/LocaleNames_pt_BR.properties \
+ sun/util/resources/LocaleNames_pt_PT.properties \
+ sun/util/resources/LocaleNames_ro.properties \
+ sun/util/resources/LocaleNames_ru.properties \
+ sun/util/resources/LocaleNames_sk.properties \
+ sun/util/resources/LocaleNames_sl.properties \
+ sun/util/resources/LocaleNames_sq.properties \
+ sun/util/resources/LocaleNames_sr.properties \
+ sun/util/resources/LocaleNames_sv.properties \
+ sun/util/resources/LocaleNames_tr.properties \
+ sun/util/resources/LocaleNames_uk.properties \
+ \
+ sun/util/resources/CalendarData.properties \
+ sun/util/resources/CalendarData_be.properties \
+ sun/util/resources/CalendarData_bg.properties \
+ sun/util/resources/CalendarData_ca.properties \
+ sun/util/resources/CalendarData_cs.properties \
+ sun/util/resources/CalendarData_da.properties \
+ sun/util/resources/CalendarData_de.properties \
+ sun/util/resources/CalendarData_el.properties \
+ sun/util/resources/CalendarData_el_CY.properties \
+ sun/util/resources/CalendarData_en.properties \
+ sun/util/resources/CalendarData_en_GB.properties \
+ sun/util/resources/CalendarData_en_IE.properties \
+ sun/util/resources/CalendarData_en_MT.properties \
+ sun/util/resources/CalendarData_es.properties \
+ sun/util/resources/CalendarData_es_ES.properties \
+ sun/util/resources/CalendarData_es_US.properties \
+ sun/util/resources/CalendarData_et.properties \
+ sun/util/resources/CalendarData_fi.properties \
+ sun/util/resources/CalendarData_fr.properties \
+ sun/util/resources/CalendarData_fr_CA.properties \
+ sun/util/resources/CalendarData_hr.properties \
+ sun/util/resources/CalendarData_hu.properties \
+ sun/util/resources/CalendarData_in_ID.properties \
+ sun/util/resources/CalendarData_is.properties \
+ sun/util/resources/CalendarData_it.properties \
+ sun/util/resources/CalendarData_lt.properties \
+ sun/util/resources/CalendarData_lv.properties \
+ sun/util/resources/CalendarData_mk.properties \
+ sun/util/resources/CalendarData_ms_MY.properties \
+ sun/util/resources/CalendarData_mt.properties \
+ sun/util/resources/CalendarData_mt_MT.properties \
+ sun/util/resources/CalendarData_nl.properties \
+ sun/util/resources/CalendarData_no.properties \
+ sun/util/resources/CalendarData_pl.properties \
+ sun/util/resources/CalendarData_pt.properties \
+ sun/util/resources/CalendarData_pt_PT.properties \
+ sun/util/resources/CalendarData_ro.properties \
+ sun/util/resources/CalendarData_ru.properties \
+ sun/util/resources/CalendarData_sk.properties \
+ sun/util/resources/CalendarData_sl.properties \
+ sun/util/resources/CalendarData_sq.properties \
+ sun/util/resources/CalendarData_sr.properties \
+ sun/util/resources/CalendarData_sv.properties \
+ sun/util/resources/CalendarData_tr.properties \
+ sun/util/resources/CalendarData_uk.properties \
+ \
+ sun/util/resources/CurrencyNames.properties \
+ sun/util/resources/CurrencyNames_be_BY.properties \
+ sun/util/resources/CurrencyNames_bg_BG.properties \
+ sun/util/resources/CurrencyNames_ca_ES.properties \
+ sun/util/resources/CurrencyNames_cs_CZ.properties \
+ sun/util/resources/CurrencyNames_da_DK.properties \
+ sun/util/resources/CurrencyNames_de.properties \
+ sun/util/resources/CurrencyNames_de_AT.properties \
+ sun/util/resources/CurrencyNames_de_CH.properties \
+ sun/util/resources/CurrencyNames_de_DE.properties \
+ sun/util/resources/CurrencyNames_de_GR.properties \
+ sun/util/resources/CurrencyNames_de_LU.properties \
+ sun/util/resources/CurrencyNames_el_CY.properties \
+ sun/util/resources/CurrencyNames_el_GR.properties \
+ sun/util/resources/CurrencyNames_en_AU.properties \
+ sun/util/resources/CurrencyNames_en_CA.properties \
+ sun/util/resources/CurrencyNames_en_GB.properties \
+ sun/util/resources/CurrencyNames_en_IE.properties \
+ sun/util/resources/CurrencyNames_en_IN.properties \
+ sun/util/resources/CurrencyNames_en_MT.properties \
+ sun/util/resources/CurrencyNames_en_NZ.properties \
+ sun/util/resources/CurrencyNames_en_PH.properties \
+ sun/util/resources/CurrencyNames_en_SG.properties \
+ sun/util/resources/CurrencyNames_en_US.properties \
+ sun/util/resources/CurrencyNames_en_ZA.properties \
+ sun/util/resources/CurrencyNames_es.properties \
+ sun/util/resources/CurrencyNames_es_AR.properties \
+ sun/util/resources/CurrencyNames_es_BO.properties \
+ sun/util/resources/CurrencyNames_es_CL.properties \
+ sun/util/resources/CurrencyNames_es_CO.properties \
+ sun/util/resources/CurrencyNames_es_CR.properties \
+ sun/util/resources/CurrencyNames_es_DO.properties \
+ sun/util/resources/CurrencyNames_es_EC.properties \
+ sun/util/resources/CurrencyNames_es_ES.properties \
+ sun/util/resources/CurrencyNames_es_GT.properties \
+ sun/util/resources/CurrencyNames_es_HN.properties \
+ sun/util/resources/CurrencyNames_es_MX.properties \
+ sun/util/resources/CurrencyNames_es_NI.properties \
+ sun/util/resources/CurrencyNames_es_PA.properties \
+ sun/util/resources/CurrencyNames_es_PE.properties \
+ sun/util/resources/CurrencyNames_es_PR.properties \
+ sun/util/resources/CurrencyNames_es_PY.properties \
+ sun/util/resources/CurrencyNames_es_SV.properties \
+ sun/util/resources/CurrencyNames_es_US.properties \
+ sun/util/resources/CurrencyNames_es_UY.properties \
+ sun/util/resources/CurrencyNames_es_VE.properties \
+ sun/util/resources/CurrencyNames_et_EE.properties \
+ sun/util/resources/CurrencyNames_fi_FI.properties \
+ sun/util/resources/CurrencyNames_fr.properties \
+ sun/util/resources/CurrencyNames_fr_BE.properties \
+ sun/util/resources/CurrencyNames_fr_CA.properties \
+ sun/util/resources/CurrencyNames_fr_CH.properties \
+ sun/util/resources/CurrencyNames_fr_FR.properties \
+ sun/util/resources/CurrencyNames_fr_LU.properties \
+ sun/util/resources/CurrencyNames_ga_IE.properties \
+ sun/util/resources/CurrencyNames_hr_HR.properties \
+ sun/util/resources/CurrencyNames_hu_HU.properties \
+ sun/util/resources/CurrencyNames_in_ID.properties \
+ sun/util/resources/CurrencyNames_is_IS.properties \
+ sun/util/resources/CurrencyNames_it.properties \
+ sun/util/resources/CurrencyNames_it_CH.properties \
+ sun/util/resources/CurrencyNames_it_IT.properties \
+ sun/util/resources/CurrencyNames_lt_LT.properties \
+ sun/util/resources/CurrencyNames_lv_LV.properties \
+ sun/util/resources/CurrencyNames_mk_MK.properties \
+ sun/util/resources/CurrencyNames_ms_MY.properties \
+ sun/util/resources/CurrencyNames_mt_MT.properties \
+ sun/util/resources/CurrencyNames_nl_BE.properties \
+ sun/util/resources/CurrencyNames_nl_NL.properties \
+ sun/util/resources/CurrencyNames_no_NO.properties \
+ sun/util/resources/CurrencyNames_pl_PL.properties \
+ sun/util/resources/CurrencyNames_pt_BR.properties \
+ sun/util/resources/CurrencyNames_pt_PT.properties \
+ sun/util/resources/CurrencyNames_ro_RO.properties \
+ sun/util/resources/CurrencyNames_ru_RU.properties \
+ sun/util/resources/CurrencyNames_sk_SK.properties \
+ sun/util/resources/CurrencyNames_sl_SI.properties \
+ sun/util/resources/CurrencyNames_sq_AL.properties \
+ sun/util/resources/CurrencyNames_sr_BA.properties \
+ sun/util/resources/CurrencyNames_sr_CS.properties \
+ sun/util/resources/CurrencyNames_sr_ME.properties \
+ sun/util/resources/CurrencyNames_sv.properties \
+ sun/util/resources/CurrencyNames_sv_SE.properties \
+ sun/util/resources/CurrencyNames_tr_TR.properties \
+ sun/util/resources/CurrencyNames_uk_UA.properties
diff --git a/jdk/make/java/util/Makefile b/jdk/make/java/util/Makefile
new file mode 100644
index 0000000..624993c
--- /dev/null
+++ b/jdk/make/java/util/Makefile
@@ -0,0 +1,57 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for sun.util.resources that don't need
+# to be part of the bootstrap build.
+#
+
+BUILDDIR = ../..
+
+PACKAGE = java.util.resources
+PRODUCT = java
+
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+
+# Adds more files than before?: AUTO_FILES_JAVA_DIRS=sun/util/resources
+include FILES_java.gmk
+
+# Adds more files than before?: AUTO_FILES_PROPERTIES_DIRS=sun/util/resources
+include FILES_properties.gmk
+
+#
+# Compile properties
+#
+COMPILED_PROPERTIES_SUPERCLASS=LocaleNamesBundle
+
+#
+# Include
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/java/verify/Makefile b/jdk/make/java/verify/Makefile
new file mode 100644
index 0000000..a90862d
--- /dev/null
+++ b/jdk/make/java/verify/Makefile
@@ -0,0 +1,78 @@
+#
+# Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build libverify.so
+#
+
+BUILDDIR = ../..
+PRODUCT = java
+LIBRARY = verify
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Link to libjvm so JVM_ functions can be called.
+#
+OTHER_LDLIBS += $(JVMLIB)
+
+ifeq ($(PLATFORM), windows)
+ #
+ # Don't want JAVALIB
+ #
+ JAVALIB =
+ EXTRA_LIBS =
+ # Files built here do not compile with warning level 3 if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+endif
+
+#
+# Files to compile.
+#
+FILES_c = \
+ check_code.c \
+ check_format.c
+
+#
+# libverify.so needs these 2 header files (opcodes.h opcodes.length)
+# from the VM.
+#
+CPPFLAGS += -I$(SHARE_SRC)/javavm/include
+
+#
+# Targets.
+#
+ifeq ($(PLATFORM), solaris)
+ ifneq ($(ARCH), amd64)
+ FILES_reorder += reorder-$(ARCH)
+ endif
+endif
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# Add to the ambient VPATH.
+#
+vpath %.c $(SHARE_SRC)/native/common
+
diff --git a/jdk/make/java/verify/mapfile-vers b/jdk/make/java/verify/mapfile-vers
new file mode 100644
index 0000000..5f6c73f
--- /dev/null
+++ b/jdk/make/java/verify/mapfile-vers
@@ -0,0 +1,34 @@
+#
+# Copyright 2000-2003 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+SUNWprivate_1.1 {
+ global:
+ VerifyClass;
+ VerifyClassForMajorVersion;
+ VerifyClassname;
+ VerifyFixClassname;
+ local:
+ *;
+};
diff --git a/jdk/make/java/verify/reorder-i586 b/jdk/make/java/verify/reorder-i586
new file mode 100644
index 0000000..56ee8e3
--- /dev/null
+++ b/jdk/make/java/verify/reorder-i586
@@ -0,0 +1,40 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+text: .text%VerifyFixClassname;
+text: .text%VerifyClassname;
+text: .text%skip_over_fieldname: OUTPUTDIR/tmp/java/verify/obj/check_format.o;
+text: .text%skip_over_field_signature: OUTPUTDIR/tmp/java/verify/obj/check_format.o;
+text: .text%VerifyClass;
+text: .text%make_class_info_from_name: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%class_name_to_ID: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%make_class_info: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%free_block: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%verify_method: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%verify_opcode_operands: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%initialize_dataflow: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%signature_to_fieldtype: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%check_register_values: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%pop_stack: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%update_registers: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%push_stack: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%merge_into_successors: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%cp_index_to_class_fullinfo: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%set_protected: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%merge_into_one_successor: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%merge_registers: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+# Test Exit
+# Test Hello
+text: .text%merge_fullinfo_types: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%isAssignableTo: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+# Test Sleep
+text: .text%isLegalTarget: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%verify_constant_pool_type: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+# Test IntToString
+# Test LoadToolkit
+# Test LoadFrame
+# Test LoadJFrame
+# Test JHello
+# SwingSet
+text: .text%copy_stack: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%ntohl: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
diff --git a/jdk/make/java/verify/reorder-sparc b/jdk/make/java/verify/reorder-sparc
new file mode 100644
index 0000000..17e1346
--- /dev/null
+++ b/jdk/make/java/verify/reorder-sparc
@@ -0,0 +1,44 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+text: .text%VerifyFixClassname;
+text: .text%VerifyClassname;
+text: .text%skip_over_fieldname: OUTPUTDIR/tmp/java/verify/obj/check_format.o;
+text: .text%VerifyClass;
+text: .text%CCinit: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%initialize_class_hash;
+text: .text%make_class_info_from_name: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%make_class_info: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%verify_method: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%instruction_length: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%verify_opcode_operands: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%initialize_exception_table: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%initialize_dataflow: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%signature_to_fieldtype: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%check_register_values: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%pop_stack: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%update_registers: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%push_stack: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%merge_into_successors: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%pop_and_free: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%cp_index_to_class_fullinfo: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%set_protected: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%merge_into_one_successor: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%merge_stack: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%merge_registers: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%finalize_class_hash: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%CCdestroy: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+# Test Exit
+# Test Hello
+text: .text%merge_fullinfo_types: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+# Test LoadFrame
+text: .text%verify_constant_pool_type: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+# Test LoadJFrame
+# Test JHello
+# SwingSet
+text: .text%verify_field: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%check_and_push: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
+text: .text%signature_to_args_size: OUTPUTDIR/tmp/java/verify/obj/check_code.o;
diff --git a/jdk/make/java/verify/reorder-sparcv9 b/jdk/make/java/verify/reorder-sparcv9
new file mode 100644
index 0000000..1f58d56
--- /dev/null
+++ b/jdk/make/java/verify/reorder-sparcv9
@@ -0,0 +1,45 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+text: .text%VerifyFixClassname;
+text: .text%next_utf2unicode: OUTPUTDIR/tmp/java/verify/obj64/check_format.o;
+text: .text%VerifyClassname;
+text: .text%skip_over_fieldname: OUTPUTDIR/tmp/java/verify/obj64/check_format.o;
+text: .text%VerifyClass;
+text: .text%CCinit: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%initialize_class_hash;
+text: .text%make_class_info_from_name: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%make_class_info: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%verify_method: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%instruction_length: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%verify_opcode_operands: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%verify_constant_pool_type: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%cp_index_to_class_fullinfo: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%check_and_push: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%pop_and_free: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%set_protected: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%initialize_exception_table: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%merge_fullinfo_types: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%initialize_dataflow: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%signature_to_fieldtype: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%check_register_values: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%pop_stack: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%update_registers: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%push_stack: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%merge_into_successors: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%merge_into_one_successor: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%merge_stack: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%merge_registers: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%finalize_class_hash: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%CCdestroy: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+# Test LoadFrame
+# Test LoadJFrame
+# Test JHello
+# SwingSet
+text: .text%verify_field: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
+text: .text%signature_to_args_size: OUTPUTDIR/tmp/java/verify/obj64/check_code.o;
diff --git a/jdk/make/java/version/Makefile b/jdk/make/java/version/Makefile
new file mode 100644
index 0000000..ae4f60e
--- /dev/null
+++ b/jdk/make/java/version/Makefile
@@ -0,0 +1,47 @@
+#
+# Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile to generate sun/misc/Version.java
+#
+
+BUILDDIR = ../..
+include $(BUILDDIR)/common/Defs.gmk
+
+all build: $(GENSRCDIR)/sun/misc/Version.java
+
+$(GENSRCDIR)/sun/misc/Version.java: \
+ $(SHARE_SRC)/classes/sun/misc/Version-template.java
+ $(prep-target)
+ $(RM) $@.temp
+ $(SED) -e 's/@@launcher_name@@/$(LAUNCHER_NAME)/g' \
+ -e 's/@@java_version@@/$(RELEASE)/g' \
+ -e 's/@@java_runtime_version@@/$(FULL_VERSION)/g' \
+ -e 's/@@java_runtime_name@@/$(RUNTIME_NAME)/g' \
+ $< > $@.temp
+ @$(MV) $@.temp $@
+
+clean clobber:
+ $(RM) $(GENSRCDIR)/sun/misc/Version.java
diff --git a/jdk/make/java/zip/FILES_c.gmk b/jdk/make/java/zip/FILES_c.gmk
new file mode 100644
index 0000000..6426cea
--- /dev/null
+++ b/jdk/make/java/zip/FILES_c.gmk
@@ -0,0 +1,44 @@
+#
+# Copyright 1996-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ CRC32.c \
+ Adler32.c \
+ Deflater.c \
+ Inflater.c \
+ ZipFile.c \
+ ZipEntry.c \
+ zadler32.c \
+ zcrc32.c \
+ deflate.c \
+ trees.c \
+ zutil.c \
+ inflate.c \
+ infblock.c \
+ inftrees.c \
+ infcodes.c \
+ infutil.c \
+ inffast.c \
+ zip_util.c
diff --git a/jdk/make/java/zip/FILES_java.gmk b/jdk/make/java/zip/FILES_java.gmk
new file mode 100644
index 0000000..3e95c9b
--- /dev/null
+++ b/jdk/make/java/zip/FILES_java.gmk
@@ -0,0 +1,49 @@
+#
+# Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+JAVA_ZIP_java = \
+ java/util/zip/Adler32.java \
+ java/util/zip/CRC32.java \
+ java/util/zip/Checksum.java \
+ java/util/zip/CheckedInputStream.java \
+ java/util/zip/CheckedOutputStream.java \
+ java/util/zip/DataFormatException.java \
+ java/util/zip/Deflater.java \
+ java/util/zip/DeflaterInputStream.java \
+ java/util/zip/DeflaterOutputStream.java \
+ java/util/zip/GZIPInputStream.java \
+ java/util/zip/GZIPOutputStream.java \
+ java/util/zip/Inflater.java \
+ java/util/zip/InflaterInputStream.java \
+ java/util/zip/InflaterOutputStream.java \
+ java/util/zip/ZipConstants.java \
+ java/util/zip/ZipEntry.java \
+ java/util/zip/ZipError.java \
+ java/util/zip/ZipException.java \
+ java/util/zip/ZipFile.java \
+ java/util/zip/ZipInputStream.java \
+ java/util/zip/ZipOutputStream.java
+
+FILES_java = $(JAVA_ZIP_java)
diff --git a/jdk/make/java/zip/Makefile b/jdk/make/java/zip/Makefile
new file mode 100644
index 0000000..e25e46f
--- /dev/null
+++ b/jdk/make/java/zip/Makefile
@@ -0,0 +1,87 @@
+#
+# Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+
+BUILDDIR = ../..
+PACKAGE = java.util.zip
+LIBRARY = zip
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+ZLIB_VERSION = 1.1.3
+
+#
+# Files to compile.
+#
+include FILES_c.gmk
+AUTO_FILES_JAVA_DIRS = java/util/zip
+
+FILES_export = \
+ java/util/zip/CRC32.java \
+ java/util/zip/Adler32.java \
+ java/util/zip/Inflater.java \
+ java/util/zip/Deflater.java \
+ java/util/zip/ZipFile.java \
+ java/util/zip/ZipEntry.java \
+ java/util/jar/JarFile.java
+
+ifneq ($(PLATFORM), windows)
+OTHER_CFLAGS += -DUSE_MMAP
+else
+ # Files built here do not compile with warning level 3 if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+endif
+
+#
+# Library to compile.
+#
+ifeq ($(PLATFORM), solaris)
+ ifneq ($(ARCH), amd64)
+ FILES_reorder += reorder-$(ARCH)
+ endif
+endif
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+ifeq ($(PLATFORM), windows)
+OTHER_LCF = -export:ZIP_Open -export:ZIP_Close -export:ZIP_FindEntry \
+ -export:ZIP_ReadEntry -export:ZIP_GetNextEntry
+else
+CPPFLAGS += -UDEBUG
+endif
+
+CPPFLAGS += -I$(SHARE_SRC)/native/java/util/zip/zlib-$(ZLIB_VERSION)
+CPPFLAGS += -I$(SHARE_SRC)/native/java/io
+CPPFLAGS += -I$(PLATFORM_SRC)/native/java/io
+
+#
+# Add to ambient vpath so we pick up the library files
+#
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/zlib-$(ZLIB_VERSION)
+
+#
+# Link to JVM library for JVM_Zip* functions
+#
+OTHER_LDLIBS = $(JVMLIB)
diff --git a/jdk/make/java/zip/mapfile-vers b/jdk/make/java/zip/mapfile-vers
new file mode 100644
index 0000000..443ea67
--- /dev/null
+++ b/jdk/make/java/zip/mapfile-vers
@@ -0,0 +1,81 @@
+#
+# Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_java_util_jar_JarFile_getMetaInfEntryNames;
+ Java_java_util_zip_Adler32_update;
+ Java_java_util_zip_Adler32_updateBytes;
+ Java_java_util_zip_CRC32_update;
+ Java_java_util_zip_CRC32_updateBytes;
+ Java_java_util_zip_Deflater_deflateBytes;
+ Java_java_util_zip_Deflater_end;
+ Java_java_util_zip_Deflater_getAdler;
+ Java_java_util_zip_Deflater_getBytesRead;
+ Java_java_util_zip_Deflater_getBytesWritten;
+ Java_java_util_zip_Deflater_init;
+ Java_java_util_zip_Deflater_initIDs;
+ Java_java_util_zip_Deflater_reset;
+ Java_java_util_zip_Deflater_setDictionary;
+ Java_java_util_zip_Inflater_end;
+ Java_java_util_zip_Inflater_getAdler;
+ Java_java_util_zip_Inflater_getBytesRead;
+ Java_java_util_zip_Inflater_getBytesWritten;
+ Java_java_util_zip_Inflater_inflateBytes;
+ Java_java_util_zip_Inflater_init;
+ Java_java_util_zip_Inflater_initIDs;
+ Java_java_util_zip_Inflater_reset;
+ Java_java_util_zip_Inflater_setDictionary;
+ Java_java_util_zip_ZipEntry_initFields;
+ Java_java_util_zip_ZipEntry_initIDs;
+ Java_java_util_zip_ZipFile_close;
+ Java_java_util_zip_ZipFile_freeEntry;
+ Java_java_util_zip_ZipFile_getCSize;
+ Java_java_util_zip_ZipFile_getEntry;
+ Java_java_util_zip_ZipFile_getMethod;
+ Java_java_util_zip_ZipFile_getNextEntry;
+ Java_java_util_zip_ZipFile_getSize;
+ Java_java_util_zip_ZipFile_getZipMessage;
+ Java_java_util_zip_ZipFile_getTotal;
+ Java_java_util_zip_ZipFile_initIDs;
+ Java_java_util_zip_ZipFile_open;
+ Java_java_util_zip_ZipFile_read;
+
+ ZIP_Close;
+ ZIP_CRC32;
+ ZIP_FindEntry;
+ ZIP_GetEntry;
+ ZIP_GetNextEntry;
+ ZIP_Lock;
+ ZIP_Open;
+ ZIP_Read;
+ ZIP_ReadEntry;
+ ZIP_Unlock;
+
+ local:
+ *;
+};
diff --git a/jdk/make/java/zip/reorder-i586 b/jdk/make/java/zip/reorder-i586
new file mode 100644
index 0000000..d1af81c
--- /dev/null
+++ b/jdk/make/java/zip/reorder-i586
@@ -0,0 +1,68 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+text: .text%ZIP_Open;
+text: .text%ZIP_Open_Generic;
+text: .text%InitializeZip;
+text: .text%allocZip;
+text: .text%readCEN: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj/zip_util.o;
+text: .text%findEND: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj/zip_util.o;
+text: .text%hash: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj/zip_util.o;
+text: .text%isMetaName: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj/zip_util.o;
+text: .text%addMetaName: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj/zip_util.o;
+text: .text%ZIP_FindEntry;
+text: .text%ZIP_GetEntry;
+text: .text%ZIP_Lock;
+text: .text%readLOC: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj/zip_util.o;
+text: .text%ZIP_Unlock;
+text: .text%ZIP_FreeEntry;
+text: .text%Java_java_util_zip_ZipFile_initIDs;
+text: .text%Java_java_util_zip_ZipFile_open;
+text: .text%Java_java_util_zip_ZipFile_getTotal;
+text: .text%Java_java_util_zip_ZipFile_getEntry;
+text: .text%Java_java_util_zip_ZipEntry_initIDs;
+text: .text%Java_java_util_zip_ZipEntry_initFields;
+text: .text%Java_java_util_zip_ZipFile_freeEntry;
+text: .text%Java_java_util_zip_ZipFile_getCSize;
+text: .text%Java_java_util_zip_ZipFile_getSize;
+text: .text%Java_java_util_zip_ZipFile_getMethod;
+text: .text%Java_java_util_zip_Inflater_initIDs;
+text: .text%Java_java_util_zip_Inflater_init;
+text: .text%inflateInit2_;
+text: .text%zcalloc;
+text: .text%inflate_blocks_new;
+text: .text%inflate_blocks_reset;
+text: .text%inflateReset;
+text: .text%Java_java_util_zip_Inflater_inflateBytes;
+text: .text%inflate;
+text: .text%inflate_blocks;
+text: .text%inflate_flush;
+text: .text%Java_java_util_zip_ZipFile_read;
+text: .text%ZIP_Read;
+text: .text%inflate_trees_bits;
+text: .text%huft_build: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj/inftrees.o;
+text: .text%zcfree;
+text: .text%inflate_trees_dynamic;
+text: .text%inflate_codes_new;
+text: .text%inflate_codes;
+text: .text%inflate_fast;
+text: .text%inflate_codes_free;
+text: .text%inflate_trees_fixed;
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%Java_java_util_jar_JarFile_getMetaInfEntryNames;
+text: .text%ZIP_ReadEntry;
+text: .text%InflateFully;
+text: .text%inflateEnd;
+text: .text%inflate_blocks_free;
+# Test LoadFrame
+# Test LoadJFrame
+# Test JHello
+# SwingSet
+text: .text%Java_java_util_zip_Inflater_reset;
+text: .text%Java_java_util_zip_ZipFile_close;
+text: .text%ZIP_Close;
+text: .text%Java_java_util_zip_Inflater_end;
diff --git a/jdk/make/java/zip/reorder-sparc b/jdk/make/java/zip/reorder-sparc
new file mode 100644
index 0000000..b004b3c
--- /dev/null
+++ b/jdk/make/java/zip/reorder-sparc
@@ -0,0 +1,65 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+text: .text%ZIP_Open;
+text: .text%ZIP_Open_Generic;
+text: .text%InitializeZip;
+text: .text%allocZip;
+text: .text%readCEN: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj/zip_util.o;
+text: .text%findEND: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj/zip_util.o;
+text: .text%hash: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj/zip_util.o;
+text: .text%isMetaName: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj/zip_util.o;
+text: .text%addMetaName: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj/zip_util.o;
+text: .text%ZIP_FindEntry;
+text: .text%ZIP_GetEntry;
+text: .text%ZIP_Lock;
+text: .text%ZIP_Unlock;
+text: .text%ZIP_FreeEntry;
+text: .text%Java_java_util_zip_ZipFile_initIDs;
+text: .text%Java_java_util_zip_ZipFile_open;
+text: .text%Java_java_util_zip_ZipFile_getTotal;
+text: .text%Java_java_util_zip_ZipFile_getEntry;
+text: .text%Java_java_util_zip_ZipEntry_initIDs;
+text: .text%Java_java_util_zip_ZipEntry_initFields;
+text: .text%Java_java_util_zip_ZipFile_freeEntry;
+text: .text%Java_java_util_zip_ZipFile_getCSize;
+text: .text%Java_java_util_zip_ZipFile_getSize;
+text: .text%Java_java_util_zip_ZipFile_getMethod;
+text: .text%Java_java_util_zip_Inflater_initIDs;
+text: .text%Java_java_util_zip_Inflater_init;
+text: .text%inflateInit2_;
+text: .text%zcalloc;
+text: .text%inflate_blocks_new;
+text: .text%inflate_blocks_reset;
+text: .text%inflateReset;
+text: .text%Java_java_util_zip_Inflater_inflateBytes;
+text: .text%inflate;
+text: .text%inflate_blocks;
+text: .text%inflate_flush;
+text: .text%Java_java_util_zip_ZipFile_read;
+text: .text%ZIP_Read;
+text: .text%inflate_trees_bits;
+text: .text%huft_build: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj/inftrees.o;
+text: .text%zcfree;
+text: .text%inflate_trees_dynamic;
+text: .text%inflate_codes_new;
+text: .text%inflate_codes;
+text: .text%inflate_fast;
+text: .text%inflate_codes_free;
+text: .text%inflate_trees_fixed;
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%Java_java_util_jar_JarFile_getMetaInfEntryNames;
+# Test LoadFrame
+# Test LoadJFrame
+# Test JHello
+# SwingSet
+text: .text%Java_java_util_zip_Inflater_reset;
+text: .text%Java_java_util_zip_Inflater_end;
+text: .text%inflateEnd;
+text: .text%inflate_blocks_free;
+text: .text%Java_java_util_zip_ZipFile_close;
+text: .text%ZIP_Close;
diff --git a/jdk/make/java/zip/reorder-sparcv9 b/jdk/make/java/zip/reorder-sparcv9
new file mode 100644
index 0000000..e1061f8
--- /dev/null
+++ b/jdk/make/java/zip/reorder-sparcv9
@@ -0,0 +1,68 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+text: .text%ZIP_Open;
+text: .text%ZIP_Open_Generic;
+text: .text%InitializeZip;
+text: .text%allocZip;
+text: .text%readCEN: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj64/zip_util.o;
+text: .text%findEND: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj64/zip_util.o;
+text: .text%hash: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj64/zip_util.o;
+text: .text%isMetaName: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj64/zip_util.o;
+text: .text%addMetaName: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj64/zip_util.o;
+text: .text%ZIP_FindEntry;
+text: .text%ZIP_GetEntry;
+text: .text%ZIP_Lock;
+text: .text%readLOC: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj64/zip_util.o;
+text: .text%ZIP_Unlock;
+text: .text%ZIP_FreeEntry;
+text: .text%Java_java_util_zip_ZipFile_initIDs;
+text: .text%Java_java_util_zip_ZipFile_open;
+text: .text%Java_java_util_zip_ZipFile_getTotal;
+text: .text%Java_java_util_zip_ZipFile_getEntry;
+text: .text%Java_java_util_zip_ZipEntry_initIDs;
+text: .text%Java_java_util_zip_ZipEntry_initFields;
+text: .text%Java_java_util_zip_ZipFile_freeEntry;
+text: .text%Java_java_util_zip_ZipFile_getCSize;
+text: .text%Java_java_util_zip_ZipFile_getSize;
+text: .text%Java_java_util_zip_ZipFile_getMethod;
+text: .text%Java_java_util_zip_Inflater_initIDs;
+text: .text%Java_java_util_zip_Inflater_init;
+text: .text%inflateInit2_;
+text: .text%zcalloc;
+text: .text%inflate_blocks_new;
+text: .text%inflate_blocks_reset;
+text: .text%inflateReset;
+text: .text%Java_java_util_zip_Inflater_inflateBytes;
+text: .text%inflate;
+text: .text%inflate_blocks;
+text: .text%inflate_flush;
+text: .text%Java_java_util_zip_ZipFile_read;
+text: .text%ZIP_Read;
+text: .text%inflate_trees_bits;
+text: .text%huft_build: OUTPUTDIR/tmp/sun/java.util.zip/zip/obj64/inftrees.o;
+text: .text%zcfree;
+text: .text%inflate_trees_dynamic;
+text: .text%inflate_codes_new;
+text: .text%inflate_codes;
+text: .text%inflate_fast;
+text: .text%inflate_codes_free;
+text: .text%inflate_trees_fixed;
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%Java_java_util_jar_JarFile_getMetaInfEntryNames;
+text: .text%ZIP_ReadEntry;
+text: .text%InflateFully;
+text: .text%inflateEnd;
+text: .text%inflate_blocks_free;
+# Test LoadFrame
+# Test LoadJFrame
+# Test JHello
+# SwingSet
+text: .text%Java_java_util_zip_Inflater_reset;
+text: .text%Java_java_util_zip_ZipFile_close;
+text: .text%ZIP_Close;
+text: .text%Java_java_util_zip_Inflater_end;
diff --git a/jdk/make/javax/Makefile b/jdk/make/javax/Makefile
new file mode 100644
index 0000000..c81d5f1
--- /dev/null
+++ b/jdk/make/javax/Makefile
@@ -0,0 +1,70 @@
+#
+# Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building javax
+#
+
+BUILDDIR = ..
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = \
+ javax/naming \
+ com/sun/naming/internal \
+ javax/net \
+ javax/script \
+ javax/security/auth \
+ javax/security/cert \
+ javax/security/sasl \
+ javax/smartcardio \
+ javax/tools \
+ javax/xml
+
+# imageio uses xml, so build it last
+
+SUBDIRS = \
+ accessibility \
+ print \
+ swing \
+ crypto \
+ sound \
+ sql \
+ rmi \
+ management \
+ imageio
+
+all build:
+ $(SUBDIRS-loop)
+clean clobber::
+ $(SUBDIRS-loop)
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/javax/accessibility/Makefile b/jdk/make/javax/accessibility/Makefile
new file mode 100644
index 0000000..59f0446
--- /dev/null
+++ b/jdk/make/javax/accessibility/Makefile
@@ -0,0 +1,48 @@
+#
+# Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = java.accessibility
+PRODUCT = java
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = javax/accessibility
+
+#
+# Resources
+#
+LOCALE_SUFFIXES += en
+LOCALE_SET_DEFINITION = jre
+RESOURCE_BUNDLES_COMPILED_PROPERTIES = \
+ com/sun/accessibility/internal/resources/accessibility.properties
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/javax/crypto/Defs-jce.gmk b/jdk/make/javax/crypto/Defs-jce.gmk
new file mode 100644
index 0000000..c1ef30d
--- /dev/null
+++ b/jdk/make/javax/crypto/Defs-jce.gmk
@@ -0,0 +1,115 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+include $(BUILDDIR)/common/Release.gmk
+
+#
+# Include these extra attributes for now, should probably take out.
+#
+JCE_MANIFEST_FILE = $(TEMPDIR)/manifest.mf
+$(JCE_MANIFEST_FILE): $(MAINMANIFEST)
+ $(prep-target)
+ ( $(SED) "s/@@RELEASE@@/$(RELEASE)/" $(MAINMANIFEST); \
+ $(ECHO) "Extension-Name: javax.crypto"; \
+ $(ECHO) "Implementation-Vendor-Id: com.sun"; ) > $@
+
+README-MAKEFILE_WARNING = \
+ "\nPlease read make/javax/crypto/Makefile for further build instructions."
+
+define no-source-warning
+ @$(ECHO) "\n***JCE sources are not available, skipping build.***" \
+ $(README-MAKEFILE_WARNING)
+endef
+
+ifndef OPENJDK
+
+PREBUILT_DIR = $(BUILDDIR)/closed/tools/crypto
+
+define build-warning
+ @$(ECHO) "\n***JCE in JDK builds require special tools/procedures.***" \
+ $(README-MAKEFILE_WARNING)
+endef
+
+#
+# Location for JCE codesigning key.
+#
+SIGNING_KEY_DIR = /security/ws/JCE-signing/src
+SIGNING_KEYSTORE = $(SIGNING_KEY_DIR)/KeyStore.jks
+SIGNING_PASSPHRASE = $(SIGNING_KEY_DIR)/passphrase.txt
+SIGNING_ALIAS = jce_rsa
+
+#
+# Defines for signing/obfuscating the various jar files.
+#
+
+define presign
+ @if [ ! -f $(SIGNING_KEYSTORE) -o ! -f $(SIGNING_PASSPHRASE) ]; then \
+ $(ECHO) "\n$(SIGNING_KEYSTORE): Signing mechanism *NOT* available..." \
+ $(README-MAKEFILE_WARNING); \
+ exit 2; \
+ fi
+endef
+
+define sign-target
+ $(BOOT_JARSIGNER_CMD) -keystore $(SIGNING_KEYSTORE) \
+ $@ $(SIGNING_ALIAS) < $(SIGNING_PASSPHRASE)
+ @$(ECHO) "\nJar codesigning finished."
+endef
+
+RELEASE_DIR = $(OUTPUTDIR)/jce-release
+
+define release-warning
+ @$(ECHO) \
+ "\n***The jar files built by the \"release\" target must***" \
+ "\n***still be checked into the closed workspace! ***" \
+ $(README-MAKEFILE_WARNING)
+endef
+
+#
+# Convenience macro for steps needed to sign a jar file.
+#
+define sign-file
+ $(presign)
+ $(install-file)
+ $(sign-target)
+ @$(java-vm-cleanup)
+endef
+
+#
+# Location for the Obfuscation product. JDK currently has
+# the requirement that we obfuscate our JCE jars.
+#
+OBFUSCATOR = /security/tools/bin/obfus
+OBFUS_DIR = $(TEMPDIR)/obfus
+
+define preobfus
+ @if [ ! -f $(OBFUSCATOR) ]; then \
+ $(ECHO) "\n$(OBFUSCATOR): Obfuscator *NOT* available..." \
+ $(README-MAKEFILE_WARNING); \
+ exit 2; \
+ fi
+endef
+
+endif # !OPENJDK
diff --git a/jdk/make/javax/crypto/Makefile b/jdk/make/javax/crypto/Makefile
new file mode 100644
index 0000000..98b8a91
--- /dev/null
+++ b/jdk/make/javax/crypto/Makefile
@@ -0,0 +1,487 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building jce.jar and the various cryptographic strength
+# policy jar files.
+#
+
+#
+# (The terms "OpenJDK" and "JDK" below refer to OpenJDK and Sun JDK builds
+# respectively.)
+#
+# JCE builds are very different between OpenJDK and JDK. The OpenJDK JCE
+# jar files do not require signing, but those for JDK do. If an unsigned
+# jar file is installed into JDK, things will break when the crypto
+# routines are called.
+#
+# This Makefile does the "real" build of the JCE files. There are some
+# javac options currently specific to JCE, so we recompile now to make
+# sure any implicit compilations didn't use any incorrect flags.
+#
+# For OpenJDK, the jar files built here are installed directly into the
+# OpenJDK.
+#
+# For JDK, the binaries use pre-built/pre-signed/pre-obfuscated binary
+# files stored in the closed workspace that are not shipped in the
+# OpenJDK workspaces. We still build the JDK files here to verify the
+# files compile, and in preparation for possible signing and
+# obfuscation. Developers working on JCE in JDK must sign the JCE files
+# before testing: obfuscation is optional during development. The JCE
+# signing key is kept separate from the JDK workspace to prevent its
+# disclosure. The obfuscation tool has not been licensed for general
+# usage.
+#
+# SPECIAL NOTE TO JCE/JDK developers: The source files must eventually
+# be built, obfuscated, signed, and the resulting jar files *MUST BE
+# CHECKED INTO THE CLOSED PART OF THE WORKSPACE*. This separate step
+# *MUST NOT BE FORGOTTEN*, otherwise a bug fixed in the source code will
+# not be reflected in the shipped binaries. The "release" target should
+# be used to generate the required files.
+#
+# There are a number of targets to help both JDK/OpenJDK developers.
+#
+# Main Targets (JDK/OPENJDK):
+#
+# all/clobber/clean The usual.
+# If OpenJDK, installs
+# jce.jar/limited policy files.
+# If JDK, installs prebuilt
+# jce.jar/limited policy files.
+#
+# jar Builds/installs jce.jar
+# If OpenJDK, does not sign
+# If JDK, tries to sign
+#
+# Other lesser-used Targets (JDK/OPENJDK):
+#
+# build-jar Builds jce.jar (does not sign/install)
+#
+# build-policy Builds policy files (does not sign/install)
+#
+# install-jar Alias for "jar" above
+#
+# install-limited Builds/installs limited policy files
+# If OpenJDK, does not sign
+# If JDK, tries to sign
+# install-unlimited Builds/nstalls unlimited policy files
+# If OpenJDK, does not sign
+# If JDK, tries to sign
+#
+# Other targets (JDK only):
+#
+# sign Alias for sign-jar and sign-policy
+# sign-jar Builds/signs jce.jar file (no install)
+# sign-policy Builds/signs policy files (no install)
+#
+# obfus Builds/obfuscates/signs/installs jce.jar
+#
+# release Builds all targets in preparation
+# for workspace integration.
+#
+# install-prebuilt Installs the pre-built jar files
+#
+# This makefile was written to support parallel target execution.
+#
+
+BUILDDIR = ../..
+PACKAGE = javax.crypto
+PRODUCT = sun
+
+include $(BUILDDIR)/common/Defs.gmk
+include Defs-jce.gmk
+
+#
+# Location for the newly built classfiles.
+#
+CLASSDESTDIR = $(TEMPDIR)/classes
+
+#
+# Subdirectories of these are automatically included.
+#
+AUTO_FILES_JAVA_DIRS = \
+ javax/crypto \
+ sun/security/internal/interfaces \
+ sun/security/internal/spec
+
+include $(BUILDDIR)/common/Classes.gmk
+
+#
+# Rules
+#
+
+#
+# Some licensees do not get the security sources, but we still need to
+# be able to build "all" for them. Check here to see if the sources were
+# available. If not, then we don't need to continue this rule.
+#
+
+ifdef OPENJDK
+all: build-jar install-jar build-policy install-limited
+else # OPENJDK
+ifeq ($(strip $(FILES_java)),)
+all:
+ $(no-source-warning)
+else # FILES_java/policy files available
+all: build-jar build-policy
+ $(build-warning)
+endif # $(FILES_java)/policy files available
+endif # OPENJDK
+
+#
+# We use a variety of subdirectories in the $(TEMPDIR) depending on what
+# part of the build we're doing. Both OPENJDK/JDK builds are initially
+# done in the unsigned area. When files are signed or obfuscated in JDK,
+# they will be placed in the appropriate areas.
+#
+UNSIGNED_DIR = $(TEMPDIR)/unsigned
+
+
+# =====================================================
+# Build the unsigned jce.jar file. Signing/obfuscation comes later.
+#
+
+JAR_DESTFILE = $(LIBDIR)/jce.jar
+
+#
+# JCE building is somewhat involved.
+#
+# OpenJDK: Since we do not ship prebuilt JCE files, previous compiles
+# in the build may have needed JCE class signatures. There were then
+# implicitly built by javac (likely using the boot javac). While using
+# those class files was fine for signatures, we need to rebuild using
+# the right compiler.
+#
+# JDK: Even through the jce.jar was previously installed, since the
+# source files are accessible in the source directories, they will
+# always be "newer" than the prebuilt files inside the jar, and thus
+# make will always rebuild them. (We could "hide" the JCE source in a
+# separate directory, but that would make the build logic for JDK and
+# OpenJDK more complicated.)
+#
+# Thus in either situation, we shouldn't use these files.
+#
+# To make sure the classes were built with the right compiler options,
+# delete the existing files in $(CLASSBINDIR), rebuild the right way in a
+# directory under $(TEMPDIR), then copy the files back to
+# $(CLASSBINDIR). Building in $(TEMPDIR) allows us to use our make
+# infrastructure without modification: .classes.list, macros, etc.
+#
+
+#
+# The list of directories that will be remade from scratch, using the
+# right compilers/options.
+#
+DELETE_DIRS = $(patsubst %, $(CLASSBINDIR)/%, $(AUTO_FILES_JAVA_DIRS))
+
+#
+# Since the -C option to jar is used below, each directory entry must be
+# preceded with the appropriate directory to "cd" into.
+#
+JAR_DIRS = $(patsubst %, -C $(CLASSDESTDIR) %, $(AUTO_FILES_JAVA_DIRS))
+
+build-jar: $(UNSIGNED_DIR)/jce.jar
+
+#
+# Build jce.jar, then replace the previously built JCE files in the
+# classes directory with these. This ensures we have consistently built
+# files throughout the workspaces.
+#
+$(UNSIGNED_DIR)/jce.jar: prebuild build $(JCE_MANIFEST_FILE)
+ $(prep-target)
+ $(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ $(JAR_DIRS) \
+ $(JAR_JFLAGS)
+ $(CP) -r $(CLASSDESTDIR)/* $(CLASSBINDIR)
+ @$(java-vm-cleanup)
+
+build: prebuild
+
+prebuild:
+ $(RM) -r $(DELETE_DIRS)
+
+
+# =====================================================
+# Build the unsigned policy files.
+#
+# Given the current state of world export/import policies,
+# these settings work for Sun's situation. This note is not
+# legal guidance, you must still resolve any export/import issues
+# applicable for your situation. Contact your export/import
+# counsel for more information.
+#
+
+POLICY_DESTDIR = $(LIBDIR)/security
+UNSIGNED_POLICY_BUILDDIR = $(UNSIGNED_DIR)/policy
+
+build-policy: unlimited limited
+
+#
+# Build the unsigned unlimited policy files.
+#
+unlimited: \
+ $(UNSIGNED_POLICY_BUILDDIR)/unlimited/US_export_policy.jar \
+ $(UNSIGNED_POLICY_BUILDDIR)/unlimited/local_policy.jar
+
+$(UNSIGNED_POLICY_BUILDDIR)/unlimited/US_export_policy.jar: \
+ policy/unlimited/default_US_export.policy \
+ policy/unlimited/UNLIMITED
+ $(prep-target)
+ $(BOOT_JAR_CMD) cmf policy/unlimited/UNLIMITED $@ \
+ -C policy/unlimited default_US_export.policy \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+$(UNSIGNED_POLICY_BUILDDIR)/unlimited/local_policy.jar: \
+ policy/unlimited/default_local.policy \
+ policy/unlimited/UNLIMITED
+ $(prep-target)
+ $(BOOT_JAR_CMD) cmf policy/unlimited/UNLIMITED $@ \
+ -C policy/unlimited default_local.policy \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+#
+# Build the unsigned limited policy files.
+#
+# NOTE: We currently do not place restrictions on our limited export
+# policy. This was not a typo.
+#
+limited: \
+ $(UNSIGNED_POLICY_BUILDDIR)/limited/US_export_policy.jar \
+ $(UNSIGNED_POLICY_BUILDDIR)/limited/local_policy.jar
+
+$(UNSIGNED_POLICY_BUILDDIR)/limited/US_export_policy.jar: \
+ $(UNSIGNED_POLICY_BUILDDIR)/unlimited/US_export_policy.jar
+ $(install-file)
+
+$(UNSIGNED_POLICY_BUILDDIR)/limited/local_policy.jar: \
+ policy/limited/default_local.policy \
+ policy/limited/exempt_local.policy \
+ policy/limited/LIMITED
+ $(prep-target)
+ $(BOOT_JAR_CMD) cmf policy/limited/LIMITED $@ \
+ -C policy/limited default_local.policy \
+ -C policy/limited exempt_local.policy \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+UNSIGNED_POLICY_FILES = \
+ $(UNSIGNED_POLICY_BUILDDIR)/unlimited/US_export_policy.jar \
+ $(UNSIGNED_POLICY_BUILDDIR)/unlimited/local_policy.jar \
+ $(UNSIGNED_POLICY_BUILDDIR)/limited/US_export_policy.jar \
+ $(UNSIGNED_POLICY_BUILDDIR)/limited/local_policy.jar \
+
+
+ifndef OPENJDK
+# =====================================================
+# Sign the various jar files. Not needed for OpenJDK.
+#
+
+SIGNED_DIR = $(TEMPDIR)/signed
+SIGNED_POLICY_BUILDDIR = $(SIGNED_DIR)/policy
+
+SIGNED_POLICY_FILES = \
+ $(patsubst $(UNSIGNED_POLICY_BUILDDIR)/%,$(SIGNED_POLICY_BUILDDIR)/%, \
+ $(UNSIGNED_POLICY_FILES))
+
+sign: sign-jar sign-policy
+
+sign-jar: $(SIGNED_DIR)/jce.jar
+
+sign-policy: $(SIGNED_POLICY_FILES)
+
+$(SIGNED_DIR)/jce.jar: $(UNSIGNED_DIR)/jce.jar
+ $(sign-file)
+
+$(SIGNED_POLICY_BUILDDIR)/unlimited/US_export_policy.jar: \
+$(UNSIGNED_POLICY_BUILDDIR)/unlimited/US_export_policy.jar
+ $(sign-file)
+
+$(SIGNED_POLICY_BUILDDIR)/unlimited/local_policy.jar: \
+$(UNSIGNED_POLICY_BUILDDIR)/unlimited/local_policy.jar
+ $(sign-file)
+
+$(SIGNED_POLICY_BUILDDIR)/limited/US_export_policy.jar: \
+$(UNSIGNED_POLICY_BUILDDIR)/limited/US_export_policy.jar
+ $(sign-file)
+
+$(SIGNED_POLICY_BUILDDIR)/limited/local_policy.jar: \
+$(UNSIGNED_POLICY_BUILDDIR)/limited/local_policy.jar
+ $(sign-file)
+
+
+# =====================================================
+# Obfuscate/sign/install the JDK build. Not needed for OpenJDK.
+#
+
+OBFUS_DIR = $(TEMPDIR)/obfus
+
+CLOSED_DIR = $(BUILDDIR)/closed/javax/crypto
+
+obfus: $(OBFUS_DIR)/jce.jar
+ $(release-warning)
+
+$(OBFUS_DIR)/jce.jar: build-jar $(JCE_MANIFEST_FILE)
+ $(presign)
+ $(preobfus)
+ @$(ECHO) ">>>Obfuscating JCE framework..."
+ $(prep-target)
+ $(CD) $(OBFUS_DIR); \
+ $(OBFUSCATOR) -fv \
+ $(CURRENT_DIRECTORY)/$(CLOSED_DIR)/obfus/framework.dox
+ @$(CD) $(OBFUS_DIR); $(java-vm-cleanup)
+ @# The sun.security.internal classes are currently not obfuscated
+ @# due to an obfus problem. Manually copy them to the build directory
+ @# so that they are included in the jce.jar file.
+ $(CP) -r $(CLASSDESTDIR)/sun $(OBFUS_DIR)/build
+ $(RM) $(UNSIGNED_DIR)/jce.jar
+ $(BOOT_JAR_CMD) cmf $(JCE_MANIFEST_FILE) $@ \
+ -C $(OBFUS_DIR)/build javax \
+ -C $(OBFUS_DIR)/build sun \
+ $(JAR_JFLAGS)
+ $(sign-target)
+ $(MKDIR) -p $(dir $(JAR_DESTFILE))
+ $(RM) $(JAR_DESTFILE)
+ $(CP) $@ $(JAR_DESTFILE)
+ @$(java-vm-cleanup)
+
+#
+# The current obfuscator has a limitation in that it currently only
+# supports up to v49 class file format. Force v49 classfiles in our
+# builds for now.
+#
+TARGET_CLASS_VERSION = 5
+
+
+# =====================================================
+# Create the Release Engineering files. Obfuscated builds,
+# unlimited policy file distribution, etc.
+#
+
+release: $(OBFUS_DIR)/jce.jar sign-policy
+ $(RM) -r \
+ $(RELEASE_DIR)/UnlimitedJCEPolicy \
+ $(RELEASE_DIR)/jce.jar \
+ $(RELEASE_DIR)/US_export_policy.jar \
+ $(RELEASE_DIR)/local_policy.jar \
+ $(RELEASE_DIR)/UnlimitedJCEPolicy.zip
+ $(MKDIR) -p $(RELEASE_DIR)/UnlimitedJCEPolicy
+ $(CP) $(OBFUS_DIR)/jce.jar $(RELEASE_DIR)
+ $(CP) -r \
+ $(SIGNED_POLICY_BUILDDIR)/limited/US_export_policy.jar \
+ $(SIGNED_POLICY_BUILDDIR)/limited/local_policy.jar \
+ $(RELEASE_DIR)
+ $(CP) \
+ $(SIGNED_POLICY_BUILDDIR)/unlimited/US_export_policy.jar \
+ $(SIGNED_POLICY_BUILDDIR)/unlimited/local_policy.jar \
+ $(RELEASE_DIR)/UnlimitedJCEPolicy
+ $(CP) $(CLOSED_DIR)/doc/COPYRIGHT.html \
+ $(CLOSED_DIR)/doc/README.txt $(RELEASE_DIR)/UnlimitedJCEPolicy
+ cd $(RELEASE_DIR) ; \
+ $(ZIPEXE) -qr UnlimitedJCEPolicy.zip UnlimitedJCEPolicy
+ $(release-warning)
+
+endif # OPENJDK
+
+
+# =====================================================
+# Install routines.
+#
+
+#
+# Install jce.jar, depending on which type is requested.
+#
+install-jar jar: $(JAR_DESTFILE)
+ifndef OPENJDK
+ $(release-warning)
+endif
+
+ifdef OPENJDK
+$(JAR_DESTFILE): $(UNSIGNED_DIR)/jce.jar
+else
+$(JAR_DESTFILE): $(SIGNED_DIR)/jce.jar
+endif
+ $(install-file)
+
+#
+# Install the appropriate policy file, depending on the type of build.
+#
+ifdef OPENJDK
+INSTALL_POLICYDIR = $(UNSIGNED_POLICY_BUILDDIR)
+else
+INSTALL_POLICYDIR = $(SIGNED_POLICY_BUILDDIR)
+endif
+
+install-limited: \
+ $(INSTALL_POLICYDIR)/limited/US_export_policy.jar \
+ $(INSTALL_POLICYDIR)/limited/local_policy.jar
+ $(MKDIR) -p $(POLICY_DESTDIR)
+ $(RM) \
+ $(POLICY_DESTDIR)/US_export_policy.jar \
+ $(POLICY_DESTDIR)/local_policy.jar
+ $(CP) $^ $(POLICY_DESTDIR)
+ifndef OPENJDK
+ $(release-warning)
+endif
+
+install-unlimited: \
+ $(INSTALL_POLICYDIR)/unlimited/US_export_policy.jar \
+ $(INSTALL_POLICYDIR)/unlimited/local_policy.jar
+ $(MKDIR) -p $(POLICY_DESTDIR)
+ $(RM) \
+ $(POLICY_DESTDIR)/US_export_policy.jar \
+ $(POLICY_DESTDIR)/local_policy.jar
+ $(CP) $^ $(POLICY_DESTDIR)
+ifndef OPENJDK
+ $(release-warning)
+endif
+
+ifndef OPENJDK
+install-prebuilt:
+ @$(ECHO) "\n>>>Installing prebuilt JCE framework..."
+ $(RM) $(JAR_DESTFILE) \
+ $(POLICY_DESTDIR)/US_export_policy.jar \
+ $(POLICY_DESTDIR)/local_policy.jar
+ $(CP) $(PREBUILT_DIR)/jce/jce.jar $(JAR_DESTFILE)
+ $(CP) \
+ $(PREBUILT_DIR)/jce/US_export_policy.jar \
+ $(PREBUILT_DIR)/jce/local_policy.jar \
+ $(POLICY_DESTDIR)
+endif
+
+
+# =====================================================
+# Support routines.
+#
+
+clobber clean::
+ $(RM) -r $(JAR_DESTFILE) $(POLICY_DESTDIR)/US_export_policy.jar \
+ $(POLICY_DESTDIR)/local_policy.jar $(DELETE_DIRS) $(TEMPDIR)
+
+.PHONY: build-jar jar build-policy unlimited limited install-jar \
+ install-limited install-unlimited
+ifndef OPENJDK
+.PHONY: sign sign-jar sign-policy obfus release install-prebuilt
+endif
diff --git a/jdk/make/javax/crypto/policy/limited/LIMITED b/jdk/make/javax/crypto/policy/limited/LIMITED
new file mode 100644
index 0000000..b58f7ac
--- /dev/null
+++ b/jdk/make/javax/crypto/policy/limited/LIMITED
@@ -0,0 +1 @@
+Crypto-Strength: limited
diff --git a/jdk/make/javax/crypto/policy/limited/default_local.policy b/jdk/make/javax/crypto/policy/limited/default_local.policy
new file mode 100644
index 0000000..2a6d513
--- /dev/null
+++ b/jdk/make/javax/crypto/policy/limited/default_local.policy
@@ -0,0 +1,14 @@
+// Some countries have import limits on crypto strength. This policy file
+// is worldwide importable.
+
+grant {
+ permission javax.crypto.CryptoPermission "DES", 64;
+ permission javax.crypto.CryptoPermission "DESede", *;
+ permission javax.crypto.CryptoPermission "RC2", 128,
+ "javax.crypto.spec.RC2ParameterSpec", 128;
+ permission javax.crypto.CryptoPermission "RC4", 128;
+ permission javax.crypto.CryptoPermission "RC5", 128,
+ "javax.crypto.spec.RC5ParameterSpec", *, 12, *;
+ permission javax.crypto.CryptoPermission "RSA", *;
+ permission javax.crypto.CryptoPermission *, 128;
+};
diff --git a/jdk/make/javax/crypto/policy/limited/exempt_local.policy b/jdk/make/javax/crypto/policy/limited/exempt_local.policy
new file mode 100644
index 0000000..f3255a2
--- /dev/null
+++ b/jdk/make/javax/crypto/policy/limited/exempt_local.policy
@@ -0,0 +1,13 @@
+// Some countries have import limits on crypto strength. So this file
+// will be useful.
+
+grant {
+ // There is no restriction to any algorithms if KeyRecovery is enforced.
+ permission javax.crypto.CryptoPermission *, "KeyRecovery";
+
+ // There is no restriction to any algorithms if KeyEscrow is enforced.
+ permission javax.crypto.CryptoPermission *, "KeyEscrow";
+
+ // There is no restriction to any algorithms if KeyWeakening is enforced.
+ permission javax.crypto.CryptoPermission *, "KeyWeakening";
+};
diff --git a/jdk/make/javax/crypto/policy/unlimited/UNLIMITED b/jdk/make/javax/crypto/policy/unlimited/UNLIMITED
new file mode 100644
index 0000000..7fc7743
--- /dev/null
+++ b/jdk/make/javax/crypto/policy/unlimited/UNLIMITED
@@ -0,0 +1 @@
+Crypto-Strength: unlimited
diff --git a/jdk/make/javax/crypto/policy/unlimited/default_US_export.policy b/jdk/make/javax/crypto/policy/unlimited/default_US_export.policy
new file mode 100644
index 0000000..67d0acc
--- /dev/null
+++ b/jdk/make/javax/crypto/policy/unlimited/default_US_export.policy
@@ -0,0 +1,5 @@
+// Manufacturing policy file.
+grant {
+ // There is no restriction to any algorithms.
+ permission javax.crypto.CryptoAllPermission;
+};
diff --git a/jdk/make/javax/crypto/policy/unlimited/default_local.policy b/jdk/make/javax/crypto/policy/unlimited/default_local.policy
new file mode 100644
index 0000000..8dc9702
--- /dev/null
+++ b/jdk/make/javax/crypto/policy/unlimited/default_local.policy
@@ -0,0 +1,5 @@
+// Country-specific policy file for countries with no limits on crypto strength.
+grant {
+ // There is no restriction to any algorithms.
+ permission javax.crypto.CryptoAllPermission;
+};
diff --git a/jdk/make/javax/imageio/Makefile b/jdk/make/javax/imageio/Makefile
new file mode 100644
index 0000000..b3f75d1
--- /dev/null
+++ b/jdk/make/javax/imageio/Makefile
@@ -0,0 +1,56 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all of JIIO (Java Image I/O) API
+#
+
+BUILDDIR = ../..
+PACKAGE = javax.imageio
+PRODUCT = jiio
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = javax/imageio com/sun/imageio
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+OTHER_PROPERTIES = com/sun/imageio/plugins/common/iio-plugin.properties
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+build: copy-files
+
+copy-files: $(FILES_copy)
+
+.PHONY: copy-files
+
diff --git a/jdk/make/javax/management/Makefile b/jdk/make/javax/management/Makefile
new file mode 100644
index 0000000..2085e38
--- /dev/null
+++ b/jdk/make/javax/management/Makefile
@@ -0,0 +1,52 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all of JMX
+#
+
+BUILDDIR = ../..
+PACKAGE = javax.management
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = javax/management com/sun/jmx com/sun/management/jmx
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+#
+# Clean up internal-use-only package.
+#
+clean clobber::
+ $(RM) -r $(CLASSDESTDIR)/com/sun/jmx \
+ $(CLASSDESTDIR)/com/sun/management/jmx \
+ $(CLASSDESTDIR)/org/omg/stub/javax/management/remote/rmi \
+
diff --git a/jdk/make/javax/print/Makefile b/jdk/make/javax/print/Makefile
new file mode 100644
index 0000000..b3652f8
--- /dev/null
+++ b/jdk/make/javax/print/Makefile
@@ -0,0 +1,116 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all of JPS (Java Print Service) API
+#
+
+BUILDDIR = ../..
+PACKAGE = javax.print
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = javax/print sun/print
+
+#
+# Files that just need cp.
+#
+SERVICEDIR = $(CLASSBINDIR)/META-INF/services
+
+FILES_copy = \
+ $(SERVICEDIR)/javax.print.StreamPrintServiceFactory \
+ $(SERVICEDIR)/javax.print.PrintServiceLookup
+
+FILES_mkdirs = \
+ $(CLASSBINDIR)/META-INF \
+ $(CLASSBINDIR)/META-INF/services
+
+FILES_copydirs = \
+ $(FILES_mkdirs)
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+RESOURCE_BUNDLES_COMPILED_PROPERTIES = sun/print/resources/serviceui.properties
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+#
+# Rules that copy files.
+#
+
+build: copy-files properties
+
+_PSFONTPROPS = \
+ psfontj2d.properties \
+ psfont.properties.ja \
+
+PSFONTPROPS_SRC = $(SHARE_SRC)/classes/sun/print
+PSFONTPROPS = $(_PSFONTPROPS:%=$(LIBDIR)/%)
+
+_RESOURCES_PRINT = \
+ orientLandscape.png \
+ orientPortrait.png \
+ orientRevLandscape.png \
+ orientRevPortrait.png \
+ oneside.png \
+ duplex.png \
+ tumble.png
+
+
+RESDIR_PRINT = $(CLASSBINDIR)/sun/print/resources
+RESOURCES_PRINT = $(_RESOURCES_PRINT:%=$(RESDIR_PRINT)/%)
+
+$(LIBDIR)/%: $(PSFONTPROPS_SRC)/% $(FONTPROPS)
+ $(install-file)
+
+$(RESDIR_PRINT)/%: $(SHARE_SRC)/classes/sun/print/resources/%
+ $(install-file)
+
+properties: $(LIBDIR) $(PSFONTPROPS) $(RESOURCES_PRINT)
+
+properties.clean:
+ $(RM) $(PSFONTPROPS)
+ $(RM) -r $(RESDIR_PRINT)
+
+copy-files: $(FILES_copy)
+
+$(SERVICEDIR)/%: $(PLATFORM_SRC)/classes/sun/print/services/%
+ $(install-file)
+
+#
+# Clean up internal-use-only package.
+#
+clean::
+ $(RM) -r $(CLASSDESTDIR)/javax/print $(CLASSDESTDIR)/sun/print
+
+.PHONY: copy-files
diff --git a/jdk/make/javax/rmi/Makefile b/jdk/make/javax/rmi/Makefile
new file mode 100644
index 0000000..10910f5
--- /dev/null
+++ b/jdk/make/javax/rmi/Makefile
@@ -0,0 +1,36 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for javax/rmi
+#
+
+BUILDDIR = ../..
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = ssl
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/javax/rmi/ssl/Makefile b/jdk/make/javax/rmi/ssl/Makefile
new file mode 100644
index 0000000..3468f5b
--- /dev/null
+++ b/jdk/make/javax/rmi/ssl/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building RMI SSL socket factories
+#
+
+BUILDDIR = ../../..
+PACKAGE = javax.rmi.ssl
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = javax/rmi/ssl
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/javax/sound/FILES_c.gmk b/jdk/make/javax/sound/FILES_c.gmk
new file mode 100644
index 0000000..eb240cf
--- /dev/null
+++ b/jdk/make/javax/sound/FILES_c.gmk
@@ -0,0 +1,45 @@
+#
+# Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ Utilities.c \
+ Platform.c
+
+FILES_solaris = \
+ PLATFORM_API_SolarisOS_Utils.c \
+ PLATFORM_API_SolarisOS_Ports.c \
+ PLATFORM_API_SolarisOS_PCM.c
+
+FILES_linux =
+
+FILES_windows = \
+ PLATFORM_API_WinOS_MidiIn.c \
+ PLATFORM_API_WinOS_MidiOut.c \
+ PLATFORM_API_WinOS_Util.c \
+ PLATFORM_API_WinOS_Ports.c
+
+FILES_export = \
+ com/sun/media/sound/Platform.java
+
diff --git a/jdk/make/javax/sound/Makefile b/jdk/make/javax/sound/Makefile
new file mode 100644
index 0000000..9b53460
--- /dev/null
+++ b/jdk/make/javax/sound/Makefile
@@ -0,0 +1,224 @@
+#
+# Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# WARNING: Make sure the OPENJDK plugs are up-to-date, see make/common/internal/BinaryPlugs.gmk
+
+BUILDDIR = ../..
+PACKAGE = javax.sound
+LIBRARY = jsound
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+# include defines for sound
+include SoundDefs.gmk
+
+# support for different mixer provider files on different platforms
+#MXSP = javax.sound.sampled.spi.MixerProvider
+# Mixer Service Provider Additional path
+#MXSPP_ADD =
+
+#
+# Add use of mapfile
+#
+FILES_m = mapfile-vers
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+#
+# Files
+#
+include FILES_c.gmk
+
+# add java files
+AUTO_FILES_JAVA_DIRS = javax/sound com/sun/media/sound
+
+#
+# Specific to OpenJDK building
+#
+ifdef OPENJDK
+
+# copy closed .class files
+build: import-binary-plug-sound-classes
+
+include $(BUILDDIR)/common/internal/BinaryPlugs.gmk
+
+endif # OPENJDK
+
+#
+# Files that just need cp.
+#
+SERVICEDIR = $(CLASSBINDIR)/META-INF/services
+
+FILES_copy = \
+ $(SERVICEDIR)/javax.sound.midi.spi.MidiDeviceProvider \
+ $(SERVICEDIR)/javax.sound.midi.spi.MidiFileWriter \
+ $(SERVICEDIR)/javax.sound.midi.spi.MidiFileReader \
+ $(SERVICEDIR)/javax.sound.midi.spi.SoundbankReader \
+ $(SERVICEDIR)/javax.sound.sampled.spi.AudioFileWriter \
+ $(SERVICEDIR)/javax.sound.sampled.spi.AudioFileReader \
+ $(SERVICEDIR)/javax.sound.sampled.spi.FormatConversionProvider \
+ $(SERVICEDIR)/javax.sound.sampled.spi.MixerProvider \
+ $(LIBDIR)/audio/soundbank.gm \
+ $(LIBDIR)/sound.properties
+
+FILES_mkdirs = \
+ $(CLASSBINDIR)/META-INF \
+ $(CLASSBINDIR)/META-INF/services \
+ $(LIBDIR)/audio
+
+FILES_copydirs = \
+ $(CLASSBINDIR) \
+ $(LIBDIR) \
+ $(FILES_mkdirs)
+
+FILES_c += $(FILES_$(PLATFORM))
+
+
+#
+# add "closed" library
+#
+SUBDIRS += jsoundhs
+
+#
+# system dependent flags
+#
+ifeq ($(PLATFORM), windows)
+ CPPFLAGS += -DUSE_PLATFORM_MIDI_OUT=TRUE \
+ -DUSE_PLATFORM_MIDI_IN=TRUE \
+ -DUSE_PORTS=TRUE
+ LDLIBS += winmm.lib
+
+ # Windows always provides MIDI and ports
+ INCLUDE_MIDI = TRUE
+ INCLUDE_PORTS = TRUE
+
+ # DirectSound handles directaudio (both i586 and amd64)
+ SUBDIRS += jsoundds
+ EXTRA_SOUND_JNI_LIBS += jsoundds
+ #MXSPP_ADD = $(PLATFORM)-$(ARCH)/
+endif # PLATFORM win32
+
+ifeq ($(PLATFORM), linux)
+ # ALSA handles directaudio, ports, and MIDI
+ SUBDIRS += jsoundalsa
+ EXTRA_SOUND_JNI_LIBS += jsoundalsa
+ #MXSPP_ADD = $(PLATFORM)-$(ARCH)/
+endif # PLATFORM linux
+
+ifeq ($(PLATFORM), solaris)
+ ifneq ($(ARCH), amd64)
+ # build with ports and direct audio
+ CPPFLAGS += -DUSE_PORTS=TRUE \
+ -DUSE_DAUDIO=TRUE
+
+ INCLUDE_PORTS = TRUE
+ INCLUDE_DAUDIO = TRUE
+ INCLUDE_MIDI = TRUE
+ else
+ # build with empty MIDI i/o
+ INCLUDE_MIDI = TRUE
+ # build with empty ports
+ INCLUDE_PORTS = TRUE
+ # build with empty direct audio
+ INCLUDE_DAUDIO = TRUE
+ endif
+endif # PLATFORM solaris
+
+# for dynamic inclusion of extra sound libs: these
+# JNI libs will be loaded from Platform.java
+CPPFLAGS += -DEXTRA_SOUND_JNI_LIBS="\"$(EXTRA_SOUND_JNI_LIBS)\""
+
+# integrate MIDI i/o in jsound lib
+ifeq ($(INCLUDE_MIDI),TRUE)
+ FILES_c += $(MIDIFILES_c)
+ FILES_export += $(MIDIFILES_export)
+endif
+
+# integrate port files in jsound lib
+ifeq ($(INCLUDE_PORTS),TRUE)
+ FILES_c += $(PORTFILES_c)
+ FILES_export += $(PORTFILES_export)
+endif
+
+# integrate port files in jsound lib
+ifeq ($(INCLUDE_DAUDIO),TRUE)
+ FILES_c += $(DAUDIOFILES_c)
+ FILES_export += $(DAUDIOFILES_export)
+endif
+
+#
+# Extra cc/linker flags.
+#
+CPPFLAGS += \
+ -I$(SHARE_SRC)/native/com/sun/media/sound
+
+#
+# Add to the ambient VPATH.
+#
+vpath %.c $(SHARE_SRC)/native/com/sun/media/sound
+vpath %.c $(PLATFORM_SRC)/native/com/sun/media/sound
+vpath %.cpp $(PLATFORM_SRC)/native/com/sun/media/sound
+
+
+#
+# Include rules
+#
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# Rules that copy files.
+#
+
+build: copy-files
+ $(SUBDIRS-loop)
+
+copy-files: $(FILES_copy)
+
+#$(SERVICEDIR)/$(MXSP): $(SHARE_SRC)/classes/com/sun/media/sound/services/$(MXSPP_ADD)$(MXSP)
+# $(install-file)
+
+$(SERVICEDIR)/%: $(SHARE_SRC)/classes/com/sun/media/sound/services/%
+ $(install-file)
+
+$(LIBDIR)/audio/%: $(SHARE_SRC)/lib/audio/%
+ $(install-file)
+
+$(LIBDIR)/%: $(SHARE_SRC)/lib/%
+ $(install-file)
+
+#
+# Since we build more than the javax.sound (as stated in the
+# PACKAGE variable), we need to nuke the extra packages explicitly.
+#
+clean clobber::
+ $(SUBDIRS-loop)
+
+clean clobber::
+ $(RM) -r $(CLASSBINDIR)/com/sun/media/sound $(LIBDIR)/audio
+ $(RM) $(FILES_copy)
+
+#
+# Declare extra phony targets.
+#
+.PHONY: copy-files
diff --git a/jdk/make/javax/sound/SoundDefs.gmk b/jdk/make/javax/sound/SoundDefs.gmk
new file mode 100644
index 0000000..93dfdf4
--- /dev/null
+++ b/jdk/make/javax/sound/SoundDefs.gmk
@@ -0,0 +1,107 @@
+#
+# Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# defines common for all Java Sound native code
+
+SUBDIRS=
+EXTRA_SOUND_JNI_LIBS=
+
+#
+# Extra cc/linker flags.
+#
+# system dependent flags
+ifeq ($(PLATFORM), windows)
+ CPPFLAGS += -DX_PLATFORM=X_WINDOWS
+endif # PLATFORM windows
+
+ifeq ($(PLATFORM), linux)
+ CPPFLAGS += -DX_PLATFORM=X_LINUX
+endif # PLATFORM linux
+
+ifeq ($(PLATFORM), solaris)
+ CPPFLAGS += -DX_PLATFORM=X_SOLARIS
+
+ # Solaris needs specific binding to libc
+ LDFLAGS += -lc
+
+ #
+ # Turn off C++ exception handling.
+ #
+ ifneq ($(CC_VERSION),gcc)
+ CXXFLAGS += -noex
+ endif # CC_VERSION
+
+endif # PLATFORM solaris
+
+ifeq ($(ARCH), i586)
+ CPPFLAGS += -DX_ARCH=X_I586
+endif # ARCH i586
+
+ifeq ($(ARCH), sparc)
+ CPPFLAGS += -DX_ARCH=X_SPARC
+endif # ARCH sparc
+
+ifeq ($(ARCH), sparcv9)
+ CPPFLAGS += -DX_ARCH=X_SPARCV9
+endif # ARCH sparcv9
+
+ifeq ($(ARCH), amd64)
+ CPPFLAGS += -DX_ARCH=X_AMD64
+endif # ARCH amd64
+
+
+# files needed for MIDI i/o
+MIDIFILES_c = \
+ MidiInDevice.c \
+ MidiInDeviceProvider.c \
+ MidiOutDevice.c \
+ MidiOutDeviceProvider.c \
+ PlatformMidi.c
+
+MIDIFILES_export = \
+ com/sun/media/sound/MidiInDevice.java \
+ com/sun/media/sound/MidiInDeviceProvider.java \
+ com/sun/media/sound/MidiOutDevice.java \
+ com/sun/media/sound/MidiOutDeviceProvider.java
+
+# files needed for ports
+PORTFILES_c = \
+ PortMixerProvider.c \
+ PortMixer.c
+
+PORTFILES_export = \
+ com/sun/media/sound/PortMixer.java \
+ com/sun/media/sound/PortMixerProvider.java
+
+# files needed for direct audio
+DAUDIOFILES_c = \
+ DirectAudioDeviceProvider.c \
+ DirectAudioDevice.c
+
+DAUDIOFILES_export = \
+ com/sun/media/sound/DirectAudioDeviceProvider.java \
+ com/sun/media/sound/DirectAudioDevice.java
+
+
diff --git a/jdk/make/javax/sound/jsoundalsa/Makefile b/jdk/make/javax/sound/jsoundalsa/Makefile
new file mode 100644
index 0000000..6fdde65
--- /dev/null
+++ b/jdk/make/javax/sound/jsoundalsa/Makefile
@@ -0,0 +1,91 @@
+#
+# Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = javax.sound
+LIBRARY = jsoundalsa
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+# this Makefile compiles the native files for alsa support in java sound
+
+# include defines for sound
+include ../SoundDefs.gmk
+
+#
+# Use mapfile
+#
+FILES_m = mapfile-vers
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+#
+# Files
+#
+
+FILES_c = \
+ Utilities.c \
+ $(DAUDIOFILES_c) \
+ $(MIDIFILES_c) \
+ $(PORTFILES_c)
+
+# platform dependent files
+FILES_c += \
+ PLATFORM_API_LinuxOS_ALSA_CommonUtils.c \
+ PLATFORM_API_LinuxOS_ALSA_PCM.c \
+ PLATFORM_API_LinuxOS_ALSA_PCMUtils.c \
+ PLATFORM_API_LinuxOS_ALSA_MidiIn.c \
+ PLATFORM_API_LinuxOS_ALSA_MidiOut.c \
+ PLATFORM_API_LinuxOS_ALSA_MidiUtils.c \
+ PLATFORM_API_LinuxOS_ALSA_Ports.c
+
+FILES_export = \
+ $(DAUDIOFILES_export) \
+ $(MIDIFILES_export) \
+ $(PORTFILES_export)
+
+LDFLAGS += -lasound
+
+CPPFLAGS += \
+ -DUSE_DAUDIO=TRUE \
+ -DUSE_PORTS=TRUE \
+ -DUSE_PLATFORM_MIDI_OUT=TRUE \
+ -DUSE_PLATFORM_MIDI_IN=TRUE \
+ -I$(SHARE_SRC)/native/com/sun/media/sound
+
+#
+# Add to the ambient VPATH.
+#
+vpath %.c $(SHARE_SRC)/native/com/sun/media/sound
+vpath %.c $(PLATFORM_SRC)/native/com/sun/media/sound
+vpath %.cpp $(PLATFORM_SRC)/native/com/sun/media/sound
+
+
+#
+# Include rules
+#
+include $(BUILDDIR)/common/Library.gmk
+
+
+
diff --git a/jdk/make/javax/sound/jsoundalsa/mapfile-vers b/jdk/make/javax/sound/jsoundalsa/mapfile-vers
new file mode 100644
index 0000000..8242c12
--- /dev/null
+++ b/jdk/make/javax/sound/jsoundalsa/mapfile-vers
@@ -0,0 +1,82 @@
+#
+# Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define library interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_com_sun_media_sound_DirectAudioDeviceProvider_nGetNumDevices;
+ Java_com_sun_media_sound_DirectAudioDeviceProvider_nNewDirectAudioDeviceInfo;
+ Java_com_sun_media_sound_DirectAudioDevice_nAvailable;
+ Java_com_sun_media_sound_DirectAudioDevice_nClose;
+ Java_com_sun_media_sound_DirectAudioDevice_nFlush;
+ Java_com_sun_media_sound_DirectAudioDevice_nGetBufferSize;
+ Java_com_sun_media_sound_DirectAudioDevice_nGetBytePosition;
+ Java_com_sun_media_sound_DirectAudioDevice_nGetFormats;
+ Java_com_sun_media_sound_DirectAudioDevice_nIsStillDraining;
+ Java_com_sun_media_sound_DirectAudioDevice_nOpen;
+ Java_com_sun_media_sound_DirectAudioDevice_nRead;
+ Java_com_sun_media_sound_DirectAudioDevice_nRequiresServicing;
+ Java_com_sun_media_sound_DirectAudioDevice_nService;
+ Java_com_sun_media_sound_DirectAudioDevice_nSetBytePosition;
+ Java_com_sun_media_sound_DirectAudioDevice_nStart;
+ Java_com_sun_media_sound_DirectAudioDevice_nStop;
+ Java_com_sun_media_sound_DirectAudioDevice_nWrite;
+ Java_com_sun_media_sound_MidiInDeviceProvider_nGetDescription;
+ Java_com_sun_media_sound_MidiInDeviceProvider_nGetName;
+ Java_com_sun_media_sound_MidiInDeviceProvider_nGetNumDevices;
+ Java_com_sun_media_sound_MidiInDeviceProvider_nGetVendor;
+ Java_com_sun_media_sound_MidiInDeviceProvider_nGetVersion;
+ Java_com_sun_media_sound_MidiInDevice_nClose;
+ Java_com_sun_media_sound_MidiInDevice_nGetMessages;
+ Java_com_sun_media_sound_MidiInDevice_nGetTimeStamp;
+ Java_com_sun_media_sound_MidiInDevice_nOpen;
+ Java_com_sun_media_sound_MidiInDevice_nStart;
+ Java_com_sun_media_sound_MidiInDevice_nStop;
+ Java_com_sun_media_sound_MidiOutDeviceProvider_nGetDescription;
+ Java_com_sun_media_sound_MidiOutDeviceProvider_nGetName;
+ Java_com_sun_media_sound_MidiOutDeviceProvider_nGetNumDevices;
+ Java_com_sun_media_sound_MidiOutDeviceProvider_nGetVendor;
+ Java_com_sun_media_sound_MidiOutDeviceProvider_nGetVersion;
+ Java_com_sun_media_sound_MidiOutDevice_nClose;
+ Java_com_sun_media_sound_MidiOutDevice_nGetTimeStamp;
+ Java_com_sun_media_sound_MidiOutDevice_nOpen;
+ Java_com_sun_media_sound_MidiOutDevice_nSendLongMessage;
+ Java_com_sun_media_sound_MidiOutDevice_nSendShortMessage;
+ Java_com_sun_media_sound_PortMixerProvider_nGetNumDevices;
+ Java_com_sun_media_sound_PortMixerProvider_nNewPortMixerInfo;
+ Java_com_sun_media_sound_PortMixer_nClose;
+ Java_com_sun_media_sound_PortMixer_nControlGetFloatValue;
+ Java_com_sun_media_sound_PortMixer_nControlGetIntValue;
+ Java_com_sun_media_sound_PortMixer_nControlSetFloatValue;
+ Java_com_sun_media_sound_PortMixer_nControlSetIntValue;
+ Java_com_sun_media_sound_PortMixer_nGetControls;
+ Java_com_sun_media_sound_PortMixer_nGetPortCount;
+ Java_com_sun_media_sound_PortMixer_nGetPortName;
+ Java_com_sun_media_sound_PortMixer_nGetPortType;
+ Java_com_sun_media_sound_PortMixer_nOpen;
+ local:
+ *;
+};
diff --git a/jdk/make/javax/sound/jsoundds/Makefile b/jdk/make/javax/sound/jsoundds/Makefile
new file mode 100644
index 0000000..5dcd336
--- /dev/null
+++ b/jdk/make/javax/sound/jsoundds/Makefile
@@ -0,0 +1,71 @@
+#
+# Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = javax.sound
+LIBRARY = jsoundds
+PRODUCT = sun
+CPLUSPLUSLIBRARY = true
+include $(BUILDDIR)/common/Defs.gmk
+
+# this Makefile compiles the native files for DirectSound support in java sound
+
+# include defines for sound
+include ../SoundDefs.gmk
+
+#
+# Files
+#
+
+FILES_c = \
+ Utilities.c \
+ $(DAUDIOFILES_c)
+
+FILES_cpp = \
+ PLATFORM_API_WinOS_DirectSound.cpp
+
+FILES_export = \
+ $(DAUDIOFILES_export)
+
+#
+# Extra cc/linker flags.
+#
+LDLIBS += dsound.lib winmm.lib user32.lib
+CPPFLAGS += \
+ -DUSE_DAUDIO=TRUE \
+ -I$(SHARE_SRC)/native/com/sun/media/sound \
+ -I$(DXSDK_INCLUDE_PATH)
+
+#
+# Add to the ambient VPATH.
+#
+vpath %.c $(SHARE_SRC)/native/com/sun/media/sound
+vpath %.c $(PLATFORM_SRC)/native/com/sun/media/sound
+vpath %.cpp $(PLATFORM_SRC)/native/com/sun/media/sound
+
+#
+# Include rules
+#
+include $(BUILDDIR)/common/Library.gmk
diff --git a/jdk/make/javax/sound/jsoundhs/FILES.gmk b/jdk/make/javax/sound/jsoundhs/FILES.gmk
new file mode 100644
index 0000000..6bc7a57
--- /dev/null
+++ b/jdk/make/javax/sound/jsoundhs/FILES.gmk
@@ -0,0 +1,91 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ Utilities.c \
+ MixerThread.c \
+ HeadspaceMixer.c \
+ MixerClip.c \
+ MixerSourceLine.c \
+ SimpleInputDevice.c \
+ SimpleInputDeviceProvider.c \
+ HeadspaceSoundbank.c \
+ MixerMidiChannel.c \
+ AbstractPlayer.c \
+ MixerSequencer.c \
+ MixerSynth.c
+
+FILES_engine = \
+ DriverTools.c \
+ GenAudioCaptureStreams.c \
+ GenAudioStreams.c \
+ GenOutput.c \
+ GenPatch.c \
+ GenReverb.c \
+ GenSample.c \
+ GenSeq.c \
+ GenSetup.c \
+ GenSong.c \
+ GenSynth.c \
+ GenSynthFilters.c \
+ GenSynthInterp2.c \
+ GenSynthResample.c \
+ NewNewLZSS.c \
+ SampleTools.c \
+ SMOD_Volume_Scaler.c \
+ X_API.c \
+ X_Decompress.c \
+ X_IMA.c \
+ GenFiltersReverb.c \
+ GenInterp2Reverb.c \
+ GenSoundFiles.c \
+ SincResample.c
+
+FILES_solaris = \
+ HAE_API_SolarisOS.c \
+ HAE_API_SolarisOS_Capture.c
+
+FILES_linux = \
+ HAE_API_LinuxOS.c \
+ HAE_API_LinuxOS_Capture.c
+
+FILES_windows = \
+ HAE_API_WinOS.c \
+ HAE_API_WinOS_Capture.c \
+ HAE_API_WinOS_Synth.c
+
+FILES_export = \
+ com/sun/media/sound/AbstractPlayer.java \
+ com/sun/media/sound/HeadspaceMixer.java \
+ com/sun/media/sound/HeadspaceSoundbank.java \
+ com/sun/media/sound/MixerClip.java \
+ com/sun/media/sound/MixerMidiChannel.java \
+ com/sun/media/sound/MixerSequencer.java \
+ com/sun/media/sound/MixerSourceLine.java \
+ com/sun/media/sound/MixerSynth.java \
+ com/sun/media/sound/MixerThread.java \
+ com/sun/media/sound/SimpleInputDevice.java \
+ com/sun/media/sound/SimpleInputDeviceProvider.java
+
diff --git a/jdk/make/javax/sound/jsoundhs/Makefile b/jdk/make/javax/sound/jsoundhs/Makefile
new file mode 100644
index 0000000..6a4952c
--- /dev/null
+++ b/jdk/make/javax/sound/jsoundhs/Makefile
@@ -0,0 +1,100 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = javax.sound
+LIBRARY = jsoundhs
+PRODUCT = sun
+CPLUSPLUSLIBRARY = true
+include $(BUILDDIR)/common/Defs.gmk
+
+# this Makefile compiles "closed" JavaSound library
+
+ifdef OPENJDK
+
+# precompiled lib will be copied by the rules in Library.gmk instead of compiling.
+USE_BINARY_PLUG_LIBRARY=true
+
+build: import-binary-plug-jsound-library
+
+include $(BUILDDIR)/common/internal/BinaryPlugs.gmk
+
+else # OPENJDK
+
+# include defines for sound
+include ../SoundDefs.gmk
+
+#
+# Add use of mapfile
+#
+FILES_m = mapfile-vers
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+#
+# Files
+#
+include FILES.gmk
+
+FILES_c += $(FILES_engine) $(FILES_$(PLATFORM))
+
+#
+# Extra cc/linker flags.
+#
+# flags needed for all platforms
+CPPFLAGS += \
+ -DJAVA_SOUND -DJAVA_THREAD \
+ -I$(CLOSED_SHARE_SRC)/native/com/sun/media/sound \
+ -I$(CLOSED_SHARE_SRC)/native/com/sun/media/sound/engine
+
+# system dependent flags
+ifeq ($(PLATFORM), windows)
+ CPPFLAGS += -DUSE_DIRECTSOUND=0 \
+ -DUSE_EXTERNAL_SYNTH=TRUE
+ LDLIBS += winmm.lib
+endif # PLATFORM windows
+
+ifeq ($(PLATFORM), linux)
+endif # PLATFORM linux
+
+ifeq ($(PLATFORM), solaris)
+endif # PLATFORM solaris
+
+
+#
+# Add to the ambient VPATH.
+#
+vpath %.c $(CLOSED_SHARE_SRC)/native/com/sun/media/sound
+vpath %.c $(CLOSED_SHARE_SRC)/native/com/sun/media/sound/engine
+vpath %.c $(CLOSED_PLATFORM_SRC)/native/com/sun/media/sound/engine
+
+
+endif # OPENJDK
+
+
+#
+# Include rules
+#
+include $(BUILDDIR)/common/Library.gmk
+
diff --git a/jdk/make/javax/sound/jsoundhs/mapfile-vers b/jdk/make/javax/sound/jsoundhs/mapfile-vers
new file mode 100644
index 0000000..7961825
--- /dev/null
+++ b/jdk/make/javax/sound/jsoundhs/mapfile-vers
@@ -0,0 +1,153 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define library interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_com_sun_media_sound_AbstractPlayer_nAddReceiver;
+ Java_com_sun_media_sound_AbstractPlayer_nClose;
+ Java_com_sun_media_sound_AbstractPlayer_nLoadInstrument;
+ Java_com_sun_media_sound_AbstractPlayer_nRemapInstrument;
+ Java_com_sun_media_sound_AbstractPlayer_nRemoveReceiver;
+ Java_com_sun_media_sound_AbstractPlayer_nUnloadInstrument;
+ Java_com_sun_media_sound_HeadspaceMixer_nAllocateVoices;
+ Java_com_sun_media_sound_HeadspaceMixer_nCloseMixer;
+ Java_com_sun_media_sound_HeadspaceMixer_nCreateLinkedStreams;
+ Java_com_sun_media_sound_HeadspaceMixer_nDrain;
+ Java_com_sun_media_sound_HeadspaceMixer_nFlush;
+ Java_com_sun_media_sound_HeadspaceMixer_nGetCpuLoad;
+ Java_com_sun_media_sound_HeadspaceMixer_nGetDefaultBufferSize;
+ Java_com_sun_media_sound_HeadspaceMixer_nGetLevel;
+ Java_com_sun_media_sound_HeadspaceMixer_nGetPosition;
+ Java_com_sun_media_sound_HeadspaceMixer_nGetTotalVoices;
+ Java_com_sun_media_sound_HeadspaceMixer_nOpenMixer;
+ Java_com_sun_media_sound_HeadspaceMixer_nPause;
+ Java_com_sun_media_sound_HeadspaceMixer_nResume;
+ Java_com_sun_media_sound_HeadspaceMixer_nSetInterpolation;
+ Java_com_sun_media_sound_HeadspaceMixer_nSetMixerFormat;
+ Java_com_sun_media_sound_HeadspaceMixer_nSetMixLevel;
+ Java_com_sun_media_sound_HeadspaceMixer_nSetReverb;
+ Java_com_sun_media_sound_HeadspaceMixer_nStartLinkedStreams;
+ Java_com_sun_media_sound_HeadspaceMixer_nStopLinkedStreams;
+ Java_com_sun_media_sound_HeadspaceSoundbank_nCloseResource;
+ Java_com_sun_media_sound_HeadspaceSoundbank_nGetInstruments;
+ Java_com_sun_media_sound_HeadspaceSoundbank_nGetName;
+ Java_com_sun_media_sound_HeadspaceSoundbank_nGetSamples;
+ Java_com_sun_media_sound_HeadspaceSoundbank_nGetVersionMajor;
+ Java_com_sun_media_sound_HeadspaceSoundbank_nGetVersionMinor;
+ Java_com_sun_media_sound_HeadspaceSoundbank_nGetVersionSubMinor;
+ Java_com_sun_media_sound_HeadspaceSoundbank_nOpenResource;
+ Java_com_sun_media_sound_HeadspaceSoundbank_nOpenResourceFromByteArray;
+ Java_com_sun_media_sound_MixerClip_nClose;
+ Java_com_sun_media_sound_MixerClip_nDrain;
+ Java_com_sun_media_sound_MixerClip_nFlush;
+ Java_com_sun_media_sound_MixerClip_nGetPosition;
+ Java_com_sun_media_sound_MixerClip_nOpen;
+ Java_com_sun_media_sound_MixerClip_nSetLinearGain;
+ Java_com_sun_media_sound_MixerClip_nSetPan;
+ Java_com_sun_media_sound_MixerClip_nSetSampleRate;
+ Java_com_sun_media_sound_MixerClip_nSetup;
+ Java_com_sun_media_sound_MixerClip_nStart;
+ Java_com_sun_media_sound_MixerClip_nStop;
+ Java_com_sun_media_sound_MixerMidiChannel_nAllNotesOff;
+ Java_com_sun_media_sound_MixerMidiChannel_nControlChange;
+ Java_com_sun_media_sound_MixerMidiChannel_nGetController;
+ Java_com_sun_media_sound_MixerMidiChannel_nGetPitchBend;
+ Java_com_sun_media_sound_MixerMidiChannel_nGetSolo;
+ Java_com_sun_media_sound_MixerMidiChannel_nNoteOff;
+ Java_com_sun_media_sound_MixerMidiChannel_nNoteOn;
+ Java_com_sun_media_sound_MixerMidiChannel_nProgramChange__JIIIJ;
+ Java_com_sun_media_sound_MixerMidiChannel_nProgramChange__JIIJ;
+ Java_com_sun_media_sound_MixerMidiChannel_nResetAllControllers;
+ Java_com_sun_media_sound_MixerMidiChannel_nSetMute;
+ Java_com_sun_media_sound_MixerMidiChannel_nSetPitchBend;
+ Java_com_sun_media_sound_MixerMidiChannel_nSetSolo;
+ Java_com_sun_media_sound_MixerSequencer_nAddControllerEventCallback;
+ Java_com_sun_media_sound_MixerSequencer_nGetMasterTempo;
+ Java_com_sun_media_sound_MixerSequencer_nGetSequenceMicrosecondLength;
+ Java_com_sun_media_sound_MixerSequencer_nGetSequencerMicrosecondPosition;
+ Java_com_sun_media_sound_MixerSequencer_nGetSequencerTickPosition;
+ Java_com_sun_media_sound_MixerSequencer_nGetSequenceTickLength;
+ Java_com_sun_media_sound_MixerSequencer_nGetTempoInBPM;
+ Java_com_sun_media_sound_MixerSequencer_nGetTempoInMPQ;
+ Java_com_sun_media_sound_MixerSequencer_nGetTrackMute;
+ Java_com_sun_media_sound_MixerSequencer_nGetTrackSolo;
+ Java_com_sun_media_sound_MixerSequencer_nOpenMidiSequencer;
+ Java_com_sun_media_sound_MixerSequencer_nOpenRmfSequencer;
+ Java_com_sun_media_sound_MixerSequencer_nPauseSequencer;
+ Java_com_sun_media_sound_MixerSequencer_nResumeSequencer;
+ Java_com_sun_media_sound_MixerSequencer_nSetMasterTempo;
+ Java_com_sun_media_sound_MixerSequencer_nSetSequencerMicrosecondPosition;
+ Java_com_sun_media_sound_MixerSequencer_nSetSequencerTickPosition;
+ Java_com_sun_media_sound_MixerSequencer_nSetTempoInBPM;
+ Java_com_sun_media_sound_MixerSequencer_nSetTempoInMPQ;
+ Java_com_sun_media_sound_MixerSequencer_nSetTrackMute;
+ Java_com_sun_media_sound_MixerSequencer_nSetTrackSolo;
+ Java_com_sun_media_sound_MixerSequencer_nStartSequencer;
+ Java_com_sun_media_sound_MixerSourceLine_nClose;
+ Java_com_sun_media_sound_MixerSourceLine_nDrain;
+ Java_com_sun_media_sound_MixerSourceLine_nFlush;
+ Java_com_sun_media_sound_MixerSourceLine_nGetLevel;
+ Java_com_sun_media_sound_MixerSourceLine_nGetPosition;
+ Java_com_sun_media_sound_MixerSourceLine_nOpen;
+ Java_com_sun_media_sound_MixerSourceLine_nPause;
+ Java_com_sun_media_sound_MixerSourceLine_nResume;
+ Java_com_sun_media_sound_MixerSourceLine_nSetLinearGain;
+ Java_com_sun_media_sound_MixerSourceLine_nSetPan;
+ Java_com_sun_media_sound_MixerSourceLine_nSetSampleRate;
+ Java_com_sun_media_sound_MixerSourceLine_nStart;
+ Java_com_sun_media_sound_MixerSynth_nCreateSynthesizer;
+ Java_com_sun_media_sound_MixerSynth_nDestroySynthesizer;
+ Java_com_sun_media_sound_MixerSynth_nGetLatency;
+ Java_com_sun_media_sound_MixerSynth_nLoadInstrument;
+ Java_com_sun_media_sound_MixerSynth_nRemapInstrument;
+ Java_com_sun_media_sound_MixerSynth_nStartSynthesizer;
+ Java_com_sun_media_sound_MixerSynth_nUnloadInstrument;
+ Java_com_sun_media_sound_MixerThread_runNative;
+ Java_com_sun_media_sound_SimpleInputDevice_nClose;
+ Java_com_sun_media_sound_SimpleInputDevice_nDrain;
+ Java_com_sun_media_sound_SimpleInputDevice_nFlush;
+ Java_com_sun_media_sound_SimpleInputDevice_nGetBufferSizeInFrames;
+ Java_com_sun_media_sound_SimpleInputDevice_nGetFormats;
+ Java_com_sun_media_sound_SimpleInputDevice_nGetNumPorts;
+ Java_com_sun_media_sound_SimpleInputDevice_nGetPortName;
+ Java_com_sun_media_sound_SimpleInputDevice_nGetPosition;
+ Java_com_sun_media_sound_SimpleInputDevice_nOpen;
+ Java_com_sun_media_sound_SimpleInputDevice_nPause;
+ Java_com_sun_media_sound_SimpleInputDevice_nResume;
+ Java_com_sun_media_sound_SimpleInputDevice_nStart;
+ Java_com_sun_media_sound_SimpleInputDevice_nStop;
+ Java_com_sun_media_sound_SimpleInputDevice_nSupportsChannels;
+ Java_com_sun_media_sound_SimpleInputDevice_nSupportsSampleRate;
+ Java_com_sun_media_sound_SimpleInputDevice_nSupportsSampleSizeInBits;
+ Java_com_sun_media_sound_SimpleInputDeviceProvider_nGetDescription;
+ Java_com_sun_media_sound_SimpleInputDeviceProvider_nGetName;
+ Java_com_sun_media_sound_SimpleInputDeviceProvider_nGetNumDevices;
+ Java_com_sun_media_sound_SimpleInputDeviceProvider_nGetVendor;
+ Java_com_sun_media_sound_SimpleInputDeviceProvider_nGetVersion;
+ local:
+ *;
+};
diff --git a/jdk/make/javax/sound/mapfile-vers b/jdk/make/javax/sound/mapfile-vers
new file mode 100644
index 0000000..3ec4897
--- /dev/null
+++ b/jdk/make/javax/sound/mapfile-vers
@@ -0,0 +1,86 @@
+#
+# Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define library interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_com_sun_media_sound_DirectAudioDevice_nAvailable;
+ Java_com_sun_media_sound_DirectAudioDevice_nClose;
+ Java_com_sun_media_sound_DirectAudioDevice_nFlush;
+ Java_com_sun_media_sound_DirectAudioDevice_nGetBufferSize;
+ Java_com_sun_media_sound_DirectAudioDevice_nGetBytePosition;
+ Java_com_sun_media_sound_DirectAudioDevice_nGetFormats;
+ Java_com_sun_media_sound_DirectAudioDevice_nIsStillDraining;
+ Java_com_sun_media_sound_DirectAudioDevice_nOpen;
+ Java_com_sun_media_sound_DirectAudioDevice_nRead;
+ Java_com_sun_media_sound_DirectAudioDevice_nRequiresServicing;
+ Java_com_sun_media_sound_DirectAudioDevice_nService;
+ Java_com_sun_media_sound_DirectAudioDevice_nSetBytePosition;
+ Java_com_sun_media_sound_DirectAudioDevice_nStart;
+ Java_com_sun_media_sound_DirectAudioDevice_nStop;
+ Java_com_sun_media_sound_DirectAudioDevice_nWrite;
+ Java_com_sun_media_sound_DirectAudioDeviceProvider_nGetNumDevices;
+ Java_com_sun_media_sound_DirectAudioDeviceProvider_nNewDirectAudioDeviceInfo;
+ Java_com_sun_media_sound_MidiInDevice_nClose;
+ Java_com_sun_media_sound_MidiInDevice_nGetMessages;
+ Java_com_sun_media_sound_MidiInDevice_nGetTimeStamp;
+ Java_com_sun_media_sound_MidiInDevice_nOpen;
+ Java_com_sun_media_sound_MidiInDevice_nStart;
+ Java_com_sun_media_sound_MidiInDevice_nStop;
+ Java_com_sun_media_sound_MidiInDeviceProvider_nGetDescription;
+ Java_com_sun_media_sound_MidiInDeviceProvider_nGetName;
+ Java_com_sun_media_sound_MidiInDeviceProvider_nGetNumDevices;
+ Java_com_sun_media_sound_MidiInDeviceProvider_nGetVendor;
+ Java_com_sun_media_sound_MidiInDeviceProvider_nGetVersion;
+ Java_com_sun_media_sound_MidiOutDevice_nClose;
+ Java_com_sun_media_sound_MidiOutDevice_nGetTimeStamp;
+ Java_com_sun_media_sound_MidiOutDevice_nOpen;
+ Java_com_sun_media_sound_MidiOutDevice_nSendLongMessage;
+ Java_com_sun_media_sound_MidiOutDevice_nSendShortMessage;
+ Java_com_sun_media_sound_MidiOutDeviceProvider_nGetDescription;
+ Java_com_sun_media_sound_MidiOutDeviceProvider_nGetName;
+ Java_com_sun_media_sound_MidiOutDeviceProvider_nGetNumDevices;
+ Java_com_sun_media_sound_MidiOutDeviceProvider_nGetVendor;
+ Java_com_sun_media_sound_MidiOutDeviceProvider_nGetVersion;
+ Java_com_sun_media_sound_Platform_nGetExtraLibraries;
+ Java_com_sun_media_sound_Platform_nGetLibraryForFeature;
+ Java_com_sun_media_sound_Platform_nIsBigEndian;
+ Java_com_sun_media_sound_Platform_nIsSigned8;
+ Java_com_sun_media_sound_PortMixer_nClose;
+ Java_com_sun_media_sound_PortMixer_nControlGetFloatValue;
+ Java_com_sun_media_sound_PortMixer_nControlGetIntValue;
+ Java_com_sun_media_sound_PortMixer_nControlSetFloatValue;
+ Java_com_sun_media_sound_PortMixer_nControlSetIntValue;
+ Java_com_sun_media_sound_PortMixer_nGetControls;
+ Java_com_sun_media_sound_PortMixer_nGetPortCount;
+ Java_com_sun_media_sound_PortMixer_nGetPortName;
+ Java_com_sun_media_sound_PortMixer_nGetPortType;
+ Java_com_sun_media_sound_PortMixer_nOpen;
+ Java_com_sun_media_sound_PortMixerProvider_nGetNumDevices;
+ Java_com_sun_media_sound_PortMixerProvider_nNewPortMixerInfo;
+ local:
+ *;
+};
diff --git a/jdk/make/javax/sql/Makefile b/jdk/make/javax/sql/Makefile
new file mode 100644
index 0000000..9edaff3
--- /dev/null
+++ b/jdk/make/javax/sql/Makefile
@@ -0,0 +1,49 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JDBC API and JDBC RowSet
+#
+
+BUILDDIR = ../..
+PACKAGE = javax.sql
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile.
+#
+AUTO_FILES_JAVA_DIRS = javax/sql
+
+#
+# Resources
+#
+OTHER_PROPERTIES = $(PKGDIR)/rowset/rowset.properties
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/javax/swing/FILES.gmk b/jdk/make/javax/swing/FILES.gmk
new file mode 100644
index 0000000..57616bd
--- /dev/null
+++ b/jdk/make/javax/swing/FILES.gmk
@@ -0,0 +1,236 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+MISC_FILES = \
+ $(CLASSBINDIR)/javax/swing/text/html/default.css \
+ $(CLASSBINDIR)/javax/swing/text/html/parser/html32.bdtd \
+ $(CLASSBINDIR)/javax/swing/text/rtf/charsets/NeXT.txt \
+ $(CLASSBINDIR)/javax/swing/text/rtf/charsets/ansi.txt \
+ $(CLASSBINDIR)/javax/swing/text/rtf/charsets/cpg437.txt \
+ $(CLASSBINDIR)/javax/swing/text/rtf/charsets/cpg850.txt \
+ $(CLASSBINDIR)/javax/swing/text/rtf/charsets/mac.txt
+
+BEANINFO_DOC = \
+ $(BUILDDIR)/tools/swing-beans/SwingBeanInfo.template
+
+BEANIMAGES = $(BUILDDIR)/tools/swing-beans/beaninfo/images
+BEANINFO_IMG = \
+ $(BEANIMAGES)/AbstractButtonColor16.gif \
+ $(BEANIMAGES)/BorderColor16.gif \
+ $(BEANIMAGES)/JAppletColor16.gif \
+ $(BEANIMAGES)/JAppletColor32.gif \
+ $(BEANIMAGES)/JAppletMono16.gif \
+ $(BEANIMAGES)/JAppletMono32.gif \
+ $(BEANIMAGES)/JButtonColor32.gif \
+ $(BEANIMAGES)/JButtonColor16.gif \
+ $(BEANIMAGES)/JButtonMono32.gif \
+ $(BEANIMAGES)/JButtonMono16.gif \
+ $(BEANIMAGES)/JCheckBoxColor32.gif \
+ $(BEANIMAGES)/JCheckBoxColor16.gif \
+ $(BEANIMAGES)/JCheckBoxMono32.gif \
+ $(BEANIMAGES)/JCheckBoxMono16.gif \
+ $(BEANIMAGES)/JCheckBoxMenuItemColor32.gif \
+ $(BEANIMAGES)/JCheckBoxMenuItemColor16.gif \
+ $(BEANIMAGES)/JCheckBoxMenuItemMono32.gif \
+ $(BEANIMAGES)/JCheckBoxMenuItemMono16.gif \
+ $(BEANIMAGES)/JComboBoxColor32.gif \
+ $(BEANIMAGES)/JComboBoxColor16.gif \
+ $(BEANIMAGES)/JComboBoxMono32.gif \
+ $(BEANIMAGES)/JComboBoxMono16.gif \
+ $(BEANIMAGES)/JComponentColor16.gif \
+ $(BEANIMAGES)/JDesktopPaneColor32.gif \
+ $(BEANIMAGES)/JDesktopPaneColor16.gif \
+ $(BEANIMAGES)/JDesktopPaneMono32.gif \
+ $(BEANIMAGES)/JDesktopPaneMono16.gif \
+ $(BEANIMAGES)/JDialogColor32.gif \
+ $(BEANIMAGES)/JDialogColor16.gif \
+ $(BEANIMAGES)/JDialogMono16.gif \
+ $(BEANIMAGES)/JDialogMono32.gif \
+ $(BEANIMAGES)/JEditorPaneColor32.gif \
+ $(BEANIMAGES)/JEditorPaneColor16.gif \
+ $(BEANIMAGES)/JEditorPaneMono32.gif \
+ $(BEANIMAGES)/JEditorPaneMono16.gif \
+ $(BEANIMAGES)/JFrameColor32.gif \
+ $(BEANIMAGES)/JFrameColor16.gif \
+ $(BEANIMAGES)/JFrameMono32.gif \
+ $(BEANIMAGES)/JFrameMono16.gif \
+ $(BEANIMAGES)/JInternalFrameColor32.gif \
+ $(BEANIMAGES)/JInternalFrameColor16.gif \
+ $(BEANIMAGES)/JInternalFrameMono32.gif \
+ $(BEANIMAGES)/JInternalFrameMono16.gif \
+ $(BEANIMAGES)/JLabelColor32.gif \
+ $(BEANIMAGES)/JLabelColor16.gif \
+ $(BEANIMAGES)/JLabelMono32.gif \
+ $(BEANIMAGES)/JLabelMono16.gif \
+ $(BEANIMAGES)/JLayeredPaneColor32.gif \
+ $(BEANIMAGES)/JLayeredPaneColor16.gif \
+ $(BEANIMAGES)/JLayeredPaneMono32.gif \
+ $(BEANIMAGES)/JLayeredPaneMono16.gif \
+ $(BEANIMAGES)/JListColor32.gif \
+ $(BEANIMAGES)/JListColor16.gif \
+ $(BEANIMAGES)/JListMono32.gif \
+ $(BEANIMAGES)/JListMono16.gif \
+ $(BEANIMAGES)/JMenuBarColor32.gif \
+ $(BEANIMAGES)/JMenuBarColor16.gif \
+ $(BEANIMAGES)/JMenuBarMono32.gif \
+ $(BEANIMAGES)/JMenuBarMono16.gif \
+ $(BEANIMAGES)/JMenuColor32.gif \
+ $(BEANIMAGES)/JMenuColor16.gif \
+ $(BEANIMAGES)/JMenuMono32.gif \
+ $(BEANIMAGES)/JMenuMono16.gif \
+ $(BEANIMAGES)/JMenuItemColor32.gif \
+ $(BEANIMAGES)/JMenuItemColor16.gif \
+ $(BEANIMAGES)/JMenuItemMono32.gif \
+ $(BEANIMAGES)/JMenuItemMono16.gif \
+ $(BEANIMAGES)/JPanelColor32.gif \
+ $(BEANIMAGES)/JPanelColor16.gif \
+ $(BEANIMAGES)/JPanelMono32.gif \
+ $(BEANIMAGES)/JPanelMono16.gif \
+ $(BEANIMAGES)/JPasswordFieldColor32.gif \
+ $(BEANIMAGES)/JPasswordFieldColor16.gif \
+ $(BEANIMAGES)/JPasswordFieldMono32.gif \
+ $(BEANIMAGES)/JPasswordFieldMono16.gif \
+ $(BEANIMAGES)/JPopupMenuColor32.gif \
+ $(BEANIMAGES)/JPopupMenuColor16.gif \
+ $(BEANIMAGES)/JPopupMenuMono32.gif \
+ $(BEANIMAGES)/JPopupMenuMono16.gif \
+ $(BEANIMAGES)/JProgressBarColor32.gif \
+ $(BEANIMAGES)/JProgressBarColor16.gif \
+ $(BEANIMAGES)/JProgressBarMono32.gif \
+ $(BEANIMAGES)/JProgressBarMono16.gif \
+ $(BEANIMAGES)/JRadioButtonColor32.gif \
+ $(BEANIMAGES)/JRadioButtonColor16.gif \
+ $(BEANIMAGES)/JRadioButtonMono32.gif \
+ $(BEANIMAGES)/JRadioButtonMono16.gif \
+ $(BEANIMAGES)/JRadioButtonMenuItemColor32.gif \
+ $(BEANIMAGES)/JRadioButtonMenuItemColor16.gif \
+ $(BEANIMAGES)/JRadioButtonMenuItemMono32.gif \
+ $(BEANIMAGES)/JRadioButtonMenuItemMono16.gif \
+ $(BEANIMAGES)/JRootPaneColor32.gif \
+ $(BEANIMAGES)/JRootPaneColor16.gif \
+ $(BEANIMAGES)/JRootPaneMono32.gif \
+ $(BEANIMAGES)/JRootPaneMono16.gif \
+ $(BEANIMAGES)/JScrollPaneColor32.gif \
+ $(BEANIMAGES)/JScrollPaneColor16.gif \
+ $(BEANIMAGES)/JScrollPaneMono32.gif \
+ $(BEANIMAGES)/JScrollPaneMono16.gif \
+ $(BEANIMAGES)/JScrollBarColor32.gif \
+ $(BEANIMAGES)/JScrollBarColor16.gif \
+ $(BEANIMAGES)/JScrollBarMono32.gif \
+ $(BEANIMAGES)/JScrollBarMono16.gif \
+ $(BEANIMAGES)/JSeparatorColor32.gif \
+ $(BEANIMAGES)/JSeparatorColor16.gif \
+ $(BEANIMAGES)/JSeparatorMono32.gif \
+ $(BEANIMAGES)/JSeparatorMono16.gif \
+ $(BEANIMAGES)/JSliderColor32.gif \
+ $(BEANIMAGES)/JSliderColor16.gif \
+ $(BEANIMAGES)/JSliderMono32.gif \
+ $(BEANIMAGES)/JSliderMono16.gif \
+ $(BEANIMAGES)/JTextPaneColor32.gif \
+ $(BEANIMAGES)/JTextPaneColor16.gif \
+ $(BEANIMAGES)/JTextPaneMono32.gif \
+ $(BEANIMAGES)/JTextPaneMono16.gif \
+ $(BEANIMAGES)/JToggleButtonColor32.gif \
+ $(BEANIMAGES)/JToggleButtonColor16.gif \
+ $(BEANIMAGES)/JToggleButtonMono32.gif \
+ $(BEANIMAGES)/JToggleButtonMono16.gif \
+ $(BEANIMAGES)/JToolBarColor32.gif \
+ $(BEANIMAGES)/JToolBarColor16.gif \
+ $(BEANIMAGES)/JToolBarMono32.gif \
+ $(BEANIMAGES)/JToolBarMono16.gif \
+ $(BEANIMAGES)/JTabbedPaneColor32.gif \
+ $(BEANIMAGES)/JTabbedPaneColor16.gif \
+ $(BEANIMAGES)/JTabbedPaneMono32.gif \
+ $(BEANIMAGES)/JTabbedPaneMono16.gif \
+ $(BEANIMAGES)/JTreeColor32.gif \
+ $(BEANIMAGES)/JTreeColor16.gif \
+ $(BEANIMAGES)/JTreeMono32.gif \
+ $(BEANIMAGES)/JTreeMono16.gif \
+ $(BEANIMAGES)/JTextAreaColor32.gif \
+ $(BEANIMAGES)/JTextAreaColor16.gif \
+ $(BEANIMAGES)/JTextAreaMono32.gif \
+ $(BEANIMAGES)/JTextAreaMono16.gif \
+ $(BEANIMAGES)/JTextFieldColor32.gif \
+ $(BEANIMAGES)/JTextFieldColor16.gif \
+ $(BEANIMAGES)/JTextFieldMono32.gif \
+ $(BEANIMAGES)/JTextFieldMono16.gif \
+ $(BEANIMAGES)/JViewportColor32.gif \
+ $(BEANIMAGES)/JViewportColor16.gif \
+ $(BEANIMAGES)/JViewportMono32.gif \
+ $(BEANIMAGES)/JViewportMono16.gif \
+ $(BEANIMAGES)/JWindowColor32.gif \
+ $(BEANIMAGES)/JWindowColor16.gif \
+ $(BEANIMAGES)/JWindowMono32.gif \
+ $(BEANIMAGES)/JWindowMono16.gif \
+ $(BEANIMAGES)/JTableColor32.gif \
+ $(BEANIMAGES)/JTableColor16.gif \
+ $(BEANIMAGES)/JTableMono32.gif \
+ $(BEANIMAGES)/JTableMono16.gif
+
+BEANS = \
+ AbstractButton \
+ JComponent
+
+# These classes get listed in the swingall.jar manifest file and are
+# used during BeanInfo source generation.
+BEANS_MANIFEST = \
+ JApplet \
+ JButton \
+ JCheckBox \
+ JCheckBoxMenuItem \
+ JComboBox \
+ JDialog \
+ JEditorPane \
+ JFrame \
+ JInternalFrame \
+ JLabel \
+ JList \
+ JMenu \
+ JMenuBar \
+ JMenuItem \
+ JOptionPane \
+ JPanel \
+ JPasswordField \
+ JPopupMenu \
+ JProgressBar \
+ JRadioButton \
+ JRadioButtonMenuItem \
+ JRootPane \
+ JScrollBar \
+ JScrollPane \
+ JSeparator \
+ JSlider \
+ JSpinner \
+ JSplitPane \
+ JTabbedPane \
+ JTable \
+ JTextArea \
+ JTextField \
+ JTextPane \
+ JToggleButton \
+ JToolBar \
+ JTree \
+ JViewport \
+ JWindow
diff --git a/jdk/make/javax/swing/Makefile b/jdk/make/javax/swing/Makefile
new file mode 100644
index 0000000..c2056a4
--- /dev/null
+++ b/jdk/make/javax/swing/Makefile
@@ -0,0 +1,65 @@
+#
+# Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = javax.swing
+PRODUCT = com
+SWING_SRC = $(SHARE_SRC)/classes/javax/swing
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+include FILES.gmk
+AUTO_FILES_JAVA_DIRS = javax/swing sun/swing
+AUTO_JAVA_PRUNE = plaf
+
+SUBDIRS = html32dtd plaf
+
+include $(BUILDDIR)/common/Classes.gmk
+
+build: other_files
+ $(SUBDIRS-loop)
+
+clean clobber::
+ $(SUBDIRS-loop)
+
+other_files: $(MISC_FILES)
+
+$(CLASSBINDIR)/%.wav: $(SHARE_SRC)/classes/%.wav
+ $(install-file)
+
+$(CLASSBINDIR)/%.gif: $(SHARE_SRC)/classes/%.gif
+ $(install-file)
+
+$(CLASSBINDIR)/%.css: $(SHARE_SRC)/classes/%.css
+ $(install-file)
+
+$(CLASSBINDIR)/%.bdtd: $(SHARE_SRC)/classes/%.bdtd
+ $(install-file)
+
+$(CLASSBINDIR)/%.txt: $(SHARE_SRC)/classes/%.txt
+ $(install-file)
+
diff --git a/jdk/make/javax/swing/beaninfo/FILES.gmk b/jdk/make/javax/swing/beaninfo/FILES.gmk
new file mode 100644
index 0000000..305300d
--- /dev/null
+++ b/jdk/make/javax/swing/beaninfo/FILES.gmk
@@ -0,0 +1,126 @@
+#
+# Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# There are the Swing classes for which a BeanInfo class is generated.
+#
+
+# this is used for solaris
+
+BEANS = AbstractButton \
+ Box \
+ JComponent \
+ JApplet \
+ JButton \
+ JCheckBox \
+ JCheckBoxMenuItem \
+ JComboBox \
+ JColorChooser \
+ JDesktopPane \
+ JDialog \
+ JEditorPane \
+ JFileChooser \
+ JFrame \
+ JFormattedTextField \
+ JInternalFrame \
+ JLabel \
+ JLayeredPane \
+ JList \
+ JMenu \
+ JMenuBar \
+ JMenuItem \
+ JOptionPane \
+ JPanel \
+ JPasswordField \
+ JPopupMenu \
+ JProgressBar \
+ JRadioButton \
+ JRadioButtonMenuItem\
+ JScrollBar \
+ JScrollPane \
+ JSeparator \
+ JSlider \
+ JSplitPane \
+ JSpinner \
+ JTabbedPane \
+ JTable \
+ JTextArea \
+ JTextField \
+ JTextPane \
+ JToggleButton \
+ JToolBar \
+ JTree \
+ JWindow
+
+# in a separate package
+BEANS_TEXT = JTextComponent \
+
+# and this is used for windows
+
+BEANS_SOURCES = ..\..\..\..\..\src\share\classes\javax\swing\AbstractButton.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\Box.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JComponent.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JColorChooser.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JApplet.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JButton.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JCheckBox.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JCheckBoxMenuItem.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JComboBox.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JDesktopPane.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JDialog.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JEditorPane.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JFileChooser.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JFormattedTextField.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JFrame.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JInternalFrame.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JLabel.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JLayeredPane.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JList.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JMenu.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JMenuBar.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JMenuItem.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JOptionPane.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JPanel.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JPasswordField.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JPopupMenu.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JProgressBar.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JRadioButton.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JRadioButtonMenuItem.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JScrollBar.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JScrollPane.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JSeparator.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JSlider.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JSpinner.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JSplitPane.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JTabbedPane.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JTable.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JTextArea.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\text\JTextComponent.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JTextField.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JTextPane.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JToggleButton.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JToolBar.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JTree.java \
+ ..\..\..\..\..\src\share\classes\javax\swing\JWindow.java
diff --git a/jdk/make/javax/swing/beaninfo/Makefile b/jdk/make/javax/swing/beaninfo/Makefile
new file mode 100644
index 0000000..5b76713
--- /dev/null
+++ b/jdk/make/javax/swing/beaninfo/Makefile
@@ -0,0 +1,38 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Create 1.1 version of BeanInfo files needed by Swing.
+#
+# Note that this makefile gets visited only during release engineering
+# time.
+#
+
+BUILDDIR = ../../..
+include $(BUILDDIR)/common/Defs.gmk
+include SwingBeans.gmk
+
+all build: swing-1.2-beans
+
diff --git a/jdk/make/javax/swing/beaninfo/SwingBeans.gmk b/jdk/make/javax/swing/beaninfo/SwingBeans.gmk
new file mode 100644
index 0000000..daead86
--- /dev/null
+++ b/jdk/make/javax/swing/beaninfo/SwingBeans.gmk
@@ -0,0 +1,204 @@
+#
+# Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile to build the BeanInfo generation tool (ie, a doclet), and
+# then the beaninfo itself. Swing versions prior to 1.2 is no longer
+# built.
+#
+# This makefile could be a lot simpler if we made it more regular.
+#
+
+# identify this as a swingbeans product - used only to identify a
+# unique name for OBJDIR
+PRODUCT = swing-beans
+
+#
+# Main targets provided by this makefile.
+#
+swing-1.2-beans:
+ $(MAKE) DEBUG_FLAG=false make-swing-beans
+swing-1.2-beans-debug:
+ $(MAKE) DEBUG_FLAG=true make-swing-beans
+
+
+LOCAL_JAVADOC = $(JAVADOC_CMD) $(JAVADOCFLAGS)
+# get the absolute path to the jar command.
+PREFIX = 1.2
+JAVADOCFLAGS = $(LANGUAGE_VERSION)
+SWINGPKG = javax/swing
+LOCAL_JAVAC_FLAGS = $(OTHER_JAVACFLAGS)
+
+include FILES.gmk
+include $(BUILDDIR)/common/Release.gmk
+
+DOCLETSRC = $(BUILDDIR)/tools/swing-beans
+DOCLETDST = $(TEMPDIR)
+
+FILES_java = GenSwingBeanInfo.java GenDocletBeanInfo.java DocBeanInfo.java
+FILES_class = $(FILES_java:%.java=$(DOCLETDST)/%.class)
+FAKESRC = $(TOPDIR)/src/share/classes
+BEANSRCDIR = $(TEMPDIR)/$(PREFIX)src
+BEANCLASSDIR = $(TEMPDIR)/$(PREFIX)classes
+FILES_beans = $(BEANS:%=$(BEANSRCDIR)/%BeanInfo.java) \
+ $(BEANS_TEXT:%=$(BEANSRCDIR)/text/%BeanInfo.java) \
+ $(BEANSRCDIR)/SwingBeanInfoBase.java \
+ $(BEANSRCDIR)/BeanInfoUtils.java
+
+FILES_bclass = $(FILES_beans:$(BEANSRCDIR)/%.java=$(BEANCLASSDIR)/$(SWINGPKG)/%.class)
+DOCLETFLAGS = -doclet GenDocletBeanInfo
+LOCAL_CLASSPATH = "$(CLASSBINDIR)$(CLASSPATH_SEPARATOR)$(BEANCLASSDIR)$(CLASSPATH_SEPARATOR)."
+
+#
+# Main target.
+#
+make-swing-beans: mkdoclet mkbeaninfo mkclasses mkpackaging
+
+#
+# Make the doclet.
+#
+mkdoclet: $(DOCLETDST) $(FILES_class) .SwingBeanInfo
+
+$(OBJDIR) $(BEANCLASSDIR) $(BEANSRCDIR) $(DOCLETDST)::
+ @$(ECHO) "Making directory..." $@
+ @$(MKDIR) -p $@
+
+$(DOCLETDST)/%.class: $(DOCLETSRC)/%.java
+ $(JAVAC_CMD) $(LOCAL_JAVAC_FLAGS) -classpath "$(CLASSBINDIR)$(CLASSPATH_SEPARATOR)$(DOCLETSRC)" -d $(DOCLETDST) $?
+ @$(java-vm-cleanup)
+
+# To run, the doclet needs SwingBeanInfoBase class. Also Notice the lie
+# here, SwingBeanInfoBase.class goes elswhere.
+
+.SwingBeanInfo: $(OBJDIR) $(BEANCLASSDIR) $(BEANSRCDIR) $(SWINGPKG)/BeanInfoUtils.class $(SWINGPKG)/SwingBeanInfoBase.class
+
+$(SWINGPKG)/BeanInfoUtils.class: $(BEANSRCDIR)/BeanInfoUtils.java
+ $(JAVAC_CMD) $(LOCAL_JAVAC_FLAGS) -d $(BEANCLASSDIR) $<
+ @$(java-vm-cleanup)
+
+$(SWINGPKG)/SwingBeanInfoBase.class: $(BEANSRCDIR)/SwingBeanInfoBase.java $(BEANSRCDIR)/BeanInfoUtils.java
+ $(JAVAC_CMD) $(LOCAL_JAVAC_FLAGS) -classpath $(BEANCLASSDIR) -d $(BEANCLASSDIR) $<
+ @$(java-vm-cleanup)
+
+#
+# Stage 1: Generate *BeanInfo.java files.
+#
+mkbeaninfo: $(BEANSRCDIR) .delete.beanlist $(FILES_beans) .javadoc.beanlist
+
+.delete.beanlist:
+ @$(RM) $(TEMPDIR)/.beans.list
+
+.javadoc.beanlist:
+ if [ -s $(TEMPDIR)/.beans.list ]; \
+ then $(LOCAL_JAVADOC) $(DOCLETFLAGS) -x $(DEBUG_FLAG) -d $(BEANSRCDIR) -t $(DOCLETSRC)/SwingBeanInfo.template -docletpath $(DOCLETDST) \
+ $(shell if [ -s $(TEMPDIR)/.beans.list ]; then $(CAT) $(TEMPDIR)/.beans.list; fi); \
+ fi
+ @$(java-vm-cleanup)
+
+$(BEANSRCDIR)/text/%BeanInfo.java: $(FAKESRC)/$(SWINGPKG)/text/%.java
+ @$(ECHO) $< >> $(TEMPDIR)/.beans.list
+
+$(BEANSRCDIR)/%BeanInfo.java: $(FAKESRC)/$(SWINGPKG)/%.java
+ @$(ECHO) $< >> $(TEMPDIR)/.beans.list
+
+$(BEANSRCDIR)/SwingBeanInfoBase.java: $(DOCLETSRC)/beaninfo/SwingBeanInfoBase.java
+ $(CP) $< $@
+
+$(BEANSRCDIR)/BeanInfoUtils.java: $(DOCLETSRC)/beaninfo/BeanInfoUtils.java
+ $(CP) $< $@
+
+#
+# Compile the generated *BeanInfo.java files.
+#
+mkclasses: .delete.classlist $(BEANCLASSDIR)/$(SWINGPKG)/SwingBeanInfoBase.class \
+ $(BEANCLASSDIR)/$(SWINGPKG)/text/JTextComponentBeanInfo.class \
+ .create.classlist $(FILES_bclass) .compile.classlist
+
+$(BEANCLASSDIR)/$(SWINGPKG)/SwingBeanInfoBase.class:: \
+ $(BEANSRCDIR)/SwingBeanInfoBase.java
+
+$(BEANCLASSDIR)/$(SWINGPKG)/text/JTextComponentBeanInfo.class:: \
+ $(BEANSRCDIR)/JTextComponentBeanInfo.java
+
+$(FILES_bclass):: $(FILES_beans)
+
+# all the sources are in one directory, so make sure that the list does
+# not have the /text direcotry in it. Kludgy, this is...
+.create.classlist:
+ @$(ECHO) $(subst /text/,/,$(FILES_beans)) >> $(TEMPDIR)/.classes.list
+
+.delete.classlist:
+ @$(ECHO) "Deleting classes.list..."
+ @$(RM) $(TEMPDIR)/.classes.list
+
+.compile.classlist:
+ if [ -s $(TEMPDIR)/.classes.list ] ; then \
+ $(JAVAC_CMD) $(LOCAL_JAVAC_FLAGS) -classpath $(LOCAL_CLASSPATH) -d $(BEANCLASSDIR) \
+ $(shell if [ -s $(TEMPDIR)/.classes.list ] ; then $(CAT) $(TEMPDIR)/.classes.list; fi ) ; \
+ fi
+ @$(java-vm-cleanup)
+
+#
+# Packaging
+#
+mkpackaging:
+ $(RM) -r $(BEANCLASSDIR)/$(SWINGPKG)/beaninfo/images
+ $(MKDIR) -p $(BEANCLASSDIR)/$(SWINGPKG)/beaninfo/images
+ $(CP) $(DOCLETSRC)/beaninfo/images/*.gif $(BEANCLASSDIR)/$(SWINGPKG)/beaninfo/images
+ $(BOOT_JAR_CMD) cf $(TEMPDIR)/tmp.jar \
+ -C $(BEANCLASSDIR) javax \
+ -C $(BEANCLASSDIR) sun \
+ $(JAR_JFLAGS)
+ $(MV) $(TEMPDIR)/tmp.jar $(JDK_IMAGE_DIR)/lib/dt.jar
+ @$(java-vm-cleanup)
+
+#
+# Cleanliness.
+#
+swingbeans.clean swingbeans.clobber::
+ $(RM) -r 1.2src 1.2classes
+ $(RM) -r java javax
+ $(RM) *.class
+ $(RM) $(TEMPDIR)/.beans.list $(TEMPDIR)/.classes.list beaninfo.jar
+
+#
+# Utility.
+#
+
+
+#
+# Debugging targets for looking at variables.
+#
+show-vars:
+ @$(ECHO) FILES_beans = $(FILES_beans)
+ @$(ECHO) FILES_bclass = $(FILES_bclass)
+
+.PRECIOUS: $(FILES_beans)
+
+.PHONY: swing-1.2-beans swing-1.2-beans-debug \
+ make-swing-beans mkdoclet .SwingBeanInfo mkbeaninfo .delete.beanlist \
+ .javadoc.beanlist mkclasses .create.classlist .delete.classlist \
+ .compile.classlist mkpackaging mkpackaging swingbeans.clean \
+ swingbeans.clobber show-vars
diff --git a/jdk/make/javax/swing/beaninfo/manifest b/jdk/make/javax/swing/beaninfo/manifest
new file mode 100644
index 0000000..228fcb7
--- /dev/null
+++ b/jdk/make/javax/swing/beaninfo/manifest
@@ -0,0 +1,111 @@
+Name: javax/swing/JApplet.class
+Java-Bean: True
+
+Name: javax/swing/JButton.class
+Java-Bean: True
+
+Name: javax/swing/JCheckBox.class
+Java-Bean: True
+
+Name: javax/swing/JCheckBoxMenuItem.class
+Java-Bean: True
+
+Name: javax/swing/JComboBox.class
+Java-Bean: True
+
+Name: javax/swing/JDialog.class
+Java-Bean: True
+
+Name: javax/swing/JEditorPane.class
+Java-Bean: True
+
+Name: javax/swing/JFormattedTextField.class
+Java-Bean: True
+
+Name: javax/swing/JInternalFrame.class
+Java-Bean: True
+
+Name: javax/swing/JFrame.class
+Java-Bean: True
+
+Name: javax/swing/JLabel.class
+Java-Bean: True
+
+Name: javax/swing/JList.class
+Java-Bean: True
+
+Name: javax/swing/JMenu.class
+Java-Bean: True
+
+Name: javax/swing/JMenuBar.class
+Java-Bean: True
+
+Name: javax/swing/JMenuItem.class
+Java-Bean: True
+
+Name: javax/swing/JOptionPane.class
+Java-Bean: True
+
+Name: javax/swing/JPanel.class
+Java-Bean: True
+
+Name: javax/swing/JPasswordField.class
+Java-Bean: True
+
+Name: javax/swing/JPopupMenu.class
+Java-Bean: True
+
+Name: javax/swing/JProgressBar.class
+Java-Bean: True
+
+Name: javax/swing/JRadioButton.class
+Java-Bean: True
+
+Name: javax/swing/JRadioButtonMenuItem.class
+Java-Bean: True
+
+Name: javax/swing/JScrollBar.class
+Java-Bean: True
+
+Name: javax/swing/JScrollPane.class
+Java-Bean: True
+
+Name: javax/swing/JSeparator.class
+Java-Bean: True
+
+Name: javax/swing/JSlider.class
+Java-Bean: True
+
+Name: javax/swing/JSpinner.class
+Java-Bean: True
+
+Name: javax/swing/JSplitPane.class
+Java-Bean: True
+
+Name: javax/swing/JTabbedPane.class
+Java-Bean: True
+
+Name: javax/swing/JTextArea.class
+Java-Bean: True
+
+Name: javax/swing/JTextField.class
+Java-Bean: True
+
+Name: javax/swing/JTextPane.class
+Java-Bean: True
+
+Name: javax/swing/JToolBar.class
+Java-Bean: True
+
+Name: javax/swing/JTree.class
+Java-Bean: True
+
+Name: javax/swing/JTable.class
+Java-Bean: True
+
+Name: javax/swing/JToggleButton.class
+Java-Bean: True
+
+Name: javax/swing/JWindow.class
+Java-Bean: True
+
diff --git a/jdk/make/javax/swing/html32dtd/Makefile b/jdk/make/javax/swing/html32dtd/Makefile
new file mode 100644
index 0000000..f14dfe4
--- /dev/null
+++ b/jdk/make/javax/swing/html32dtd/Makefile
@@ -0,0 +1,47 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = javax/swing/html/parser
+PRODUCT = swing
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Shared defintions.
+#
+HTML32DTD = $(CLASSBINDIR)/javax/swing/text/html/parser/html32.bdtd
+DTDBUILDER_JARFILE = $(BUILDTOOLJARDIR)/dtdbuilder.jar
+DTDDATA = $(BUILDDIR)/tools/dtdbuilder/dtds
+
+$(HTML32DTD): $(DTDBUILDER_JARFILE)
+ @$(prep-target)
+ ($(BOOT_JAVA_CMD) -Ddtd_home=$(DTDDATA) \
+ -jar $(DTDBUILDER_JARFILE) html32 > $@) || exit 1
+ @$(java-vm-cleanup)
+
+all build: $(HTML32DTD)
+
+include $(BUILDDIR)/common/Rules.gmk
+
diff --git a/jdk/make/javax/swing/plaf/FILES.gmk b/jdk/make/javax/swing/plaf/FILES.gmk
new file mode 100644
index 0000000..9961228
--- /dev/null
+++ b/jdk/make/javax/swing/plaf/FILES.gmk
@@ -0,0 +1,117 @@
+#
+# Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+MISC_SWING_FILES = \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/Computer.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/DetailsView.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/Directory.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/Error.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/File.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/FloppyDrive.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/HardDrive.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/HomeFolder.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/Inform.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/ListView.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/NewFolder.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/Question.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/TreeClosed.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/TreeLeaf.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/TreeOpen.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/UpFolder.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/Warn.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/image-delayed.png \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/image-failed.png \
+\
+ $(CLASSBINDIR)/javax/swing/plaf/basic/icons/image-delayed.png \
+ $(CLASSBINDIR)/javax/swing/plaf/basic/icons/image-failed.png \
+\
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/Error.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/Inform.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/Question.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/sortDown.png \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/sortUp.png \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/Warn.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/close.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/close-pressed.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/collapsed.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/collapsed-rtl.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/computer.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/directory.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/error.png \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/expanded.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/file.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/floppy.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/hardDrive.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/homeFolder.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/iconify.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/iconify-pressed.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/info.png \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/maximize.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/maximize-pressed.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/menu.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/minimize.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/minimize-pressed.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/newFolder.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/paletteClose.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/paletteClose-pressed.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/question.png \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/upFolder.gif \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/icons/ocean/warning.png \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/sounds/FrameClose.wav \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/sounds/FrameMaximize.wav \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/sounds/FrameMinimize.wav \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/sounds/FrameRestoreDown.wav \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/sounds/FrameRestoreUp.wav \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/sounds/MenuItemCommand.wav \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/sounds/OptionPaneInformation.wav \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/sounds/OptionPaneWarning.wav \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/sounds/OptionPaneError.wav \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/sounds/OptionPaneQuestion.wav \
+ $(CLASSBINDIR)/javax/swing/plaf/metal/sounds/PopupMenuPopup.wav
+
+MISC_SWING_FILES_MOTIF_GIF = \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/motif/icons/DesktopIcon.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/motif/icons/TreeClosed.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/motif/icons/TreeOpen.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/motif/icons/Inform.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/motif/icons/Question.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/motif/icons/Warn.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/motif/icons/Error.gif
+
+MISC_SWING_FILES_MOTIF_PNG = \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/motif/icons/image-delayed.png \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/motif/icons/image-failed.png
+
+MISC_SWING_FILES_UNIX = \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/gtk/icons/Directory.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/gtk/icons/File.gif \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/gtk/icons/image-delayed.png \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/gtk/icons/image-failed.png \
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/gtk/resources/metacity/SwingFallbackTheme/metacity-1/metacity-theme-1.xml
+
+LOGO_ICONS=\
+ $(CLASSBINDIR)/com/sun/java/swing/plaf/windows/icons/JavaCup32.png \
+ $(CLASSBINDIR)/javax/swing/plaf/basic/icons/JavaCup16.png
+
diff --git a/jdk/make/javax/swing/plaf/Makefile b/jdk/make/javax/swing/plaf/Makefile
new file mode 100644
index 0000000..f8e5e0c
--- /dev/null
+++ b/jdk/make/javax/swing/plaf/Makefile
@@ -0,0 +1,112 @@
+#
+# Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = javax.swing.plaf
+PRODUCT = com
+SWING_SRC = $(SHARE_SRC)/classes/javax/swing
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+include FILES.gmk
+AUTO_FILES_JAVA_DIRS = javax/swing/plaf sun/swing com/sun/java/swing/plaf
+ifeq ($(PLATFORM), windows)
+ # Don't build GTK L&F on Windows
+ AUTO_JAVA_PRUNE = gtk
+endif
+
+MISC_FILES = $(MISC_SWING_FILES)
+ifneq ($(PLATFORM), windows)
+ # Only include GTK icons on Solaris/Linux
+ MISC_FILES += $(MISC_SWING_FILES_UNIX)
+endif
+
+FILES_java = $(FILES_SWING_java)
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+RESOURCE_BUNDLES_COMPILED_PROPERTIES = \
+ com/sun/swing/internal/plaf/basic/resources/basic.properties \
+ com/sun/swing/internal/plaf/metal/resources/metal.properties \
+ com/sun/swing/internal/plaf/synth/resources/synth.properties \
+ com/sun/java/swing/plaf/motif/resources/motif.properties \
+ com/sun/java/swing/plaf/windows/resources/windows.properties
+ifneq ($(PLATFORM), windows)
+ # Only compile GTK resource bundles on Solaris/Linux
+ RESOURCE_BUNDLES_COMPILED_PROPERTIES += \
+ com/sun/java/swing/plaf/gtk/resources/gtk.properties
+endif
+
+#
+# Rules.
+# Process LOGO_ICONS and Motif Icons first.
+#
+build: $(LOGO_ICONS) $(MISC_SWING_FILES_MOTIF_GIF) $(MISC_SWING_FILES_MOTIF_PNG) other_files
+
+clean:: classes.clean
+
+#
+# Include
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+ifndef OPENJDK
+$(LOGO_ICONS): $(CLASSBINDIR)/%.png: $(CLOSED_SRC)/share/classes/%.png
+ $(install-file)
+
+$(MISC_SWING_FILES_MOTIF_GIF): $(CLASSBINDIR)/%.gif: $(CLOSED_SRC)/share/classes/%.gif
+ $(install-file)
+
+$(MISC_SWING_FILES_MOTIF_PNG): $(CLASSBINDIR)/%.png: $(CLOSED_SRC)/share/classes/%.png
+ $(install-file)
+endif
+
+other_files: $(MISC_FILES)
+
+$(CLASSBINDIR)/%.wav: $(SHARE_SRC)/classes/%.wav
+ $(install-file)
+
+$(CLASSBINDIR)/%.gif: $(SHARE_SRC)/classes/%.gif
+ $(install-file)
+
+$(CLASSBINDIR)/%.png: $(SHARE_SRC)/classes/%.png
+ $(install-file)
+
+$(CLASSBINDIR)/%.xml: $(SHARE_SRC)/classes/%.xml
+ $(install-file)
+
+$(CLASSBINDIR)/%.css: $(SHARE_SRC)/classes/%.css
+ $(install-file)
+
+$(CLASSBINDIR)/%.bdtd: $(SHARE_SRC)/classes/%.bdtd
+ $(install-file)
+
+$(CLASSBINDIR)/%.txt: $(SHARE_SRC)/classes/%.txt
+ $(install-file)
+
diff --git a/jdk/make/jdk_generic_profile.sh b/jdk/make/jdk_generic_profile.sh
new file mode 100644
index 0000000..7380131
--- /dev/null
+++ b/jdk/make/jdk_generic_profile.sh
@@ -0,0 +1,340 @@
+#!/bin/sh
+
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+
+#############################################################################
+#
+# Generic build profile.sh for all platforms, works in bash, sh, and ksh.
+#
+# Copy this file to your own area, and edit it to suit your needs.
+#
+# Ideally you either won't need to set the ALT_* variables because the
+# build system will find what it needs through system provided paths
+# or environment variables, or you have installed the component in the
+# recommended default path.
+#
+# If you find yourself forced to set an ALT_* environment variable and
+# suspect we could have figured it out automatically, please let us know.
+#
+# Most ALT_* directory defaults are based on being in the parent directory in
+# ALT_SLASH_JAVA, so it's possible to create for example a "C:/jdk6"
+# directory, assign that to ALT_SLASH_JAVA, and place all the components
+# in that directory. This could also minimize the ALT_* environment
+# variables you need to set.
+#
+########
+#
+# Assumes basic unix utilities are in the PATH already (uname, hostname, etc.).
+#
+# On Windows, assumes PROCESSOR_IDENTIFIER, VS71COMNTOOLS,
+# SYSTEMROOT (or SystemRoot), COMPUTERNAME (or hostname works), and
+# USERNAME is defined in the environment.
+# This profile does not rely on using vcvars32.bat and 64bit Setup.bat.
+# Uses CYGWIN cygpath to make sure paths are space-free.
+#
+# The JDK Makefiles may change in the future, making some of these
+# settings unnecessary or redundant.
+#
+# This is a working example, but may or may not work on all systems.
+#
+#############################################################################
+#
+# WARNING: This file will clobber the value of some environment variables.
+#
+# Sets up these environment variables for doing JDK builds:
+# USERNAME
+# COMPUTERNAME
+# PATH
+# Windows Only:
+# LIB
+# INCLUDE
+# PS1
+# SHELL
+#
+# Attempts to set these variables for the JDK builds:
+# ALT_COMPILER_PATH
+# ALT_BOOTDIR
+# ALT_BINARY_PLUGS_PATH
+# ALT_CLOSED_JDK_IMPORT_PATH
+# Windows Only:
+# ALT_UNIXCOMMAND_PATH
+# ALT_MSDEVTOOLS_PATH
+# ALT_DXSDK_PATH
+# ALT_MSVCRT_DLL_PATH
+# ALT_MSVCR71_DLL_PATH
+#
+#############################################################################
+#
+# Keep in mind that at this point, we are running in some kind of shell
+# (sh, ksh, or bash). We don't know if it's solaris, linux, or windows
+# CYGWIN. We need to figure that out.
+
+# Find user name
+if [ "${USERNAME}" = "" ] ; then
+ USERNAME="${LOGNAME}"
+fi
+if [ "${USERNAME}" = "" ] ; then
+ USERNAME="${USER}"
+fi
+export USERNAME
+
+# Find machine name
+if [ "${COMPUTERNAME}" = "" ] ; then
+ COMPUTERNAME="$(hostname)"
+fi
+export COMPUTERNAME
+
+# Boot jdk
+bootjdk=jdk1.6.0
+importjdk=jdk1.7.0
+
+# Uses 'uname -s', but only expect SunOS or Linux, assume Windows otherwise.
+osname=$(uname -s)
+if [ "${osname}" = SunOS ] ; then
+
+ # System place where JDK installed images are stored?
+ jdk_instances=/usr/jdk/instances
+
+ # Get the SS11 compilers (and latest patches for them too)
+ if [ "${ALT_COMPILER_PATH}" = "" ] ; then
+ ALT_COMPILER_PATH=/opt/SUNWspro/bin
+ export ALT_COMPILER_PATH
+ fi
+ if [ ! -d ${ALT_COMPILER_PATH} ] ; then
+ echo "WARNING: Cannot access ALT_COMPILER_PATH=${ALT_COMPILER_PATH}"
+ fi
+
+ # Place compiler path early in PATH to avoid 'cc' conflicts.
+ path4sdk=${ALT_COMPILER_PATH}:/usr/ccs/bin:/usr/ccs/lib:/usr/bin:/bin:/usr/sfw/bin
+
+ # Make sure these are unset
+ unset JAVA_HOME
+ unset LD_LIBRARY_PATH
+
+ # Build in C locale
+ LANG=C
+ export LANG
+ LC_ALL=C
+ export LC_ALL
+
+ umask 002
+
+elif [ "${osname}" = Linux ] ; then
+
+ # System place where JDK installed images are stored?
+ jdk_instances=/opt/java
+
+ # Use compilers from /usr/bin
+ path4sdk=/usr/bin:/bin:/usr/sbin:/sbin
+
+ # Make sure these are unset
+ unset JAVA_HOME
+ unset LD_LIBRARY_PATH
+
+ # Build in C locale
+ LANG=C
+ export LANG
+ LC_ALL=C
+ export LC_ALL
+
+ umask 002
+
+else
+
+ # System place where JDK installed images are stored?
+ jdk_instances="C:"
+
+ # Windows: Differs on CYGWIN and the compiler available.
+ # Also, blanks in pathnames gives make headaches, so anything placed
+ # in any ALT_* variable should be the short windows DOS names.
+
+ # Check CYGWIN (should have already been done)
+ # Assumption here is that you are in a shell window via cygwin.
+ if [ "$(echo ${PROCESSOR_IDENTIFIER} | fgrep AMD64)" != "" ] ; then
+ windows_arch=amd64
+ else
+ windows_arch=i586
+ fi
+ # We need to check if we are running a CYGWIN shell
+ if [ "$(uname -a | fgrep Cygwin)" != "" -a -f /bin/cygpath ] ; then
+ # For CYGWIN, uname will have "Cygwin" in it, and /bin/cygpath should exist
+ # Utility to convert to short pathnames without spaces
+ cygpath="/usr/bin/cygpath -a -m -s"
+ # Most unix utilities are in the /usr/bin
+ unixcommand_path="/usr/bin"
+ # Make the prompt tell you CYGWIN
+ export PS1="CYGWIN:${COMPUTERNAME}:${USERNAME}[\!] "
+ else
+ echo "ERROR: Cannot find CYGWIN on this machine"
+ exit 1
+ fi
+ if [ "${ALT_UNIXCOMMAND_PATH}" != "" ] ; then
+ unixcommand_path=${ALT_UNIXCOMMAND_PATH}
+ fi
+
+ # Default shell
+ export SHELL="${unixcommand_path}/sh"
+
+ # Setup path system (verify this is right)
+ if [ "${SystemRoot}" != "" ] ; then
+ sys_root=$(${cygpath} "${SystemRoot}")
+ elif [ "${SYSTEMROOT}" != "" ] ; then
+ sys_root=$(${cygpath} "${SYSTEMROOT}")
+ else
+ sys_root=$(${cygpath} "C:/WINNT")
+ fi
+ path4sdk="${unixcommand_path};${sys_root}/system32;${sys_root};${sys_root}/System32/Wbem"
+ if [ ! -d "${sys_root}" ] ; then
+ echo "WARNING: No system root found at: ${sys_root}"
+ fi
+
+ # Compiler setup (nasty part)
+ # NOTE: You can use vcvars32.bat to set PATH, LIB, and INCLUDE.
+ # NOTE: CYGWIN has a link.exe too, make sure the compilers are first
+ if [ "${windows_arch}" = i586 ] ; then
+ # 32bit Windows compiler settings
+ # VisualStudio .NET 2003 VC++ 7.1 (VS71COMNTOOLS should be defined)
+ vs_root=$(${cygpath} "${VS71COMNTOOLS}/../..")
+ # Fill in PATH, LIB, and INCLUDE (unset all others to make sure)
+ msdev_root="${vs_root}/Common7/Tools"
+ msdevtools_path="${msdev_root}/bin"
+ vc7_root="${vs_root}/Vc7"
+ compiler_path="${vc7_root}/bin"
+ platform_sdk="${vc7_root}/PlatformSDK"
+
+ # LIB and INCLUDE must use ; as a separator
+ include4sdk="${vc7_root}/atlmfc/include"
+ include4sdk="${include4sdk};${vc7_root}/include"
+ include4sdk="${include4sdk};${platform_sdk}/include/prerelease"
+ include4sdk="${include4sdk};${platform_sdk}/include"
+ include4sdk="${include4sdk};${vs_root}/SDK/v1.1/include"
+ lib4sdk="${lib4sdk};${vc7_root}/lib"
+ lib4sdk="${lib4sdk};${platform_sdk}/lib/prerelease"
+ lib4sdk="${lib4sdk};${platform_sdk}/lib"
+ lib4sdk="${lib4sdk};${vs_root}/SDK/v1.1/lib"
+ # Search path and DLL locating path
+ # WARNING: CYGWIN has a link.exe too, make sure compilers are first
+ path4sdk="${vs_root}/Common7/Tools/bin;${path4sdk}"
+ path4sdk="${vs_root}/SDK/v1.1/bin;${path4sdk}"
+ path4sdk="${vs_root}/Common7/Tools;${path4sdk}"
+ path4sdk="${vs_root}/Common7/Tools/bin/prerelease;${path4sdk}"
+ path4sdk="${vs_root}/Common7/IDE;${path4sdk}"
+ path4sdk="${compiler_path};${path4sdk}"
+ elif [ "${windows_arch}" = amd64 ] ; then
+ # AMD64 64bit Windows compiler settings
+ if [ "${ALT_DEPLOY_MSSDK}" != "" ] ; then
+ platform_sdk=${ALT_DEPLOY_MSSDK}
+ else
+ platform_sdk=$(${cygpath} "C:/Program Files/Microsoft Platform SDK/")
+ fi
+ if [ "${ALT_COMPILER_PATH}" != "" ] ; then
+ compiler_path=${ALT_COMPILER_PATH}
+ if [ "${ALT_DEPLOY_MSSDK}" = "" ] ; then
+ platform_sdk=${ALT_COMPILER_PATH}/../../../..
+ fi
+ else
+ compiler_path="${platform_sdk}/Bin/win64/x86/AMD64"
+ fi
+ if [ "${ALT_MSDEVTOOLS_PATH}" != "" ] ; then
+ msdevtools_path=${ALT_MSDEVTOOLS_PATH}
+ else
+ msdevtools_path="${platform_sdk}/Bin/win64/x86/AMD64"
+ fi
+ msdevtools_path="${compiler_path}"
+ # LIB and INCLUDE must use ; as a separator
+ include4sdk="${platform_sdk}/Include"
+ include4sdk="${include4sdk};${platform_sdk}/Include/crt/sys"
+ include4sdk="${include4sdk};${platform_sdk}/Include/mfc"
+ include4sdk="${include4sdk};${platform_sdk}/Include/atl"
+ include4sdk="${include4sdk};${platform_sdk}/Include/crt"
+ lib4sdk="${platform_sdk}/Lib/AMD64"
+ lib4sdk="${lib4sdk};${platform_sdk}/Lib/AMD64/atlmfc"
+ # Search path and DLL locating path
+ # WARNING: CYGWIN has a link.exe too, make sure compilers are first
+ path4sdk="${platform_sdk}/bin;${path4sdk}"
+ path4sdk="${compiler_path};${path4sdk}"
+ fi
+ # Export LIB and INCLUDE
+ unset lib
+ unset Lib
+ LIB="${lib4sdk}"
+ export LIB
+ unset include
+ unset Include
+ INCLUDE="${include4sdk}"
+ export INCLUDE
+
+ # Turn all \\ into /, remove duplicates and trailing /
+ slash_path="$(echo ${path4sdk} | sed -e 's@\\\\@/@g' -e 's@//@/@g' -e 's@/$@@' -e 's@/;@;@g')"
+ path4sdk="${slash_path}"
+
+ # Convert path4sdk to cygwin style
+ path4sdk="$(/usr/bin/cygpath -p ${path4sdk})"
+
+fi
+
+# Get the previous JDK to be used to bootstrap the build
+if [ "${ALT_BOOTDIR}" = "" ] ; then
+ ALT_BOOTDIR=${jdk_instances}/${bootjdk}
+ export ALT_BOOTDIR
+fi
+if [ ! -d ${ALT_BOOTDIR} ] ; then
+ echo "WARNING: Cannot access ALT_BOOTDIR=${ALT_BOOTDIR}"
+fi
+
+# Get the import JDK to be used to get hotspot VM if not built
+if [ "${ALT_JDK_IMPORT_PATH}" = "" -a -d ${jdk_instances}/${importjdk} ] ; then
+ ALT_JDK_IMPORT_PATH=${jdk_instances}/${importjdk}
+ export ALT_JDK_IMPORT_PATH
+fi
+
+# Get the latest JDK binary plugs or build to import pre-built binaries
+if [ "${ALT_BINARY_PLUGS_PATH}" = "" ] ; then
+ binplugs=${jdk_instances}/openjdk-binary-plugs
+ jdkplugs=${jdk_instances}/${importjdk}
+ if [ -d ${binplugs} ] ; then
+ ALT_BINARY_PLUGS_PATH=${binplugs}
+ export ALT_BINARY_PLUGS_PATH
+ elif [ "${ALT_CLOSED_JDK_IMPORT_PATH}" = "" -a -d ${jdkplugs} ] ; then
+ ALT_CLOSED_JDK_IMPORT_PATH=${jdkplugs}
+ export ALT_CLOSED_JDK_IMPORT_PATH
+ fi
+ if [ "${ALT_BINARY_PLUGS_PATH}" = "" ] ; then
+ echo "WARNING: Missing ALT_BINARY_PLUGS_PATH: ${binplugs}"
+ fi
+fi
+if [ "${ALT_BINARY_PLUGS_PATH}" != "" -a ! -d "${ALT_BINARY_PLUGS_PATH}" ] ; then
+ echo "WARNING: Cannot access ALT_BINARY_PLUGS_PATH=${ALT_BINARY_PLUGS_PATH}"
+fi
+if [ "${ALT_CLOSED_JDK_IMPORT_PATH}" != "" -a ! -d "${ALT_CLOSED_JDK_IMPORT_PATH}" ] ; then
+ echo "WARNING: Cannot access ALT_CLOSED_JDK_IMPORT_PATH=${ALT_CLOSED_JDK_IMPORT_PATH}"
+fi
+
+# Export PATH setting
+PATH="${path4sdk}"
+export PATH
+
diff --git a/jdk/make/jpda/Makefile b/jdk/make/jpda/Makefile
new file mode 100644
index 0000000..b256788
--- /dev/null
+++ b/jdk/make/jpda/Makefile
@@ -0,0 +1,41 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all of JPDA, including JDWP, JDI, and
+# example debuggers. See also included files.
+#
+
+BUILDDIR = ..
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Core.
+#
+SUBDIRS = jdwp back front transport expr tty bdi gui
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/jpda/back/Makefile b/jdk/make/jpda/back/Makefile
new file mode 100644
index 0000000..a974bff
--- /dev/null
+++ b/jdk/make/jpda/back/Makefile
@@ -0,0 +1,125 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the JDI back-end implementation
+#
+
+BUILDDIR = ../..
+LIBRARY = jdwp
+PRODUCT = jpda
+
+FILES_m = mapfile-vers
+
+include $(BUILDDIR)/common/Defs.gmk
+
+# Use the mapfile-vers (See the mapfile located with this Makefile)
+ifdef FILES_m
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+endif
+
+OTHER_INCLUDES = -I$(SHARE_SRC)/transport/export \
+ -I$(SHARE_SRC)/back/export \
+ -I$(SHARE_SRC)/npt \
+ -I$(PLATFORM_SRC)/npt \
+ -I$(SHARE_SRC)/back \
+ -I$(PLATFORM_SRC)/back \
+ -I$(GENNATIVESRCDIR)/jdwp
+
+ifneq ($(PLATFORM), windows)
+ OTHER_LDLIBS += -ldl
+endif # PLATFORM
+
+#
+# This turns off all assert() checking in the optimized library
+#
+CPPFLAGS_OPT += -DNDEBUG
+
+#
+# This controls the ability to do logging in the library.
+#
+CPPFLAGS_DBG += -DJDWP_LOGGING
+CPPFLAGS_OPT += -DJDWP_LOGGING
+
+#
+# Files to compile.
+#
+FILES_c = \
+ ArrayReferenceImpl.c \
+ ArrayTypeImpl.c \
+ ClassTypeImpl.c \
+ ClassLoaderReferenceImpl.c \
+ ClassObjectReferenceImpl.c \
+ EventRequestImpl.c \
+ FieldImpl.c \
+ FrameID.c \
+ MethodImpl.c \
+ ObjectReferenceImpl.c \
+ ReferenceTypeImpl.c \
+ SDE.c \
+ StackFrameImpl.c \
+ StringReferenceImpl.c \
+ ThreadGroupReferenceImpl.c \
+ ThreadReferenceImpl.c \
+ VirtualMachineImpl.c \
+ bag.c \
+ commonRef.c \
+ classTrack.c \
+ debugDispatch.c \
+ debugInit.c \
+ debugLoop.c \
+ error_messages.c \
+ eventFilter.c \
+ eventHandler.c \
+ eventHelper.c \
+ inStream.c \
+ invoker.c \
+ log_messages.c \
+ outStream.c \
+ standardHandlers.c \
+ stepControl.c \
+ stream.c \
+ threadControl.c \
+ transport.c \
+ util.c \
+ linker_md.c \
+ exec_md.c
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Library.gmk
+
+# We don't want to link against -ljava
+JAVALIB=
+
+#
+# Add to ambient vpath so we pick up the library files
+#
+ifeq ($(PLATFORM), windows)
+vpath %.c $(SHARE_SRC)/back:$(SHARE_SRC)/back
+endif # PLATFORM
+vpath %.c $(SHARE_SRC)/back:$(PLATFORM_SRC)/back
+
diff --git a/jdk/make/jpda/back/mapfile-vers b/jdk/make/jpda/back/mapfile-vers
new file mode 100644
index 0000000..753dc3d
--- /dev/null
+++ b/jdk/make/jpda/back/mapfile-vers
@@ -0,0 +1,34 @@
+#
+# Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ Agent_OnLoad;
+ Agent_OnUnload;
+ local:
+ *;
+};
diff --git a/jdk/make/jpda/bdi/Makefile b/jdk/make/jpda/bdi/Makefile
new file mode 100644
index 0000000..e2cac82
--- /dev/null
+++ b/jdk/make/jpda/bdi/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the BDI interface
+#
+
+BUILDDIR = ../..
+PACKAGE = com.sun.tools.example.debug.bdi
+PRODUCT = jpda
+include $(BUILDDIR)/common/Defs.gmk
+
+# Where to look for sources
+AUTO_FILES_JAVA_DIRS = \
+ com/sun/tools/example/debug/bdi \
+ com/sun/tools/example/debug/event
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/jpda/expr/Makefile b/jdk/make/jpda/expr/Makefile
new file mode 100644
index 0000000..a7b0813
--- /dev/null
+++ b/jdk/make/jpda/expr/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building client expression parsing code.
+#
+
+BUILDDIR = ../..
+PACKAGE = com.sun.tools.example.debug.expr
+PRODUCT = jpda
+include $(BUILDDIR)/common/Defs.gmk
+
+# Packages of java sources to compiler
+AUTO_FILES_JAVA_DIRS = com/sun/tools/example/debug/expr
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/jpda/front/Makefile b/jdk/make/jpda/front/Makefile
new file mode 100644
index 0000000..612d6d6
--- /dev/null
+++ b/jdk/make/jpda/front/Makefile
@@ -0,0 +1,82 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the JDI interface and
+# front-end implementation
+#
+
+BUILDDIR = ../..
+PACKAGE = com.sun.tools.jdi
+PRODUCT = jpda
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Java Files to compile are found automatically.
+#
+AUTO_FILES_JAVA_DIRS = com/sun/jdi com/sun/tools/jdi
+
+#
+# Files that need to be copied
+#
+SERVICEDIR = $(CLASSBINDIR)/META-INF/services
+
+FILES_copy = \
+ $(SERVICEDIR)/com.sun.jdi.connect.spi.TransportService \
+ $(SERVICEDIR)/com.sun.jdi.connect.Connector
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jdk
+RESOURCE_BUNDLES_COMPILED_PROPERTIES = \
+ com/sun/tools/jdi/resources/jdi.properties
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+#
+# Copy the service provider configuration files into the resource
+# directory. Copy the configuration file also uncomments any
+# providers that need to be enabled for this platform.
+#
+
+build: copy-files
+
+copy-files: $(FILES_copy)
+
+$(SERVICEDIR)/%: $(SHARE_SRC)/classes/com/sun/tools/jdi/META-INF/services/%
+ $(prep-target)
+ $(RM) $@.temp
+ @$(CAT) $< | $(SED) -e "s/^#\[$(PLATFORM)\]//" > $@.temp
+ $(MV) $@.temp $@
+
+clean clobber::
+ $(RM) $(FILES_copy)
+
+.PHONY: copy-files
+
diff --git a/jdk/make/jpda/gui/Makefile b/jdk/make/jpda/gui/Makefile
new file mode 100644
index 0000000..c5e4513
--- /dev/null
+++ b/jdk/make/jpda/gui/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the GUI debugger
+#
+
+BUILDDIR = ../..
+PACKAGE = com.sun.tools.example.debug.gui
+PRODUCT = jpda
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Java Files to compile are found automatically.
+#
+AUTO_FILES_JAVA_DIRS = com/sun/tools/example/debug/gui
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/jpda/jdwp/Makefile b/jdk/make/jpda/jdwp/Makefile
new file mode 100644
index 0000000..5a538c9
--- /dev/null
+++ b/jdk/make/jpda/jdwp/Makefile
@@ -0,0 +1,77 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JDWP
+#
+
+BUILDDIR = ../..
+PACKAGE = com.sun.tools.jdwp
+PRODUCT = jpda
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Where do generated Java source files go?
+#
+JAVA_SRC_DEST_DIR = $(GENSRCDIR)
+
+#
+# Where do generated C source files go?
+# the jdwp build is what needs the generated C files
+# so they are being placed there for automatic pickup by
+# the value of GENNATIVESRCDIR when jdwp is being built.
+#
+C_SRC_DEST_DIR = $(GENNATIVESRCDIR)/jdwp
+
+JDIPKGDIR = com/sun/tools/jdi
+GEN_JDWP_JAVA_DIR = $(JAVA_SRC_DEST_DIR)/$(JDIPKGDIR)
+GEN_JDWP_JAVA = $(GEN_JDWP_JAVA_DIR)/JDWP.java
+GEN_JDWP_C = $(C_SRC_DEST_DIR)/JDWPCommands.h
+
+JDWP_SPEC = $(BUILDDIR)/jpda/jdwp/jdwp.spec
+JDWPGEN_JARFILE = $(BUILDTOOLJARDIR)/jdwpgen.jar
+
+build: $(GEN_JDWP_JAVA) $(GEN_JDWP_C)
+
+$(GEN_JDWP_JAVA) $(GEN_JDWP_C): $(JDWP_SPEC) $(JDWPGEN_JARFILE)
+ $(MKDIR) -p $(GEN_JDWP_JAVA_DIR)
+ $(MKDIR) -p $(C_SRC_DEST_DIR)
+ $(BOOT_JAVA_CMD) -jar $(JDWPGEN_JARFILE) $(JDWP_SPEC) \
+ -jdi $(GEN_JDWP_JAVA) \
+ -include $(GEN_JDWP_C)
+ @$(java-vm-cleanup)
+
+#
+# Extra clean.
+#
+clean clobber::
+ $(RM) -r $(C_SRC_DEST_DIR)
+ $(RM) -r $(JAVA_SRC_DEST_DIR)/$(JDIPKGDIR)
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Rules.gmk
+
diff --git a/jdk/make/jpda/jdwp/jdwp.spec b/jdk/make/jpda/jdwp/jdwp.spec
new file mode 100644
index 0000000..12238f1
--- /dev/null
+++ b/jdk/make/jpda/jdwp/jdwp.spec
@@ -0,0 +1,3141 @@
+/*
+ * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+JDWP "Java(tm) Debug Wire Protocol"
+(CommandSet VirtualMachine=1
+ (Command Version=1
+ "Returns the JDWP version implemented by the target VM. "
+ "The version string format is implementation dependent. "
+ (Out
+ )
+ (Reply
+ (string description "Text information on the VM version")
+ (int jdwpMajor "Major JDWP Version number")
+ (int jdwpMinor "Minor JDWP Version number")
+ (string vmVersion "Target VM JRE version, as in the java.version property")
+ (string vmName "Target VM name, as in the java.vm.name property")
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ )
+ )
+ (Command ClassesBySignature=2
+ "Returns reference types for all the classes loaded by the target VM "
+ "which match the given signature. "
+ "Multple reference types will be returned if two or more class "
+ "loaders have loaded a class of the same name. "
+ "The search is confined to loaded classes only; no attempt is made "
+ "to load a class of the given signature. "
+ (Out
+ (string signature "JNI signature of the class to find "
+ "(for example, \"Ljava/lang/String;\"). "
+ )
+ )
+ (Reply
+ (Repeat classes "Number of reference types that follow."
+ (Group ClassInfo
+ (byte refTypeTag "<a href=\"#JDWP_TypeTag\">Kind</a> "
+ "of following reference type. ")
+ (referenceTypeID typeID "Matching loaded reference type")
+ (int status "The current class "
+ "<a href=\"#JDWP_ClassStatus\">status.</a> ")
+ )
+ )
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ )
+ )
+ (Command AllClasses=3
+ "Returns reference types for all classes currently loaded by the "
+ "target VM."
+ (Out
+ )
+ (Reply
+ (Repeat classes "Number of reference types that follow."
+ (Group ClassInfo
+ (byte refTypeTag "<a href=\"#JDWP_TypeTag\">Kind</a> "
+ "of following reference type. ")
+ (referenceTypeID typeID "Loaded reference type")
+ (string signature
+ "The JNI signature of the loaded reference type")
+ (int status "The current class "
+ "<a href=\"#JDWP_ClassStatus\">status.</a> ")
+ )
+ )
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ )
+ )
+ (Command AllThreads=4
+ "Returns all threads currently running in the target VM . "
+ "The returned list contains threads created through "
+ "java.lang.Thread, all native threads attached to "
+ "the target VM through JNI, and system threads created "
+ "by the target VM. Threads that have not yet been started "
+ "and threads that have completed their execution are not "
+ "included in the returned list. "
+ (Out
+ )
+ (Reply
+ (Repeat threads "Number of threads that follow."
+ (threadObject thread "A running thread")
+ )
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ )
+ )
+ (Command TopLevelThreadGroups=5
+ "Returns all thread groups that do not have a parent. This command "
+ "may be used as the first step in building a tree (or trees) of the "
+ "existing thread groups."
+ (Out
+ )
+ (Reply
+ (Repeat groups "Number of thread groups that follow."
+ (threadGroupObject group "A top level thread group")
+ )
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ )
+ )
+ (Command Dispose=6
+ "Invalidates this virtual machine mirror. "
+ "The communication channel to the target VM is closed, and "
+ "the target VM prepares to accept another subsequent connection "
+ "from this debugger or another debugger, including the "
+ "following tasks: "
+ "<ul>"
+ "<li>All event requests are cancelled. "
+ "<li>All threads suspended by the thread-level "
+ "<a href=\"#JDWP_ThreadReference_Resume\">resume</a> command "
+ "or the VM-level "
+ "<a href=\"#JDWP_VirtualMachine_Resume\">resume</a> command "
+ "are resumed as many times as necessary for them to run. "
+ "<li>Garbage collection is re-enabled in all cases where it was "
+ "<a href=\"#JDWP_ObjectReference_DisableCollection\">disabled</a> "
+ "</ul>"
+ "Any current method invocations executing in the target VM "
+ "are continued after the disconnection. Upon completion of any such "
+ "method invocation, the invoking thread continues from the "
+ "location where it was originally stopped. "
+ "<p>"
+ "Resources originating in "
+ "this VirtualMachine (ObjectReferences, ReferenceTypes, etc.) "
+ "will become invalid. "
+ (Out
+ )
+ (Reply
+ )
+ (ErrorSet
+ )
+ )
+ (Command IDSizes=7
+ "Returns the sizes of variably-sized data types in the target VM."
+ "The returned values indicate the number of bytes used by the "
+ "identifiers in command and reply packets."
+ (Out
+ )
+ (Reply
+ (int fieldIDSize "fieldID size in bytes ")
+ (int methodIDSize "methodID size in bytes ")
+ (int objectIDSize "objectID size in bytes ")
+ (int referenceTypeIDSize "referenceTypeID size in bytes ")
+ (int frameIDSize "frameID size in bytes ")
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ )
+ )
+ (Command Suspend=8
+ "Suspends the execution of the application running in the target "
+ "VM. All Java threads currently running will be suspended. "
+ "<p>"
+ "Unlike java.lang.Thread.suspend, "
+ "suspends of both the virtual machine and individual threads are "
+ "counted. Before a thread will run again, it must be resumed through "
+ "the <a href=\"#JDWP_VirtualMachine_Resume\">VM-level resume</a> command "
+ "or the <a href=\"#JDWP_ThreadReference_Resume\">thread-level resume</a> command "
+ "the same number of times it has been suspended. "
+ (Out
+ )
+ (Reply
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ )
+ )
+ (Command Resume=9
+ "Resumes execution of the application after the suspend "
+ "command or an event has stopped it. "
+ "Suspensions of the Virtual Machine and individual threads are "
+ "counted. If a particular thread is suspended n times, it must "
+ "resumed n times before it will continue. "
+ (Out
+ )
+ (Reply
+ )
+ (ErrorSet
+ )
+ )
+ (Command Exit=10
+ "Terminates the target VM with the given exit code. "
+ "On some platforms, the exit code might be truncated, for "
+ "example, to the low order 8 bits. "
+ "All ids previously returned from the target VM become invalid. "
+ "Threads running in the VM are abruptly terminated. "
+ "A thread death exception is not thrown and "
+ "finally blocks are not run."
+ (Out
+ (int exitCode "the exit code")
+ )
+ (Reply
+ )
+ (ErrorSet
+ )
+ )
+ (Command CreateString=11
+ "Creates a new string object in the target VM and returns "
+ "its id. "
+ (Out
+ (string utf "UTF-8 characters to use in the created string. ")
+ )
+ (Reply
+ (stringObject stringObject
+ "Created string (instance of java.lang.String) ")
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ )
+ )
+ (Command Capabilities=12
+ "Retrieve this VM's capabilities. The capabilities are returned "
+ "as booleans, each indicating the presence or absence of a "
+ "capability. The commands associated with each capability will "
+ "return the NOT_IMPLEMENTED error if the cabability is not "
+ "available."
+ (Out
+ )
+ (Reply
+ (boolean canWatchFieldModification
+ "Can the VM watch field modification, and therefore "
+ "can it send the Modification Watchpoint Event?")
+ (boolean canWatchFieldAccess
+ "Can the VM watch field access, and therefore "
+ "can it send the Access Watchpoint Event?")
+ (boolean canGetBytecodes
+ "Can the VM get the bytecodes of a given method? ")
+ (boolean canGetSyntheticAttribute
+ "Can the VM determine whether a field or method is "
+ "synthetic? (that is, can the VM determine if the "
+ "method or the field was invented by the compiler?) ")
+ (boolean canGetOwnedMonitorInfo
+ "Can the VM get the owned monitors infornation for "
+ "a thread?")
+ (boolean canGetCurrentContendedMonitor
+ "Can the VM get the current contended monitor of a thread?")
+ (boolean canGetMonitorInfo
+ "Can the VM get the monitor information for a given object? ")
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ )
+ )
+ (Command ClassPaths=13
+ "Retrieve the classpath and bootclasspath of the target VM. "
+ "If the classpath is not defined, returns an empty list. If the "
+ "bootclasspath is not defined returns an empty list."
+ (Out
+ )
+ (Reply
+ (string baseDir "Base directory used to resolve relative "
+ "paths in either of the following lists.")
+ (Repeat classpaths "Number of paths in classpath."
+ (string path "One component of classpath") )
+ (Repeat bootclasspaths "Number of paths in bootclasspath."
+ (string path "One component of bootclasspath") )
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ )
+ )
+ (Command DisposeObjects=14
+ "Releases a list of object IDs. For each object in the list, the "
+ "following applies. "
+ "The count of references held by the back-end (the reference "
+ "count) will be decremented by refCnt. "
+ "If thereafter the reference count is less than "
+ "or equal to zero, the ID is freed. "
+ "Any back-end resources associated with the freed ID may "
+ "be freed, and if garbage collection was "
+ "disabled for the object, it will be re-enabled. "
+ "The sender of this command "
+ "promises that no further commands will be sent "
+ "referencing a freed ID.
+ "<p>"
+ "Use of this command is not required. If it is not sent, "
+ "resources associated with each ID will be freed by the back-end "
+ "at some time after the corresponding object is garbage collected. "
+ "It is most useful to use this command to reduce the load on the "
+ "back-end if a very large number of "
+ "objects has been retrieved from the back-end (a large array, "
+ "for example) but may not be garbage collected any time soon. "
+ "<p>"
+ "IDs may be re-used by the back-end after they "
+ "have been freed with this command."
+ "This description assumes reference counting, "
+ "a back-end may use any implementation which operates "
+ "equivalently. "
+ (Out
+ (Repeat requests "Number of object dispose requests that follow"
+ (Group Request
+ (object object "The object ID")
+ (int refCnt "The number of times this object ID has been "
+ "part of a packet received from the back-end. "
+ "An accurate count prevents the object ID "
+ "from being freed on the back-end if "
+ "it is part of an incoming packet, not yet "
+ "handled by the front-end.")
+ )
+ )
+ )
+ (Reply
+ )
+ (ErrorSet
+ )
+ )
+ (Command HoldEvents=15
+ "Tells the target VM to stop sending events. Events are not discarded; "
+ "they are held until a subsequent ReleaseEvents command is sent. "
+ "This command is useful to control the number of events sent "
+ "to the debugger VM in situations where very large numbers of events "
+ "are generated. "
+ "While events are held by the debugger back-end, application "
+ "execution may be frozen by the debugger back-end to prevent "
+ "buffer overflows on the back end.
+ "Responses to commands are never held and are not affected by this
+ "command. If events are already being held, this command is "
+ "ignored."
+ (Out
+ )
+ (Reply
+ )
+ (ErrorSet
+ )
+ )
+ (Command ReleaseEvents=16
+ "Tells the target VM to continue sending events. This command is "
+ "used to restore normal activity after a HoldEvents command. If "
+ "there is no current HoldEvents command in effect, this command is "
+ "ignored."
+ (Out
+ )
+ (Reply
+ )
+ (ErrorSet
+ )
+ )
+ (Command CapabilitiesNew=17
+ "Retrieve all of this VM's capabilities. The capabilities are returned "
+ "as booleans, each indicating the presence or absence of a "
+ "capability. The commands associated with each capability will "
+ "return the NOT_IMPLEMENTED error if the cabability is not "
+ "available."
+ "Since JDWP version 1.4."
+ (Out
+ )
+ (Reply
+ (boolean canWatchFieldModification
+ "Can the VM watch field modification, and therefore "
+ "can it send the Modification Watchpoint Event?")
+ (boolean canWatchFieldAccess
+ "Can the VM watch field access, and therefore "
+ "can it send the Access Watchpoint Event?")
+ (boolean canGetBytecodes
+ "Can the VM get the bytecodes of a given method? ")
+ (boolean canGetSyntheticAttribute
+ "Can the VM determine whether a field or method is "
+ "synthetic? (that is, can the VM determine if the "
+ "method or the field was invented by the compiler?) ")
+ (boolean canGetOwnedMonitorInfo
+ "Can the VM get the owned monitors infornation for "
+ "a thread?")
+ (boolean canGetCurrentContendedMonitor
+ "Can the VM get the current contended monitor of a thread?")
+ (boolean canGetMonitorInfo
+ "Can the VM get the monitor information for a given object? ")
+ (boolean canRedefineClasses
+ "Can the VM redefine classes?")
+ (boolean canAddMethod
+ "Can the VM add methods when redefining "
+ "classes?")
+ (boolean canUnrestrictedlyRedefineClasses
+ "Can the VM redefine classes"
+ "in arbitrary ways?")
+ (boolean canPopFrames
+ "Can the VM pop stack frames?")
+ (boolean canUseInstanceFilters
+ "Can the VM filter events by specific object?")
+ (boolean canGetSourceDebugExtension
+ "Can the VM get the source debug extension?")
+ (boolean canRequestVMDeathEvent
+ "Can the VM request VM death events?")
+ (boolean canSetDefaultStratum
+ "Can the VM set a default stratum?")
+ (boolean canGetInstanceInfo
+ "Can the VM return instances, counts of instances of classes "
+ "and referring objects?")
+ (boolean canRequestMonitorEvents
+ "Can the VM request monitor events?")
+ (boolean canGetMonitorFrameInfo
+ "Can the VM get monitors with frame depth info?")
+ (boolean canUseSourceNameFilters
+ "Can the VM filter class prepare events by source name?")
+ (boolean canGetConstantPool
+ "Can the VM return the constant pool information?")
+ (boolean canForceEarlyReturn
+ "Can the VM force early return from a method?")
+ (boolean reserved22
+ "Reserved for future capability")
+ (boolean reserved23
+ "Reserved for future capability")
+ (boolean reserved24
+ "Reserved for future capability")
+ (boolean reserved25
+ "Reserved for future capability")
+ (boolean reserved26
+ "Reserved for future capability")
+ (boolean reserved27
+ "Reserved for future capability")
+ (boolean reserved28
+ "Reserved for future capability")
+ (boolean reserved29
+ "Reserved for future capability")
+ (boolean reserved30
+ "Reserved for future capability")
+ (boolean reserved31
+ "Reserved for future capability")
+ (boolean reserved32
+ "Reserved for future capability")
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ )
+ )
+ (Command RedefineClasses=18
+ "Installs new class definitions. "
+ "If there are active stack frames in methods of the redefined classes in the "
+ "target VM then those active frames continue to run the bytecodes of the "
+ "original method. These methods are considered obsolete - see "
+ "<a href=\"#JDWP_Method_IsObsolete\">IsObsolete</a>. The methods in the "
+ "redefined classes will be used for new invokes in the target VM. "
+ "The original method ID refers to the redefined method. "
+ "All breakpoints in the redefined classes are cleared."
+ "If resetting of stack frames is desired, the "
+ "<a href=\"#JDWP_StackFrame_PopFrames\">PopFrames</a> command can be used "
+ "to pop frames with obsolete methods."
+ "<p>"
+ "Requires canRedefineClasses capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>. "
+ "In addition to the canRedefineClasses capability, the target VM must "
+ "have the canAddMethod capability to add methods when redefining classes, "
+ "or the canUnrestrictedlyRedefineClasses to redefine classes in arbitrary "
+ "ways."
+ (Out
+ (Repeat classes "Number of reference types that follow."
+ (Group ClassDef
+ (referenceType refType "The reference type.")
+ (Repeat classfile "Number of bytes defining class (below)"
+ (byte classbyte "byte in JVM class file "
+ "format.")
+ )
+ )
+ )
+ )
+ (Reply
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "One of the refTypes is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "One of the refTypes is not a known ID.")
+ (Error UNSUPPORTED_VERSION)
+ (Error INVALID_CLASS_FORMAT)
+ (Error CIRCULAR_CLASS_DEFINITION)
+ (Error FAILS_VERIFICATION)
+ (Error NAMES_DONT_MATCH)
+ (Error NOT_IMPLEMENTED "No aspect of this functionality is implemented "
+ "(CapabilitiesNew.canRedefineClasses is false)")
+ (Error ADD_METHOD_NOT_IMPLEMENTED)
+ (Error SCHEMA_CHANGE_NOT_IMPLEMENTED)
+ (Error HIERARCHY_CHANGE_NOT_IMPLEMENTED)
+ (Error DELETE_METHOD_NOT_IMPLEMENTED)
+ (Error CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED)
+ (Error METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED)
+ (Error VM_DEAD)
+ )
+ )
+ (Command SetDefaultStratum=19
+ "Set the default stratum. Requires canSetDefaultStratum capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
+ (Out
+ (string stratumID "default stratum, or empty string to use "
+ "reference type default.")
+ )
+ (Reply
+ )
+ (ErrorSet
+ (Error NOT_IMPLEMENTED)
+ (Error VM_DEAD)
+ )
+ )
+ (Command AllClassesWithGeneric=20
+ "Returns reference types for all classes currently loaded by the "
+ "target VM. "
+ "Both the JNI signature and the generic signature are "
+ "returned for each class. "
+ "Generic signatures are described in the signature attribute "
+ "section in the "
+ "<a href=\"http://java.sun.com/docs/books/vmspec\">
+ "Java Virtual Machine Specification, 3rd Edition.</a> "
+ "Since JDWP version 1.5."
+ (Out
+ )
+ (Reply
+ (Repeat classes "Number of reference types that follow."
+ (Group ClassInfo
+ (byte refTypeTag "<a href=\"#JDWP_TypeTag\">Kind</a> "
+ "of following reference type. ")
+ (referenceTypeID typeID "Loaded reference type")
+ (string signature
+ "The JNI signature of the loaded reference type.")
+ (string genericSignature
+ "The generic signature of the loaded reference type "
+ "or an empty string if there is none.")
+ (int status "The current class "
+ "<a href=\"#JDWP_ClassStatus\">status.</a> ")
+ )
+ )
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ )
+ )
+
+ (Command InstanceCounts=21
+ "Returns the number of instances of each reference type in the input list. "
+ "Only instances that are reachable for the purposes of "
+ "garbage collection are counted. If a reference type is invalid, "
+ "eg. it has been unloaded, zero is returned for its instance count."
+ "<p>Since JDWP version 1.6. Requires canGetInstanceInfo capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
+ (Out
+ (Repeat refTypesCount "Number of reference types that follow. Must be non-negative."
+ (referenceType refType "A reference type ID.")
+ )
+ )
+ (Reply
+ (Repeat counts "The number of counts that follow."
+ (long instanceCount "The number of instances for the corresponding reference type "
+ "in 'Out Data'.")
+ )
+ )
+ (ErrorSet
+ (Error ILLEGAL_ARGUMENT "refTypesCount is less than zero.")
+ (Error NOT_IMPLEMENTED)
+ (Error VM_DEAD)
+ )
+ )
+)
+
+(CommandSet ReferenceType=2
+ (Command Signature=1
+ "Returns the JNI signature of a reference type. "
+ "JNI signature formats are described in the "
+ "<a href=\"http://java.sun.com/products/jdk/1.2/docs/guide/jni/index.html\">Java Native Inteface Specification</a>"
+ "<p>
+ "For primitive classes "
+ "the returned signature is the signature of the corresponding primitive "
+ "type; for example, \"I\" is returned as the signature of the class "
+ "represented by java.lang.Integer.TYPE."
+ (Out
+ (referenceType refType "The reference type ID.")
+ )
+ (Reply
+ (string signature
+ "The JNI signature for the reference type.")
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command ClassLoader=2
+ "Returns the instance of java.lang.ClassLoader which loaded "
+ "a given reference type. If the reference type was loaded by the "
+ "system class loader, the returned object ID is null."
+ (Out
+ (referenceType refType "The reference type ID.")
+ )
+ (Reply
+ (classLoaderObject classLoader "The class loader for the reference type. ")
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command Modifiers=3
+ "Returns the modifiers (also known as access flags) for a reference type. "
+ "The returned bit mask contains information on the declaration "
+ "of the reference type. If the reference type is an array or "
+ "a primitive class (for example, java.lang.Integer.TYPE), the "
+ "value of the returned bit mask is undefined."
+ (Out
+ (referenceType refType "The reference type ID.")
+ )
+ (Reply
+ (int modBits "Modifier bits as defined in the "
+ "<a href=\"http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html\">VM Specification</a>")
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command Fields=4
+ "Returns information for each field in a reference type. "
+ "Inherited fields are not included. "
+ "The field list will include any synthetic fields created "
+ "by the compiler. "
+ "Fields are returned in the order they occur in the class file."
+ (Out
+ (referenceType refType "The reference type ID.")
+ )
+ (Reply
+ (Repeat declared "Number of declared fields."
+ (Group FieldInfo
+ (field fieldID "Field ID.")
+ (string name "Name of field.")
+ (string signature "JNI Signature of field.")
+ (int modBits "The modifier bit flags (also known as access flags) "
+ "which provide additional information on the "
+ "field declaration. Individual flag values are "
+ "defined in the "
+ "<a href=\"http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html\">VM Specification</a>."
+ "In addition, The <code>0xf0000000</code> bit identifies "
+ "the field as synthetic, if the synthetic attribute "
+ "<a href=\"#JDWP_VirtualMachine_Capabilities\">capability</a> is available.")
+ )
+ )
+ )
+ (ErrorSet
+ (Error CLASS_NOT_PREPARED)
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command Methods=5
+ "Returns information for each method in a reference type. "
+ "Inherited methods are not included. The list of methods will "
+ "include constructors (identified with the name \"<init>\"), "
+ "the initialization method (identified with the name \"<clinit>\") "
+ "if present, and any synthetic methods created by the compiler. "
+ "Methods are returned in the order they occur in the class file."
+ (Out
+ (referenceType refType "The reference type ID.")
+ )
+ (Reply
+ (Repeat declared "Number of declared methods."
+ (Group MethodInfo
+ (method methodID "Method ID.")
+ (string name "Name of method.")
+ (string signature "JNI signature of method.")
+ (int modBits "The modifier bit flags (also known as access flags) "
+ "which provide additional information on the "
+ "method declaration. Individual flag values are "
+ "defined in the "
+ "<a href=\"http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html\">VM Specification</a>."
+ "In addition, The <code>0xf0000000</code> bit identifies "
+ "the method as synthetic, if the synthetic attribute "
+ "<a href=\"#JDWP_VirtualMachine_Capabilities\">capability</a> is available.")
+ )
+ )
+ )
+ (ErrorSet
+ (Error CLASS_NOT_PREPARED)
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command GetValues=6
+ "Returns the value of one or more static fields of the "
+ "reference type. Each field must be member of the reference type "
+ "or one of its superclasses, superinterfaces, or implemented interfaces. "
+ "Access control is not enforced; for example, the values of private "
+ "fields can be obtained."
+ (Out
+ (referenceType refType "The reference type ID.")
+ (Repeat fields "The number of values to get"
+ (Group Field
+ (field fieldID "A field to get")
+ )
+ )
+ )
+ (Reply
+ (Repeat values "The number of values returned, always equal to fields, "
+ "the number of values to get."
+ (value value "The field value")
+ )
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error INVALID_FIELDID)
+ (Error VM_DEAD)
+ )
+ )
+ (Command SourceFile=7
+ "Returns the name of source file in which a reference type was "
+ "declared. "
+ (Out
+ (referenceType refType "The reference type ID.")
+ )
+ (Reply
+ (string sourceFile "The source file name. No path information "
+ "for the file is included")
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error ABSENT_INFORMATION "The source file attribute is absent.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command NestedTypes=8
+ "Returns the classes and interfaces directly nested within this type."
+ "Types further nested within those types are not included. "
+ (Out
+ (referenceType refType "The reference type ID.")
+ )
+ (Reply
+ (Repeat classes "The number of nested classes and interfaces"
+ (Group TypeInfo
+ (byte refTypeTag "<a href=\"#JDWP_TypeTag\">Kind</a> "
+ "of following reference type. ")
+ (referenceTypeID typeID "The nested class or interface ID.")
+ )
+ )
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command Status=9
+ "Returns the current status of the reference type. The status "
+ "indicates the extent to which the reference type has been "
+ "initialized, as described in the "
+ "<a href=\"http://java.sun.com/docs/books/vmspec/html/Concepts.doc.html#16491\">VM specification</a>. "
+ "If the class is linked the PREPARED and VERIFIED bits in the returned status bits "
+ "will be set. If the class is initialized the INITIALIZED bit in the returned "
+ "status bits will be set. If an error occured during initialization then the "
+ "ERROR bit in the returned status bits will be set. "
+ "The returned status bits are undefined for array types and for "
+ "primitive classes (such as java.lang.Integer.TYPE). "
+ (Out
+ (referenceType refType "The reference type ID.")
+ )
+ (Reply
+ (int status "<a href=\"#JDWP_ClassStatus\">Status</a> bits:"
+ "See <a href=\"#JDWP_ClassStatus\">JDWP.ClassStatus</a>")
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command Interfaces=10
+ "Returns the interfaces declared as implemented by this class. "
+ "Interfaces indirectly implemented (extended by the implemented "
+ "interface or implemented by a superclass) are not included."
+ (Out
+ (referenceType refType "The reference type ID.")
+ )
+ (Reply
+ (Repeat interfaces "The number of implemented interfaces"
+ (interfaceType interfaceType "implemented interface.")
+ )
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command ClassObject=11
+ "Returns the class object corresponding to this type. "
+ (Out
+ (referenceType refType "The reference type ID.")
+ )
+ (Reply
+ (classObject classObject "class object.")
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command SourceDebugExtension=12
+ "Returns the value of the SourceDebugExtension attribute. "
+ "Since JDWP version 1.4. Requires canGetSourceDebugExtension capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
+ (Out
+ (referenceType refType "The reference type ID.")
+ )
+ (Reply
+ (string extension "extension attribute")
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error ABSENT_INFORMATION "If the extension is not specified.")
+ (Error NOT_IMPLEMENTED)
+ (Error VM_DEAD)
+ )
+ )
+ (Command SignatureWithGeneric=13
+ "Returns the JNI signature of a reference type along with the "
+ "generic signature if there is one. "
+ "Generic signatures are described in the signature attribute "
+ "section in the "
+ "<a href=\"http://java.sun.com/docs/books/vmspec\">
+ "Java Virtual Machine Specification, 3rd Edition.</a> "
+ "Since JDWP version 1.5."
+ "<p>
+ (Out
+ (referenceType refType "The reference type ID.")
+ )
+ (Reply
+ (string signature
+ "The JNI signature for the reference type.")
+ (string genericSignature
+ "The generic signature for the reference type or an empty "
+ "string if there is none.")
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command FieldsWithGeneric=14
+ "Returns information, including the generic signature if any, "
+ "for each field in a reference type. "
+ "Inherited fields are not included. "
+ "The field list will include any synthetic fields created "
+ "by the compiler. "
+ "Fields are returned in the order they occur in the class file. "
+ "Generic signatures are described in the signature attribute "
+ "section in the "
+ "<a href=\"http://java.sun.com/docs/books/vmspec\">
+ "Java Virtual Machine Specification, 3rd Edition.</a> "
+ "Since JDWP version 1.5."
+ (Out
+ (referenceType refType "The reference type ID.")
+ )
+ (Reply
+ (Repeat declared "Number of declared fields."
+ (Group FieldInfo
+ (field fieldID "Field ID.")
+ (string name "The name of the field.")
+ (string signature "The JNI signature of the field.")
+ (string genericSignature "The generic signature of the "
+ "field, or an empty string if there is none.")
+ (int modBits "The modifier bit flags (also known as access flags) "
+ "which provide additional information on the "
+ "field declaration. Individual flag values are "
+ "defined in the "
+ "<a href=\"http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html\">VM Specification</a>."
+ "In addition, The <code>0xf0000000</code> bit identifies "
+ "the field as synthetic, if the synthetic attribute "
+ "<a href=\"#JDWP_VirtualMachine_Capabilities\">capability</a> is available.")
+ )
+ )
+ )
+ (ErrorSet
+ (Error CLASS_NOT_PREPARED)
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command MethodsWithGeneric=15
+ "Returns information, including the generic signature if any, "
+ "for each method in a reference type. "
+ "Inherited methodss are not included. The list of methods will "
+ "include constructors (identified with the name \"<init>\"), "
+ "the initialization method (identified with the name \"<clinit>\") "
+ "if present, and any synthetic methods created by the compiler. "
+ "Methods are returned in the order they occur in the class file. "
+ "Generic signatures are described in the signature attribute "
+ "section in the "
+ "<a href=\"http://java.sun.com/docs/books/vmspec\">
+ "Java Virtual Machine Specification, 3rd Edition.</a> "
+ "Since JDWP version 1.5."
+ (Out
+ (referenceType refType "The reference type ID.")
+ )
+ (Reply
+ (Repeat declared "Number of declared methods."
+ (Group MethodInfo
+ (method methodID "Method ID.")
+ (string name "The name of the method.")
+ (string signature "The JNI signature of the method.")
+ (string genericSignature "The generic signature of the method, or "
+ "an empty string if there is none.")
+ (int modBits "The modifier bit flags (also known as access flags) "
+ "which provide additional information on the "
+ "method declaration. Individual flag values are "
+ "defined in the "
+ "<a href=\"http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html\">VM Specification</a>."
+ "In addition, The <code>0xf0000000</code> bit identifies "
+ "the method as synthetic, if the synthetic attribute "
+ "<a href=\"#JDWP_VirtualMachine_Capabilities\">capability</a> is available.")
+ )
+ )
+ )
+ (ErrorSet
+ (Error CLASS_NOT_PREPARED)
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command Instances=16
+ "Returns instances of this reference type. "
+ "Only instances that are reachable for the purposes of "
+ "garbage collection are returned. "
+ "<p>Since JDWP version 1.6. Requires canGetInstanceInfo capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
+ (Out
+ (referenceType refType "The reference type ID.")
+ (int maxInstances "Maximum number of instances to return. Must be non-negative. "
+ "If zero, all instances are returned.")
+ )
+ (Reply
+ (Repeat instances "The number of instances that follow."
+ (tagged-object instance "An instance of this reference type.")
+ )
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error ILLEGAL_ARGUMENT "maxInstances is less than zero.")
+ (Error NOT_IMPLEMENTED)
+ (Error VM_DEAD)
+ )
+ )
+ (Command ClassFileVersion=17
+ "Returns the class file major and minor version numbers, as defined in the class "
+ "file format of the Java Virtual Machine specification. "
+ "<p>Since JDWP version 1.6. "
+ (Out
+ (referenceType refType "The class.")
+ )
+ (Reply
+ (int majorVersion "Major version number")
+ (int minorVersion "Minor version number")
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error ABSENT_INFORMATION "The class file version information is "
+ "absent for primitive and array types.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command ConstantPool=18
+ "Return the raw bytes of the constant pool in the format of the "
+ "constant_pool item of the Class File Format in the "
+ "Java Virtual Machine Specification. "
+ "<p>Since JDWP version 1.6. Requires canGetConstantPool capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>.""
+ (Out
+ (referenceType refType "The class.")
+ )
+ (Reply
+ (int count "Total number of constant pool entries plus one. This "
+ "corresponds to the constant_pool_count item of the "
+ "Class File Format in the Java Virtual Machine Specification. ")
+ (Repeat bytes
+ (byte cpbytes "Raw bytes of constant pool")
+ )
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error NOT_IMPLEMENTED "If the target virtual machine does not "
+ "support the retrieval of constant pool information.")
+ (Error ABSENT_INFORMATION "The Constant Pool information is "
+ "absent for primitive and array types.")
+ (Error VM_DEAD)
+ )
+ )
+)
+(CommandSet ClassType=3
+ (Command Superclass=1
+ "Returns the immediate superclass of a class."
+ (Out
+ (classType clazz "The class type ID.")
+ )
+ (Reply
+ (classType superclass
+ "The superclass (null if the class ID for java.lang.Object is specified).")
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "clazz is not the ID of a class.")
+ (Error INVALID_OBJECT "clazz is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command SetValues=2
+ "Sets the value of one or more static fields. "
+ "Each field must be member of the class type "
+ "or one of its superclasses, superinterfaces, or implemented interfaces. "
+ "Access control is not enforced; for example, the values of private "
+ "fields can be set. Final fields cannot be set."
+ "For primitive values, the value's type must match the "
+ "field's type exactly. For object values, there must exist a "
+ "widening reference conversion from the value's type to the
+ "field's type and the field's type must be loaded. "
+ (Out
+ (classType clazz "The class type ID.")
+ (Repeat values "The number of fields to set."
+ (Group FieldValue "A Field/Value pair."
+ (field fieldID "Field to set.")
+ (untagged-value value "Value to put in the field.")
+ )
+ )
+ )
+ (Reply "none"
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "clazz is not the ID of a class.")
+ (Error CLASS_NOT_PREPARED)
+ (Error INVALID_OBJECT "clazz is not a known ID or a value of an "
+ "object field is not a known ID.")
+ (Error INVALID_FIELDID)
+ (Error VM_DEAD)
+ )
+ )
+ (Command InvokeMethod=3
+ "Invokes a static method. "
+ "The method must be member of the class type "
+ "or one of its superclasses, superinterfaces, or implemented interfaces. "
+ "Access control is not enforced; for example, private "
+ "methods can be invoked."
+ "<p>"
+ "The method invocation will occur in the specified thread. "
+ "Method invocation can occur only if the specified thread "
+ "has been suspended by an event. "
+ "Method invocation is not supported "
+ "when the target VM has been suspended by the front-end. "
+ "<p>"
+ "The specified method is invoked with the arguments in the specified "
+ "argument list. "
+ "The method invocation is synchronous; the reply packet is not "
+ "sent until the invoked method returns in the target VM. "
+ "The return value (possibly the void value) is "
+ "included in the reply packet. "
+ "If the invoked method throws an exception, the "
+ "exception object ID is set in the reply packet; otherwise, the "
+ "exception object ID is null. "
+ "<p>"
+ "For primitive arguments, the argument value's type must match the "
+ "argument's type exactly. For object arguments, there must exist a "
+ "widening reference conversion from the argument value's type to the "
+ "argument's type and the argument's type must be loaded. "
+ "<p>"
+ "By default, all threads in the target VM are resumed while "
+ "the method is being invoked if they were previously "
+ "suspended by an event or by command. "
+ "This is done to prevent the deadlocks "
+ "that will occur if any of the threads own monitors "
+ "that will be needed by the invoked method. It is possible that "
+ "breakpoints or other events might occur during the invocation. "
+ "Note, however, that this implicit resume acts exactly like "
+ "the ThreadReference resume command, so if the thread's suspend "
+ "count is greater than 1, it will remain in a suspended state "
+ "during the invocation. By default, when the invocation completes, "
+ "all threads in the target VM are suspended, regardless their state "
+ "before the invocation. "
+ "<p>"
+ "The resumption of other threads during the invoke can be prevented "
+ "by specifying the INVOKE_SINGLE_THREADED "
+ "bit flag in the <code>options</code> field; however, "
+ "there is no protection against or recovery from the deadlocks "
+ "described above, so this option should be used with great caution. "
+ "Only the specified thread will be resumed (as described for all "
+ "threads above). Upon completion of a single threaded invoke, the invoking thread "
+ "will be suspended once again. Note that any threads started during "
+ "the single threaded invocation will not be suspended when the "
+ "invocation completes. "
+ "<p>"
+ "If the target VM is disconnected during the invoke (for example, through "
+ "the VirtualMachine dispose command) the method invocation continues. "
+ (Out
+ (classType clazz "The class type ID.")
+ (threadObject thread "The thread in which to invoke.")
+ (method methodID "The method to invoke.")
+ (Repeat arguments
+ (value arg "The argument value.")
+ )
+ (int options "Invocation <a href=\"#JDWP_InvokeOptions\">options</a>")
+ )
+ (Reply
+ (value returnValue "The returned value.")
+ (tagged-object exception "The thrown exception.")
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "clazz is not the ID of a class.")
+ (Error INVALID_OBJECT "clazz is not a known ID.")
+ (Error INVALID_METHODID "methodID is not the ID of a method.")
+ (Error INVALID_THREAD)
+ (Error THREAD_NOT_SUSPENDED)
+ (Error VM_DEAD)
+ )
+ )
+ (Command NewInstance=4
+ "Creates a new object of this type, invoking the specified "
+ "constructor. The constructor method ID must be a member of "
+ "the class type."
+ "<p>"
+ "Instance creation will occur in the specified thread. "
+ "Instance creation can occur only if the specified thread "
+ "has been suspended by an event. "
+ "Method invocation is not supported "
+ "when the target VM has been suspended by the front-end. "
+ "<p>"
+ "The specified constructor is invoked with the arguments in the specified "
+ "argument list. "
+ "The constructor invocation is synchronous; the reply packet is not "
+ "sent until the invoked method returns in the target VM. "
+ "The return value (possibly the void value) is "
+ "included in the reply packet. "
+ "If the constructor throws an exception, the "
+ "exception object ID is set in the reply packet; otherwise, the "
+ "exception object ID is null. "
+ "<p>"
+ "For primitive arguments, the argument value's type must match the "
+ "argument's type exactly. For object arguments, there must exist a "
+ "widening reference conversion from the argument value's type to the "
+ "argument's type and the argument's type must be loaded. "
+ "<p>"
+ "By default, all threads in the target VM are resumed while "
+ "the method is being invoked if they were previously "
+ "suspended by an event or by command. "
+ "This is done to prevent the deadlocks "
+ "that will occur if any of the threads own monitors "
+ "that will be needed by the invoked method. It is possible that "
+ "breakpoints or other events might occur during the invocation. "
+ "Note, however, that this implicit resume acts exactly like "
+ "the ThreadReference resume command, so if the thread's suspend "
+ "count is greater than 1, it will remain in a suspended state "
+ "during the invocation. By default, when the invocation completes, "
+ "all threads in the target VM are suspended, regardless their state "
+ "before the invocation. "
+ "<p>"
+ "The resumption of other threads during the invoke can be prevented "
+ "by specifying the INVOKE_SINGLE_THREADED "
+ "bit flag in the <code>options</code> field; however, "
+ "there is no protection against or recovery from the deadlocks "
+ "described above, so this option should be used with great caution. "
+ "Only the specified thread will be resumed (as described for all "
+ "threads above). Upon completion of a single threaded invoke, the invoking thread "
+ "will be suspended once again. Note that any threads started during "
+ "the single threaded invocation will not be suspended when the "
+ "invocation completes. "
+ "<p>"
+ "If the target VM is disconnected during the invoke (for example, through "
+ "the VirtualMachine dispose command) the method invocation continues. "
+ (Out
+ (classType clazz "The class type ID.")
+ (threadObject thread "The thread in which to invoke the constructor.")
+ (method methodID "The constructor to invoke.")
+ (Repeat arguments
+ (value arg "The argument value.")
+ )
+ (int options "Constructor invocation <a href=\"#JDWP_InvokeOptions\">options</a>")
+ )
+ (Reply
+ (tagged-object newObject "The newly created object, or null "
+ "if the constructor threw an exception.")
+ (tagged-object exception "The thrown exception, if any; otherwise, null.")
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "clazz is not the ID of a class.")
+ (Error INVALID_OBJECT "clazz is not a known ID or a value of an "
+ "object parameter is not a known ID..")
+ (Error INVALID_METHODID "methodID is not the ID of a method.")
+ (Error INVALID_OBJECT)
+ (Error INVALID_THREAD)
+ (Error THREAD_NOT_SUSPENDED)
+ (Error VM_DEAD)
+ )
+ )
+)
+(CommandSet ArrayType=4
+ (Command NewInstance=1
+ "Creates a new array object of this type with a given length."
+ (Out
+ (arrayType arrType "The array type of the new instance.")
+ (int length "The length of the array.")
+ )
+ (Reply
+ (tagged-object newArray "The newly created array object. ")
+ )
+ (ErrorSet
+ (Error INVALID_ARRAY)
+ (Error INVALID_OBJECT)
+ (Error VM_DEAD)
+ )
+ )
+)
+(CommandSet InterfaceType=5
+)
+(CommandSet Method=6
+ (Command LineTable=1
+ "Returns line number information for the method, if present. "
+ "The line table maps source line numbers to the initial code index "
+ "of the line. The line table "
+ "is ordered by code index (from lowest to highest). The line number "
+ "information is constant unless a new class definition is installed "
+ "using <a href=\"#JDWP_VirtualMachine_RedefineClasses\">RedefineClasses</a>."
+ (Out
+ (referenceType refType "The class.")
+ (method methodID "The method.")
+ )
+ (Reply
+ (long start "Lowest valid code index for the method, >=0, or -1 if the method is native ")
+ (long end "Highest valid code index for the method, >=0, or -1 if the method is native")
+ (Repeat lines "The number of entries in the line table for this method."
+ (Group LineInfo
+ (long lineCodeIndex "Initial code index of the line, "
+ "start <= lineCodeIndex < end")
+ (int lineNumber "Line number.")
+ )
+ )
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error INVALID_METHODID "methodID is not the ID of a method.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command VariableTable=2
+ "Returns variable information for the method. The variable table "
+ "includes arguments and locals declared within the method. For "
+ "instance methods, the \"this\" reference is included in the "
+ "table. Also, synthetic variables may be present. "
+ (Out
+ (referenceType refType "The class.")
+ (method methodID "The method.")
+ )
+ (Reply
+ (int argCnt "The number of words in the frame used by arguments. "
+ "Eight-byte arguments use two words; all others use one. ")
+ (Repeat slots "The number of variables."
+ (Group SlotInfo "Information about the variable."
+ (long codeIndex
+ "First code index at which the variable is visible (unsigned). "
+ "Used in conjunction with <code>length</code>. "
+ "The variable can be get or set only when the current "
+ "<code>codeIndex</code> <= current frame code index < <code>codeIndex + length</code> ")
+ (string name "The variable's name.")
+ (string signature "The variable type's JNI signature.")
+ (int length
+ "Unsigned value used in conjunction with <code>codeIndex</code>. "
+ "The variable can be get or set only when the current "
+ "<code>codeIndex</code> <= current frame code index < <code>code index + length</code> ")
+ (int slot "The local variable's index in its frame")
+ )
+ )
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error INVALID_METHODID "methodID is not the ID of a method.")
+ (Error ABSENT_INFORMATION "there is no variable information for the method.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command Bytecodes=3
+ "Retrieve the method's bytecodes as defined in the JVM Specification."
+ "Requires canGetBytecodes capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
+ (Out
+ (referenceType refType "The class.")
+ (method methodID "The method.")
+ )
+ (Reply
+ (Repeat bytes
+ (byte bytecode "A Java bytecode.")
+ )
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error INVALID_METHODID "methodID is not the ID of a method.")
+ (Error NOT_IMPLEMENTED "If the target virtual machine does not "
+ "support the retrieval of bytecodes.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command IsObsolete=4
+ "Determine if this method is obsolete. A method is obsolete if it has been replaced "
+ "by a non-equivalent method using the "
+ "<a href=\"#JDWP_VirtualMachine_RedefineClasses\">RedefineClasses</a> command. "
+ "The original and redefined methods are considered equivalent if their bytecodes are "
+ "the same except for indices into the constant pool and the referenced constants are "
+ "equal."
+ (Out
+ (referenceType refType "The class.")
+ (method methodID "The method.")
+ )
+ (Reply
+ (boolean isObsolete "true if this method has been replaced"
+ "by a non-equivalent method using"
+ "the RedefineClasses command.")
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error INVALID_METHODID "methodID is not the ID of a method.")
+ (Error NOT_IMPLEMENTED "If the target virtual machine does "
+ "not support this query.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command VariableTableWithGeneric=5
+ "Returns variable information for the method, including "
+ "generic signatures for the variables. The variable table "
+ "includes arguments and locals declared within the method. For "
+ "instance methods, the \"this\" reference is included in the "
+ "table. Also, synthetic variables may be present. "
+ "Generic signatures are described in the signature attribute "
+ "section in the "
+ "<a href=\"http://java.sun.com/docs/books/vmspec\">
+ "Java Virtual Machine Specification, 3rd Edition.</a> "
+ "Since JDWP version 1.5."
+ (Out
+ (referenceType refType "The class.")
+ (method methodID "The method.")
+ )
+ (Reply
+ (int argCnt "The number of words in the frame used by arguments. "
+ "Eight-byte arguments use two words; all others use one. ")
+ (Repeat slots "The number of variables."
+ (Group SlotInfo "Information about the variable."
+ (long codeIndex
+ "First code index at which the variable is visible (unsigned). "
+ "Used in conjunction with <code>length</code>. "
+ "The variable can be get or set only when the current "
+ "<code>codeIndex</code> <= current frame code index < <code>codeIndex + length</code> ")
+ (string name "The variable's name.")
+ (string signature "The variable type's JNI signature.")
+ (string genericSignature "The variable type's generic "
+ "signature or an empty string if there is none.")
+ (int length
+ "Unsigned value used in conjunction with <code>codeIndex</code>. "
+ "The variable can be get or set only when the current "
+ "<code>codeIndex</code> <= current frame code index < <code>code index + length</code> ")
+ (int slot "The local variable's index in its frame")
+ )
+ )
+ )
+ (ErrorSet
+ (Error INVALID_CLASS "refType is not the ID of a reference "
+ "type.")
+ (Error INVALID_OBJECT "refType is not a known ID.")
+ (Error INVALID_METHODID "methodID is not the ID of a method.")
+ (Error ABSENT_INFORMATION "there is no variable information for the method.")
+ (Error VM_DEAD)
+ )
+ )
+
+)
+(CommandSet Field=8
+)
+(CommandSet ObjectReference=9
+ (Command ReferenceType=1
+ "Returns the runtime type of the object. "
+ "The runtime type will be a class or an array. "
+ (Out
+ (object object "The object ID")
+ )
+ (Reply
+ (byte refTypeTag "<a href=\"#JDWP_TypeTag\">Kind</a> "
+ "of following reference type. ")
+ (referenceTypeID typeID "The runtime reference type.")
+ )
+ (ErrorSet
+ (Error INVALID_OBJECT)
+ (Error VM_DEAD)
+ )
+ )
+ (Command GetValues=2
+ "Returns the value of one or more instance fields. "
+ "Each field must be member of the object's type "
+ "or one of its superclasses, superinterfaces, or implemented interfaces. "
+ "Access control is not enforced; for example, the values of private "
+ "fields can be obtained."
+ (Out
+ (object object "The object ID")
+ (Repeat fields "The number of values to get"
+ (Group Field
+ (field fieldID "Field to get.")
+ )
+ )
+ )
+ (Reply
+ (Repeat values "The number of values returned, always equal to 'fields', "
+ "the number of values to get. Field values are ordered "
+ "in the reply in the same order as corresponding fieldIDs "
+ "in the command."
+ (value value "The field value")
+ )
+ )
+ (ErrorSet
+ (Error INVALID_OBJECT)
+ (Error INVALID_FIELDID)
+ (Error VM_DEAD)
+ )
+ )
+ (Command SetValues=3
+ "Sets the value of one or more instance fields. "
+ "Each field must be member of the object's type "
+ "or one of its superclasses, superinterfaces, or implemented interfaces. "
+ "Access control is not enforced; for example, the values of private "
+ "fields can be set. "
+ "For primitive values, the value's type must match the "
+ "field's type exactly. For object values, there must be a "
+ "widening reference conversion from the value's type to the
+ "field's type and the field's type must be loaded. "
+ (Out
+ (object object "The object ID")
+ (Repeat values "The number of fields to set."
+ (Group FieldValue "A Field/Value pair."
+ (field fieldID "Field to set.")
+ (untagged-value value "Value to put in the field.")
+ )
+ )
+ )
+ (Reply "none"
+ )
+ (ErrorSet
+ (Error INVALID_OBJECT)
+ (Error INVALID_FIELDID)
+ (Error VM_DEAD)
+ )
+ )
+ (Command MonitorInfo=5
+ "Returns monitor information for an object. All threads int the VM must "
+ "be suspended."
+ "Requires canGetMonitorInfo capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
+ (Out
+ (object object "The object ID")
+ )
+ (Reply
+ (threadObject owner "The monitor owner, or null if it is not currently owned.")
+ (int entryCount "The number of times the monitor has been entered.")
+ (Repeat waiters "The number of threads that are waiting for the monitor "
+ "0 if there is no current owner"
+ (threadObject thread "A thread waiting for this monitor.")
+ )
+ )
+ (ErrorSet
+ (Error INVALID_OBJECT)
+ (Error NOT_IMPLEMENTED)
+ (Error VM_DEAD)
+ )
+ )
+ (Command InvokeMethod=6
+ "Invokes a instance method. "
+ "The method must be member of the object's type "
+ "or one of its superclasses, superinterfaces, or implemented interfaces. "
+ "Access control is not enforced; for example, private "
+ "methods can be invoked."
+ "<p>"
+ "The method invocation will occur in the specified thread. "
+ "Method invocation can occur only if the specified thread "
+ "has been suspended by an event. "
+ "Method invocation is not supported "
+ "when the target VM has been suspended by the front-end. "
+ "<p>"
+ "The specified method is invoked with the arguments in the specified "
+ "argument list. "
+ "The method invocation is synchronous; the reply packet is not "
+ "sent until the invoked method returns in the target VM. "
+ "The return value (possibly the void value) is "
+ "included in the reply packet. "
+ "If the invoked method throws an exception, the "
+ "exception object ID is set in the reply packet; otherwise, the "
+ "exception object ID is null. "
+ "<p>"
+ "For primitive arguments, the argument value's type must match the "
+ "argument's type exactly. For object arguments, there must be a "
+ "widening reference conversion from the argument value's type to the "
+ "argument's type and the argument's type must be loaded. "
+ "<p>"
+ "By default, all threads in the target VM are resumed while "
+ "the method is being invoked if they were previously "
+ "suspended by an event or by command. "
+ "This is done to prevent the deadlocks "
+ "that will occur if any of the threads own monitors "
+ "that will be needed by the invoked method. It is possible that "
+ "breakpoints or other events might occur during the invocation. "
+ "Note, however, that this implicit resume acts exactly like "
+ "the ThreadReference resume command, so if the thread's suspend "
+ "count is greater than 1, it will remain in a suspended state "
+ "during the invocation. By default, when the invocation completes, "
+ "all threads in the target VM are suspended, regardless their state "
+ "before the invocation. "
+ "<p>"
+ "The resumption of other threads during the invoke can be prevented "
+ "by specifying the INVOKE_SINGLE_THREADED "
+ "bit flag in the <code>options</code> field; however, "
+ "there is no protection against or recovery from the deadlocks "
+ "described above, so this option should be used with great caution. "
+ "Only the specified thread will be resumed (as described for all "
+ "threads above). Upon completion of a single threaded invoke, the invoking thread "
+ "will be suspended once again. Note that any threads started during "
+ "the single threaded invocation will not be suspended when the "
+ "invocation completes. "
+ "<p>"
+ "If the target VM is disconnected during the invoke (for example, through "
+ "the VirtualMachine dispose command) the method invocation continues. "
+ (Out
+ (object object "The object ID")
+ (threadObject thread "The thread in which to invoke.")
+ (classType clazz "The class type.")
+ (method methodID "The method to invoke.")
+ (Repeat arguments "The number of arguments."
+ (value arg "The argument value.")
+ )
+ (int options "Invocation <a href=\"#JDWP_InvokeOptions\">options</a>")
+ )
+ (Reply
+ (value returnValue "The returned value, or null if an exception is thrown.")
+ (tagged-object exception "The thrown exception, if any.")
+ )
+ (ErrorSet
+ (Error INVALID_OBJECT)
+ (Error INVALID_CLASS "clazz is not the ID of a reference "
+ "type.")
+ (Error INVALID_METHODID "methodID is not the ID of a method.")
+ (Error INVALID_THREAD)
+ (Error THREAD_NOT_SUSPENDED)
+ (Error VM_DEAD)
+ )
+ )
+ (Command DisableCollection=7
+ "Prevents garbage collection for the given object. By "
+ "default all objects in back-end replies may be "
+ "collected at any time the target VM is running. A call to "
+ "this command guarantees that the object will not be "
+ "collected. The "
+ "<a href=\"#JDWP_ObjectReference_EnableCollection\">EnableCollection</a> "
+ "command can be used to "
+ "allow collection once again. "
+ "<p>"
+ "Note that while the target VM is suspended, no garbage "
+ "collection will occur because all threads are suspended. "
+ "The typical examination of variables, fields, and arrays "
+ "during the suspension is safe without explicitly disabling "
+ "garbage collection. "
+ "<p>"
+ "This method should be used sparingly, as it alters the "
+ "pattern of garbage collection in the target VM and, "
+ "consequently, may result in application behavior under the "
+ "debugger that differs from its non-debugged behavior. "
+ (Out
+ (object object "The object ID")
+ )
+ (Reply "none"
+ )
+ (ErrorSet
+ (Error INVALID_OBJECT)
+ (Error VM_DEAD)
+ )
+ )
+ (Command EnableCollection=8
+ "Permits garbage collection for this object. By default all "
+ "objects returned by JDWP may become unreachable in the target VM, "
+ "and hence may be garbage collected. A call to this command is "
+ "necessary only if garbage collection was previously disabled with "
+ "the <a href=\"#JDWP_ObjectReference_DisableCollection\">DisableCollection</a> "
+ "command."
+ (Out
+ (object object "The object ID")
+ )
+ (Reply "none"
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ )
+ )
+ (Command IsCollected=9
+ "Determines whether an object has been garbage collected in the "
+ "target VM. "
+ (Out
+ (object object "The object ID")
+ )
+ (Reply
+ (boolean isCollected "true if the object has been collected; false otherwise")
+ )
+ (ErrorSet
+ (Error INVALID_OBJECT)
+ (Error VM_DEAD)
+ )
+ )
+ (Command ReferringObjects=10
+ "Returns objects that directly reference this object. "
+ "Only objects that are reachable for the purposes "
+ "of garbage collection are returned. "
+ "Note that an object can also be referenced in other ways, "
+ "such as from a local variable in a stack frame, or from a JNI global "
+ "reference. Such non-object referrers are not returned by this command. "
+ "<p>Since JDWP version 1.6. Requires canGetInstanceInfo capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
+ (Out
+ (object object "The object ID")
+ (int maxReferrers "Maximum number of referring objects to return. "
+ "Must be non-negative. If zero, all referring "
+ "objects are returned.")
+ )
+ (Reply
+ (Repeat referringObjects "The number of objects that follow."
+ (tagged-object instance "An object that references this object.")
+ )
+ )
+ (ErrorSet
+ (Error INVALID_OBJECT "object is not a known ID.")
+ (Error ILLEGAL_ARGUMENT "maxReferrers is less than zero.")
+ (Error NOT_IMPLEMENTED)
+ (Error VM_DEAD)
+ )
+ )
+)
+
+(CommandSet StringReference=10
+ (Command Value=1
+ "Returns the characters contained in the string. "
+ (Out
+ (object stringObject "The String object ID. ")
+ )
+ (Reply
+ (string stringValue "UTF-8 representation of the string value.")
+ )
+ (ErrorSet
+ (Error INVALID_STRING)
+ (Error INVALID_OBJECT)
+ (Error VM_DEAD)
+ )
+ )
+)
+(CommandSet ThreadReference=11
+ (Command Name=1
+ "Returns the thread name. "
+ (Out
+ (threadObject thread "The thread object ID. ")
+ )
+ (Reply
+ (string threadName "The thread name.")
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "thread is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command Suspend=2
+ "Suspends the thread. "
+ "<p>"
+ "Unlike java.lang.Thread.suspend(), suspends of both "
+ "the virtual machine and individual threads are counted. Before "
+ "a thread will run again, it must be resumed the same number "
+ "of times it has been suspended. "
+ "<p>"
+ "Suspending single threads with command has the same "
+ "dangers java.lang.Thread.suspend(). If the suspended "
+ "thread holds a monitor needed by another running thread, "
+ "deadlock is possible in the target VM (at least until the "
+ "suspended thread is resumed again). "
+ "<p>"
+ "The suspended thread is guaranteed to remain suspended until "
+ "resumed through one of the JDI resume methods mentioned above; "
+ "the application in the target VM cannot resume the suspended thread "
+ "through {@link java.lang.Thread#resume}. "
+ "<p>"
+ "Note that this doesn't change the status of the thread (see the "
+ "<a href=\"#JDWP_ThreadReference_Status\">ThreadStatus</a> command.) "
+ "For example, if it was "
+ "Running, it will still appear running to other threads. "
+ (Out
+ (threadObject thread "The thread object ID. ")
+ )
+ (Reply "none"
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "thread is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command Resume=3
+ "Resumes the execution of a given thread. If this thread was "
+ "not previously suspended by the front-end, "
+ "calling this command has no effect. "
+ "Otherwise, the count of pending suspends on this thread is "
+ "decremented. If it is decremented to 0, the thread will "
+ "continue to execute. "
+ (Out
+ (threadObject thread "The thread object ID. ")
+ )
+ (Reply "none"
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "thread is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command Status=4
+ "Returns the current status of a thread. The thread status "
+ "reply indicates the thread status the last time it was running. "
+ "the suspend status provides information on the thread's "
+ "suspension, if any."
+ (Out
+ (threadObject thread "The thread object ID. ")
+ )
+ (Reply
+ (int threadStatus "One of the thread status codes "
+ "See <a href=\"#JDWP_ThreadStatus\">JDWP.ThreadStatus</a>")
+ (int suspendStatus "One of the suspend status codes "
+ "See <a href=\"#JDWP_SuspendStatus\">JDWP.SuspendStatus</a>")
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "thread is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command ThreadGroup=5
+ "Returns the thread group that contains a given thread. "
+ (Out
+ (threadObject thread "The thread object ID. ")
+ )
+ (Reply
+ (threadGroupObject group "The thread group of this thread. ")
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "thread is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command Frames=6
+ "Returns the current call stack of a suspended thread. "
+ "The sequence of frames starts with "
+ "the currently executing frame, followed by its caller, "
+ "and so on. The thread must be suspended, and the returned "
+ "frameID is valid only while the thread is suspended. "
+ (Out
+ (threadObject thread "The thread object ID. ")
+ (int startFrame "The index of the first frame to retrieve.")
+ (int length
+ "The count of frames to retrieve "
+ "(-1 means all remaining). ")
+ )
+ (Reply
+ (Repeat frames "The number of frames retreived"
+ (Group Frame
+ (frame frameID "The ID of this frame. ")
+ (location location "The current location of this frame")
+ )
+ )
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "thread is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command FrameCount=7
+ "Returns the count of frames on this thread's stack. "
+ "The thread must be suspended, and the returned "
+ "count is valid only while the thread is suspended. "
+ "Returns JDWP.Error.errorThreadNotSuspended if not suspended. "
+ (Out
+ (threadObject thread "The thread object ID. ")
+ )
+ (Reply
+ (int frameCount "The count of frames on this thread's stack. ")
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "thread is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command OwnedMonitors=8
+ "Returns the objects whose monitors have been entered by this thread. "
+ "The thread must be suspended, and the returned information is "
+ "relevant only while the thread is suspended. "
+ "Requires canGetOwnedMonitorInfo capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
+ (Out
+ (threadObject thread "The thread object ID. ")
+ )
+ (Reply
+ (Repeat owned "The number of owned monitors"
+ (tagged-object monitor "An owned monitor")
+ )
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "thread is not a known ID.")
+ (Error NOT_IMPLEMENTED)
+ (Error VM_DEAD)
+ )
+ )
+ (Command CurrentContendedMonitor=9
+ "Returns the object, if any, for which this thread is waiting. The "
+ "thread may be waiting to enter a monitor, or it may be waiting, via "
+ "the java.lang.Object.wait method, for another thread to invoke the "
+ "notify method. "
+ "The thread must be suspended, and the returned information is "
+ "relevant only while the thread is suspended. "
+ "Requires canGetCurrentContendedMonitor capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
+ (Out
+ (threadObject thread "The thread object ID. ")
+ )
+ (Reply
+ (tagged-object monitor "The contended monitor, or null if "
+ "there is no current contended monitor. ")
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "thread is not a known ID.")
+ (Error NOT_IMPLEMENTED)
+ (Error VM_DEAD)
+ )
+ )
+ (Command Stop=10
+ "Stops the thread with an asynchronous exception, as if done by "
+ "java.lang.Thread.stop "
+ (Out
+ (threadObject thread "The thread object ID. ")
+ (object throwable "Asynchronous exception. This object must "
+ "be an instance of java.lang.Throwable or a subclass")
+ )
+ (Reply "none"
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "If thread is not a known ID or the asynchronous "
+ "exception has been garbage collected.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command Interrupt=11
+ "Interrupt the thread, as if done by java.lang.Thread.interrupt "
+ (Out
+ (threadObject thread "The thread object ID. ")
+ )
+ (Reply "none"
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "thread is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command SuspendCount=12
+ "Get the suspend count for this thread. The suspend count is the "
+ "number of times the thread has been suspended through the "
+ "thread-level or VM-level suspend commands without a corresponding resume "
+ (Out
+ (threadObject thread "The thread object ID. ")
+ )
+ (Reply
+ (int suspendCount "The number of outstanding suspends of this thread. ")
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "thread is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command OwnedMonitorsStackDepthInfo=13
+ "Returns monitor objects owned by the thread, along with stack depth at which "
+ "the monitor was acquired. Returns stack depth of -1 if "
+ "the implementation cannot determine the stack depth "
+ "(e.g., for monitors acquired by JNI MonitorEnter)."
+ "The thread must be suspended, and the returned information is "
+ "relevant only while the thread is suspended. "
+ "Requires canGetMonitorFrameInfo capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>. "
+ "<p>Since JDWP version 1.6. "
+
+ (Out
+ (threadObject thread "The thread object ID. ")
+ )
+ (Reply
+ (Repeat owned "The number of owned monitors"
+ (Group monitor
+ (tagged-object monitor "An owned monitor")
+ (int stack_depth "Stack depth location where monitor was acquired")
+ )
+ )
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "thread is not a known ID.")
+ (Error NOT_IMPLEMENTED)
+ (Error VM_DEAD)
+ )
+ )
+ (Command ForceEarlyReturn=14
+ "Force a method to return before it reaches a return "
+ "statement. "
+ "<p>"
+ "The method which will return early is referred to as the "
+ "called method. The called method is the current method (as "
+ "defined by the Frames section in the Java Virtual Machine "
+ "Specification) for the specified thread at the time this command "
+ "is received. "
+ "<p>"
+ "The specified thread must be suspended. "
+ "The return occurs when execution of Java programming "
+ "language code is resumed on this thread. Between sending this "
+ "command and resumption of thread execution, the "
+ "state of the stack is undefined. "
+ "<p>"
+ "No further instructions are executed in the called "
+ "method. Specifically, finally blocks are not executed. Note: "
+ "this can cause inconsistent states in the application. "
+ "<p>"
+ "A lock acquired by calling the called method (if it is a "
+ "synchronized method) and locks acquired by entering "
+ "synchronized blocks within the called method are "
+ "released. Note: this does not apply to JNI locks or "
+ "java.util.concurrent.locks locks. "
+ "<p>"
+ "Events, such as MethodExit, are generated as they would be in "
+ "a normal return. "
+ "<p>"
+ "The called method must be a non-native Java programming "
+ "language method. Forcing return on a thread with only one "
+ "frame on the stack causes the thread to exit when resumed. "
+ "<p>"
+ "For void methods, the value must be a void value. "
+ "For methods that return primitive values, the value's type must "
+ "match the return type exactly. For object values, there must be a "
+ "widening reference conversion from the value's type to the "
+ "return type type and the return type must be loaded. "
+ "<p>"
+ "Since JDWP version 1.6. Requires canForceEarlyReturn capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
+ (Out
+ (threadObject thread "The thread object ID. ")
+ (value value "The value to return. ")
+ )
+ (Reply "none"
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "Thread or value is not a known ID.")
+ (Error THREAD_NOT_SUSPENDED)
+ (Error THREAD_NOT_ALIVE)
+ (Error OPAQUE_FRAME "Attempted to return early from "
+ "a frame corresponding to a native "
+ "method. Or the implementation is "
+ "unable to provide this functionality "
+ "on this frame.")
+ (Error NO_MORE_FRAMES)
+ (Error NOT_IMPLEMENTED)
+ (Error TYPE_MISMATCH "Value is not an appropriate type for the "
+ "return value of the method.")
+ (Error VM_DEAD)
+ )
+ )
+
+)
+(CommandSet ThreadGroupReference=12
+ (Command Name=1
+ "Returns the thread group name. "
+ (Out
+ (threadGroupObject group "The thread group object ID. ")
+ )
+ (Reply
+ (string groupName "The thread group's name.")
+ )
+ (ErrorSet
+ (Error INVALID_THREAD_GROUP)
+ (Error INVALID_OBJECT "group is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command Parent=2
+ "Returns the thread group, if any, which contains a given thread group. "
+ (Out
+ (threadGroupObject group "The thread group object ID. ")
+ )
+ (Reply
+ (threadGroupObject parentGroup "The parent thread group object, or "
+ "null if the given thread group "
+ "is a top-level thread group")
+ )
+ (ErrorSet
+ (Error INVALID_THREAD_GROUP)
+ (Error INVALID_OBJECT "group is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+ (Command Children=3
+ "Returns the live threads and active thread groups directly contained "
+ "in this thread group. Threads and thread groups in child "
+ "thread groups are not included. "
+ "A thread is alive if it has been started and has not yet been stopped. "
+ "See <a href=../../../api/java/lang/ThreadGroup.html>java.lang.ThreadGroup </a>
+ "for information about active ThreadGroups.
+ (Out
+ (threadGroupObject group "The thread group object ID. ")
+ )
+ (Reply
+ (Repeat childThreads "The number of live child threads. "
+ (threadObject childThread "A direct child thread ID. ")
+ )
+ (Repeat childGroups "The number of active child thread groups. "
+ (threadGroupObject childGroup "A direct child thread group ID. ")
+ )
+ )
+ (ErrorSet
+ (Error INVALID_THREAD_GROUP)
+ (Error INVALID_OBJECT "group is not a known ID.")
+ (Error VM_DEAD)
+ )
+ )
+)
+(CommandSet ArrayReference=13
+ (Command Length=1
+ "Returns the number of components in a given array. "
+ (Out
+ (arrayObject arrayObject "The array object ID. ")
+ )
+ (Reply
+ (int arrayLength "The length of the array.")
+ )
+ (ErrorSet
+ (Error INVALID_OBJECT "arrayObject is not a known ID.")
+ (Error INVALID_ARRAY)
+ (Error VM_DEAD)
+ )
+ )
+ (Command GetValues=2
+ "Returns a range of array components. The specified range must "
+ "be within the bounds of the array. "
+ (Out
+ (arrayObject arrayObject "The array object ID. ")
+ (int firstIndex "The first index to retrieve.")
+ (int length "The number of components to retrieve.")
+ )
+ (Reply
+ (typed-sequence values "The retrieved values. If the values "
+ "are objects, they are tagged-values; "
+ "otherwise, they are untagged-values")
+ )
+ (ErrorSet
+ (Error INVALID_LENGTH "If index is beyond the end of this array.")
+ (Error INVALID_OBJECT "arrayObject is not a known ID.")
+ (Error INVALID_ARRAY)
+ (Error VM_DEAD)
+ )
+ )
+ (Command SetValues=3
+ "Sets a range of array components. The specified range must "
+ "be within the bounds of the array. "
+ "For primitive values, each value's type must match the "
+ "array component type exactly. For object values, there must be a "
+ "widening reference conversion from the value's type to the
+ "array component type and the array component type must be loaded. "
+ (Out
+ (arrayObject arrayObject "The array object ID. ")
+ (int firstIndex "The first index to set.")
+ (Repeat values "The number of values to set. "
+ (untagged-value value "A value to set. ")
+ )
+ )
+ (Reply "none"
+ )
+ (ErrorSet
+ (Error INVALID_LENGTH "If index is beyond the end of this array.")
+ (Error INVALID_OBJECT "arrayObject is not a known ID.")
+ (Error INVALID_ARRAY)
+ (Error VM_DEAD)
+ )
+ )
+)
+(CommandSet ClassLoaderReference=14
+ (Command VisibleClasses=1
+ "Returns a list of all classes which this class loader has "
+ "been requested to load. This class loader is considered to be "
+ "an <i>initiating</i> class loader for each class in the returned "
+ "list. The list contains each "
+ "reference type defined by this loader and any types for which "
+ "loading was delegated by this class loader to another class loader. "
+ "<p>"
+ "The visible class list has useful properties with respect to "
+ "the type namespace. A particular type name will occur at most "
+ "once in the list. Each field or variable declared with that "
+ "type name in a class defined by "
+ "this class loader must be resolved to that single type. "
+ "<p>"
+ "No ordering of the returned list is guaranteed. "
+ (Out
+ (classLoaderObject classLoaderObject "The class loader object ID. ")
+ )
+ (Reply
+ (Repeat classes "The number of visible classes. "
+ (Group ClassInfo
+ (byte refTypeTag "<a href=\"#JDWP_TypeTag\">Kind</a> "
+ "of following reference type. ")
+ (referenceTypeID typeID
+ "A class visible to this class loader.")
+ )
+ )
+ )
+ (ErrorSet
+ (Error INVALID_OBJECT)
+ (Error INVALID_CLASS_LOADER)
+ (Error VM_DEAD)
+ )
+ )
+)
+(CommandSet EventRequest=15
+ (Command Set=1
+ "Set an event request. When the event described by this request "
+ "occurs, an <a href=\"#JDWP_Event\">event</a> is sent from the "
+ "target VM. If an event occurs that has not been requested then it is not sent "
+ "from the target VM. The two exceptions to this are the VM Start Event and "
+ "the VM Death Event which are automatically generated events - see "
+ "<a href=\"#JDWP_Event_Composite\">Composite Command</a> for further details."
+ (Out
+ (byte eventKind "Event kind to request. "
+ "See <a href=\"#JDWP_EventKind\">JDWP.EventKind</a> "
+ "for a complete list of events that can be requested. "
+ )
+ (byte suspendPolicy
+ "What threads are suspended when this event occurs? "
+ "Note that the order of events and command replies "
+ "accurately reflects the order in which threads are "
+ "suspended and resumed. For example, if a "
+ "<a href=\"#JDWP_VirtualMachine_Resume\">VM-wide resume</a> "
+ "is processed before an event occurs which suspends the "
+ "VM, the reply to the resume command will be written to "
+ "the transport before the suspending event.")
+ (Repeat modifiers "Constraints used to control the number "
+ "of generated events."
+ "Modifiers specify additional tests that "
+ "an event must satisfy before it is placed "
+ "in the event queue. Events are filtered by "
+ "applying each modifier to an event in the "
+ "order they are specified in this collection "
+ "Only events that satisfy all modifiers "
+ "are reported. A value of 0 means there are no "
+ "modifiers in the request."
+ "<p>"
+ "Filtering can improve "
+ "debugger performance dramatically by
+ "reducing the "
+ "amount of event traffic sent from the "
+ "target VM to the debugger VM. "
+ (Select Modifier
+ (byte modKind "Modifier kind")
+ (Alt Count=1
+ "Limit the requested event to be reported at most once after a "
+ "given number of occurrences. The event is not reported "
+ "the first <code>count - 1</code> times this filter is reached. "
+ "To request a one-off event, call this method with a count of 1. "
+ "<p>"
+ "Once the count reaches 0, any subsequent filters in this request "
+ "are applied. If none of those filters cause the event to be "
+ "suppressed, the event is reported. Otherwise, the event is not "
+ "reported. In either case subsequent events are never reported for "
+ "this request. "
+ "This modifier can be used with any event kind."
+
+ (int count "Count before event. One for one-off.")
+ )
+ (Alt Conditional=2 "Conditional on expression"
+ (int exprID "For the future")
+ )
+ (Alt ThreadOnly=3
+ "Restricts reported events to "
+ "those in the given thread. "
+ "This modifier can be used with any event kind "
+ "except for class unload. "
+
+ (threadObject thread "Required thread")
+ )
+ (Alt ClassOnly=4
+ "For class prepare events, restricts the events "
+ "generated by this request to be the "
+ "preparation of the given reference type and any subtypes. "
+ "For monitor wait and waited events, restricts the events "
+ "generated by this request to those whose monitor object "
+ "is of the given reference type or any of its subtypes. "
+ "For other events, restricts the events generated "
+ "by this request to those "
+ "whose location is in the given reference type or any of its subtypes. "
+ "An event will be generated for any location in a reference type that can "
+ "be safely cast to the given reference type. "
+ "This modifier can be used with any event kind except "
+ "class unload, thread start, and thread end. "
+
+ (referenceType clazz "Required class")
+ )
+ (Alt ClassMatch=5
+ "Restricts reported events to those for classes whose name "
+ "matches the given restricted regular expression. "
+ "For class prepare events, the prepared class name "
+ "is matched. For class unload events, the "
+ "unloaded class name is matched. For monitor wait "
+ "and waited events, the name of the class of the "
+ "monitor object is matched. For other events, "
+ "the class name of the event's location is matched. "
+ "This modifier can be used with any event kind except "
+ "thread start and thread end. "
+
+ (string classPattern "Required class pattern. "
+ "Matches are limited to exact matches of the "
+ "given class pattern and matches of patterns that "
+ "begin or end with '*'; for example, "
+ "\"*.Foo\" or \"java.*\". "
+ )
+
+ )
+ (Alt ClassExclude=6
+ "Restricts reported events to those for classes whose name "
+ "does not match the given restricted regular expression. "
+ "For class prepare events, the prepared class name "
+ "is matched. For class unload events, the "
+ "unloaded class name is matched. For monitor wait and "
+ "waited events, the name of the class of the monitor "
+ "object is matched. For other events, "
+ "the class name of the event's location is matched. "
+ "This modifier can be used with any event kind except "
+ "thread start and thread end. "
+
+ (string classPattern "Disallowed class pattern. "
+ "Matches are limited to exact matches of the "
+ "given class pattern and matches of patterns that "
+ "begin or end with '*'; for example, "
+ "\"*.Foo\" or \"java.*\". "
+ )
+ )
+ (Alt LocationOnly=7
+ "Restricts reported events to those that occur at "
+ "the given location. "
+ "This modifier can be used with "
+ "breakpoint, field access, field modification, "
+ "step, and exception event kinds. "
+
+ (location loc "Required location")
+ )
+ (Alt ExceptionOnly=8
+ "Restricts reported exceptions by their class and "
+ "whether they are caught or uncaught. "
+ "This modifier can be used with "
+ "exception event kinds only. "
+
+ (referenceType exceptionOrNull
+ "Exception to report. Null (0) means report "
+ "exceptions of all types. "
+ "A non-null type restricts the reported exception "
+ "events to exceptions of the given type or "
+ "any of its subtypes. "
+ )
+ (boolean caught "Report caught exceptions")
+ (boolean uncaught "Report uncaught exceptions. "
+ "Note that it "
+ "is not always possible to determine whether an "
+ "exception is caught or uncaught at the time it is "
+ "thrown. See the exception event catch location under "
+ "<a href=\"#JDWP_Event_Composite\">composite events</a> "
+ "for more information. "
+ )
+
+ )
+ (Alt FieldOnly=9
+ "Restricts reported events to those that occur for "
+ "a given field. "
+ "This modifier can be used with "
+ "field access and field modification event kinds only. "
+
+ (referenceType declaring "Type in which field is declared.")
+ (field fieldID "Required field")
+ )
+ (Alt Step=10
+ "Restricts reported step events "
+ "to those which satisfy "
+ "depth and size constraints. "
+ "This modifier can be used with "
+ "step event kinds only. "
+
+ (threadObject thread "Thread in which to step")
+ (int size "size of each step. "
+ "See <a href=\"#JDWP_StepSize\">JDWP.StepSize</a>")
+ (int depth "relative call stack limit. "
+ "See <a href=\"#JDWP_StepDepth\">JDWP.StepDepth</a>")
+ )
+ (Alt InstanceOnly=11
+ "Restricts reported events to those whose "
+ "active 'this' object is the given object. "
+ "Match value is the null object for static methods. "
+ "This modifier can be used with any event kind "
+ "except class prepare, class unload, thread start, "
+ "and thread end. Introduced in JDWP version 1.4."
+
+ (object instance "Required 'this' object")
+ )
+ (Alt SourceNameMatch=12
+ "Restricts reported class prepare events to those "
+ "for reference types which have a source name "
+ "which matches the given restricted regular expression. "
+ "The source names are determined by the reference type's "
+ "<a href=\"#JDWP_ReferenceType_SourceDebugExtension\"> "
+ "SourceDebugExtension</a>. "
+ "This modifier can only be used with class prepare "
+ "events. "
+ "Since JDWP version 1.6. Requires the canUseSourceNameFilters "
+ "capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
+
+ (string sourceNamePattern "Required source name pattern. "
+ "Matches are limited to exact matches of the "
+ "given pattern and matches of patterns that "
+ "begin or end with '*'; for example, "
+ "\"*.Foo\" or \"java.*\". "
+ )
+ )
+
+ )
+ )
+ )
+ (Reply
+ (int requestID "ID of created request")
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_CLASS)
+ (Error INVALID_STRING)
+ (Error INVALID_OBJECT)
+ (Error INVALID_COUNT)
+ (Error INVALID_FIELDID)
+ (Error INVALID_METHODID)
+ (Error INVALID_LOCATION)
+ (Error INVALID_EVENT_TYPE)
+ (Error NOT_IMPLEMENTED)
+ (Error VM_DEAD)
+ )
+ )
+ (Command Clear=2
+ "Clear an event request. See <a href=\"#JDWP_EventKind\">JDWP.EventKind</a> "
+ "for a complete list of events that can be cleared. Only the event request matching "
+ "the specified event kind and requestID is cleared. If there isn't a matching event "
+ "request the command is a no-op and does not result in an error. Automatically "
+ "generated events do not have a corresponding event request and may not be cleared "
+ "using this command."
+ (Out
+ (byte eventKind "Event kind to clear")
+ (int requestID "ID of request to clear")
+ )
+ (Reply "none"
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ (Error INVALID_EVENT_TYPE)
+ )
+ )
+ (Command ClearAllBreakpoints=3
+ "Removes all set breakpoints, a no-op if there are no breakpoints set."
+ (Out "none"
+ )
+ (Reply "none"
+ )
+ (ErrorSet
+ (Error VM_DEAD)
+ )
+ )
+)
+(CommandSet StackFrame=16
+ (Command GetValues=1
+ "Returns the value of one or more local variables in a "
+ "given frame. Each variable must be visible at the frame's code index. "
+ "Even if local variable information is not available, values can "
+ "be retrieved if the front-end is able to "
+ "determine the correct local variable index. (Typically, this "
+ "index can be determined for method arguments from the method "
+ "signature without access to the local variable table information.) "
+ (Out
+ (threadObject thread "The frame's thread. ")
+ (frame frame "The frame ID. ")
+ (Repeat slots "The number of values to get. "
+ (Group SlotInfo
+ (int slot "The local variable's index in the frame. ")
+ (byte sigbyte "A <a href=\"#JDWP_Tag\">tag</a> "
+ "identifying the type of the variable ")
+ )
+ )
+ )
+ (Reply
+ (Repeat values "The number of values retrieved, always equal to slots, "
+ "the number of values to get."
+ (value slotValue "The value of the local variable. ")
+ )
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT)
+ (Error INVALID_FRAMEID)
+ (Error INVALID_SLOT)
+ (Error VM_DEAD)
+ )
+ )
+ (Command SetValues=2
+ "Sets the value of one or more local variables. "
+ "Each variable must be visible at the current frame code index. "
+ "For primitive values, the value's type must match the "
+ "variable's type exactly. For object values, there must be a "
+ "widening reference conversion from the value's type to the
+ "variable's type and the variable's type must be loaded. "
+ "<p>"
+ "Even if local variable information is not available, values can "
+ "be set, if the front-end is able to "
+ "determine the correct local variable index. (Typically, this
+ "index can be determined for method arguments from the method "
+ "signature without access to the local variable table information.) "
+ (Out
+ (threadObject thread "The frame's thread. ")
+ (frame frame "The frame ID. ")
+ (Repeat slotValues "The number of values to set. "
+ (Group SlotInfo
+ (int slot "The slot ID. ")
+ (value slotValue "The value to set. ")
+ )
+ )
+ )
+ (Reply "none"
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT)
+ (Error INVALID_FRAMEID)
+ (Error VM_DEAD)
+ )
+ )
+ (Command ThisObject=3
+ "Returns the value of the 'this' reference for this frame. "
+ "If the frame's method is static or native, the reply "
+ "will contain the null object reference. "
+ (Out
+ (threadObject thread "The frame's thread. ")
+ (frame frame "The frame ID. ")
+ )
+ (Reply
+ (tagged-object objectThis "The 'this' object for this frame. ")
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT)
+ (Error INVALID_FRAMEID)
+ (Error VM_DEAD)
+ )
+ )
+ (Command PopFrames=4
+ "Pop the top-most stack frames of the thread stack, up to, and including 'frame'. "
+ "The thread must be suspended to perform this command. "
+ "The top-most stack frames are discarded and the stack frame previous to 'frame' "
+ "becomes the current frame. The operand stack is restored -- the argument values "
+ "are added back and if the invoke was not <code>invokestatic</code>, "
+ "<code>objectref</code> is added back as well. The Java virtual machine "
+ "program counter is restored to the opcode of the invoke instruction."
+ "<p>"
+ "Since JDWP version 1.4. Requires canPopFrames capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
+ (Out
+ (threadObject thread "The thread object ID. ")
+ (frame frame "The frame ID. ")
+ )
+ (Reply "none"
+ )
+ (ErrorSet
+ (Error INVALID_THREAD)
+ (Error INVALID_OBJECT "thread is not a known ID.")
+ (Error INVALID_FRAMEID)
+ (Error THREAD_NOT_SUSPENDED)
+ (Error NO_MORE_FRAMES)
+ (Error INVALID_FRAMEID)
+ (Error NOT_IMPLEMENTED)
+ (Error VM_DEAD)
+ )
+ )
+)
+(CommandSet ClassObjectReference=17
+ (Command ReflectedType = 1
+ "Returns the reference type reflected by this class object."
+ (Out
+ (classObject classObject "The class object. ")
+ )
+ (Reply
+ (byte refTypeTag "<a href=\"#JDWP_TypeTag\">Kind</a> "
+ "of following reference type. ")
+ (referenceTypeID typeID "reflected reference type")
+ )
+ (ErrorSet
+ (Error INVALID_OBJECT)
+ (Error VM_DEAD)
+ )
+ )
+)
+(CommandSet Event=64
+ (Command Composite=100
+ "Several events may occur at a given time in the target VM. "
+ "For example, there may be more than one breakpoint request "
+ "for a given location "
+ "or you might single step to the same location as a "
+ "breakpoint request. These events are delivered "
+ "together as a composite event. For uniformity, a "
+ "composite event is always used "
+ "to deliver events, even if there is only one event to report. "
+ "<P>"
+ "The events that are grouped in a composite event are restricted in the "
+ "following ways: "
+ "<P>"
+ "<UL>"
+ "<LI>Only with other thread start events for the same thread:"
+ " <UL>"
+ " <LI>Thread Start Event"
+ " </UL>"
+ "<LI>Only with other thread death events for the same thread:"
+ " <UL>"
+ " <LI>Thread Death Event"
+ " </UL>"
+ "<LI>Only with other class prepare events for the same class:"
+ " <UL>"
+ " <LI>Class Prepare Event"
+ " </UL>"
+ "<LI>Only with other class unload events for the same class:"
+ " <UL>"
+ " <LI>Class Unload Event"
+ " </UL>"
+ "<LI>Only with other access watchpoint events for the same field access:"
+ " <UL>"
+ " <LI>Access Watchpoint Event"
+ " </UL>"
+ "<LI>Only with other modification watchpoint events for the same field "
+ "modification:"
+ " <UL>"
+ " <LI>Modification Watchpoint Event"
+ " </UL>"
+ "<LI>Only with other Monitor contended enter events for the same monitor object: "
+ " <UL>"
+ " <LI>Monitor Contended Enter Event"
+ " </UL>"
+ "<LI>Only with other Monitor contended entered events for the same monitor object: "
+ " <UL>"
+ " <LI>Monitor Contended Entered Event"
+ " </UL>"
+ "<LI>Only with other Monitor wait events for the same monitor object: "
+ " <UL>"
+ " <LI>Monitor Wait Event"
+ " </UL>"
+ "<LI>Only with other Monitor waited events for the same monitor object: "
+ " <UL>"
+ " <LI>Monitor Waited Event"
+ " </UL>"
+ "<LI>Only with other ExceptionEvents for the same exception occurrance:"
+ " <UL>"
+ " <LI>ExceptionEvent"
+ " </UL>"
+ "<LI>Only with other members of this group, at the same location "
+ "and in the same thread: "
+ " <UL>"
+ " <LI>Breakpoint Event"
+ " <LI>Step Event"
+ " <LI>Method Entry Event"
+ " <LI>Method Exit Event"
+ " </UL>"
+ "</UL>"
+ "<P>"
+ "The VM Start Event and VM Death Event are automatically generated events. "
+ "This means they do not need to be requested using the "
+ "<a href=\"#JDWP_EventRequest_Set\">EventRequest.Set</a> command. "
+ "The VM Start event signals the completion of VM initialization. The VM Death "
+ "event signals the termination of the VM."
+ "If there is a debugger connected at the time when an automatically generated "
+ "event occurs it is sent from the target VM. Automatically generated events may "
+ "also be requested using the EventRequest.Set command and thus multiple events "
+ "of the same event kind will be sent from the target VM when an event occurs."
+ "Automatically generated events are sent with the requestID field "
+ "in the Event Data set to 0. The value of the suspendPolicy field in the "
+ "Event Data depends on the event. For the automatically generated VM Start "
+ "Event the value of suspendPolicy is not defined and is therefore implementation "
+ "or configuration specific. In the Sun implementation, for example, the "
+ "suspendPolicy is specified as an option to the JDWP agent at launch-time."
+ "The automatically generated VM Death Event will have the suspendPolicy set to "
+ "NONE."
+
+ (Event "Generated event"
+ (byte suspendPolicy
+ "Which threads where suspended by this composite event?")
+ (Repeat events "Events in set."
+ (Select Events
+ (byte eventKind "Event kind selector")
+ (Alt VMStart=JDWP.EventKind.VM_START
+ "Notification of initialization of a target VM. This event is "
+ "received before the main thread is started and before any "
+ "application code has been executed. Before this event occurs "
+ "a significant amount of system code has executed and a number "
+ "of system classes have been loaded. "
+ "This event is always generated by the target VM, even "
+ "if not explicitly requested."
+
+ (int requestID
+ "Request that generated event (or 0 if this "
+ "event is automatically generated.")
+ (threadObject thread "Initial thread")
+ )
+ (Alt SingleStep=JDWP.EventKind.SINGLE_STEP
+ "Notification of step completion in the target VM. The step event "
+ "is generated before the code at its location is executed. "
+
+ (int requestID "Request that generated event")
+ (threadObject thread "Stepped thread")
+ (location location "Location stepped to")
+ )
+ (Alt Breakpoint=JDWP.EventKind.BREAKPOINT
+ "Notification of a breakpoint in the target VM. The breakpoint event "
+ "is generated before the code at its location is executed. "
+
+ (int requestID "Request that generated event")
+ (threadObject thread "Thread which hit breakpoint")
+ (location location "Location hit")
+ )
+ (Alt MethodEntry=JDWP.EventKind.METHOD_ENTRY
+ "Notification of a method invocation in the target VM. This event "
+ "is generated before any code in the invoked method has executed. "
+ "Method entry events are generated for both native and non-native "
+ "methods. "
+ "<P>"
+ "In some VMs method entry events can occur for a particular thread "
+ "before its thread start event occurs if methods are called "
+ "as part of the thread's initialization. "
+
+ (int requestID "Request that generated event")
+ (threadObject thread "Thread which entered method")
+ (location location "The initial executable location in the method.")
+ )
+ (Alt MethodExit=JDWP.EventKind.METHOD_EXIT
+ "Notification of a method return in the target VM. This event "
+ "is generated after all code in the method has executed, but the "
+ "location of this event is the last executed location in the method. "
+ "Method exit events are generated for both native and non-native "
+ "methods. Method exit events are not generated if the method terminates "
+ "with a thrown exception. "
+
+ (int requestID "Request that generated event")
+ (threadObject thread "Thread which exited method")
+ (location location "Location of exit")
+ )
+ (Alt MethodExitWithReturnValue=JDWP.EventKind.METHOD_EXIT_WITH_RETURN_VALUE
+ "Notification of a method return in the target VM. This event "
+ "is generated after all code in the method has executed, but the "
+ "location of this event is the last executed location in the method. "
+ "Method exit events are generated for both native and non-native "
+ "methods. Method exit events are not generated if the method terminates "
+ "with a thrown exception. <p>Since JDWP version 1.6. "
+
+ (int requestID "Request that generated event")
+ (threadObject thread "Thread which exited method")
+ (location location "Location of exit")
+ (value value "Value that will be returned by the method")
+ )
+ (Alt MonitorContendedEnter=JDWP.EventKind.MONITOR_CONTENDED_ENTER
+ "Notification that a thread in the target VM is attempting "
+ "to enter a monitor that is already acquired by another thread. "
+ "<p>Since JDWP version 1.6. "
+
+ (int requestID
+ "Request that generated event")
+ (threadObject thread "Thread which is trying to enter the monitor")
+ (tagged-object object "Monitor object reference")
+ (location location "Location of contended monitor enter")
+ )
+ (Alt MonitorContendedEntered=JDWP.EventKind.MONITOR_CONTENDED_ENTERED
+ "Notification of a thread in the target VM is entering a monitor "
+ "after waiting for it to be released by another thread. "
+ "<p>Since JDWP version 1.6. "
+
+ (int requestID
+ "Request that generated event")
+ (threadObject thread "Thread which entered monitor")
+ (tagged-object object "Monitor object reference")
+ (location location "Location of contended monitor enter")
+ )
+ (Alt MonitorWait=JDWP.EventKind.MONITOR_WAIT
+ "Notification of a thread about to wait on a monitor object. "
+ "<p>Since JDWP version 1.6. "
+
+ (int requestID
+ "Request that generated event")
+ (threadObject thread "Thread which is about to wait")
+ (tagged-object object "Monitor object reference")
+ (location location "Location at which the wait will occur")
+ (long timeout "Thread wait time in milliseconds")
+ )
+ (Alt MonitorWaited=JDWP.EventKind.MONITOR_WAITED
+ "Notification that a thread in the target VM has finished waiting on "
+ "a monitor object. "
+ "<p>Since JDWP version 1.6. "
+
+ (int requestID
+ "Request that generated event")
+ (threadObject thread "Thread which waited")
+ (tagged-object object "Monitor object reference")
+ (location location "Location at which the wait occured")
+ (boolean timed_out "True if timed out")
+ )
+ (Alt Exception=JDWP.EventKind.EXCEPTION
+ "Notification of an exception in the target VM. "
+ "If the exception is thrown from a non-native method, "
+ "the exception event is generated at the location where the "
+ "exception is thrown. "
+ "If the exception is thrown from a native method, the exception event "
+ "is generated at the first non-native location reached after the exception "
+ "is thrown. "
+
+ (int requestID "Request that generated event")
+ (threadObject thread "Thread with exception")
+ (location location "Location of exception throw "
+ "(or first non-native location after throw if thrown from a native method)")
+ (tagged-object exception "Thrown exception")
+ (location catchLocation
+ "Location of catch, or 0 if not caught. An exception "
+ "is considered to be caught if, at the point of the throw, the "
+ "current location is dynamically enclosed in a try statement that "
+ "handles the exception. (See the JVM specification for details). "
+ "If there is such a try statement, the catch location is the "
+ "first location in the appropriate catch clause. "
+ "<p>"
+ "If there are native methods in the call stack at the time of the "
+ "exception, there are important restrictions to note about the "
+ "returned catch location. In such cases, "
+ "it is not possible to predict whether an exception will be handled "
+ "by some native method on the call stack. "
+ "Thus, it is possible that exceptions considered uncaught "
+ "here will, in fact, be handled by a native method and not cause "
+ "termination of the target VM. Furthermore, it cannot be assumed that the "
+ "catch location returned here will ever be reached by the throwing "
+ "thread. If there is "
+ "a native frame between the current location and the catch location, "
+ "the exception might be handled and cleared in that native method "
+ "instead. "
+ "<p>"
+ "Note that compilers can generate try-catch blocks in some cases "
+ "where they are not explicit in the source code; for example, "
+ "the code generated for <code>synchronized</code> and "
+ "<code>finally</code> blocks can contain implicit try-catch blocks. "
+ "If such an implicitly generated try-catch is "
+ "present on the call stack at the time of the throw, the exception "
+ "will be considered caught even though it appears to be uncaught from "
+ "examination of the source code. "
+ )
+ )
+ (Alt ThreadStart=JDWP.EventKind.THREAD_START
+ "Notification of a new running thread in the target VM. "
+ "The new thread can be the result of a call to "
+ "<code>java.lang.Thread.start</code> or the result of "
+ "attaching a new thread to the VM though JNI. The "
+ "notification is generated by the new thread some time before "
+ "its execution starts. "
+ "Because of this timing, it is possible to receive other events "
+ "for the thread before this event is received. (Notably, "
+ "Method Entry Events and Method Exit Events might occur "
+ "during thread initialization. "
+ "It is also possible for the "
+ "<a href=\"#JDWP_VirtualMachine_AllThreads\">VirtualMachine AllThreads</a> "
+ "command to return "
+ "a thread before its thread start event is received. "
+ "<p>"
+ "Note that this event gives no information "
+ "about the creation of the thread object which may have happened "
+ "much earlier, depending on the VM being debugged. "
+
+ (int requestID "Request that generated event")
+ (threadObject thread "Started thread")
+ )
+ (Alt ThreadDeath=JDWP.EventKind.THREAD_DEATH
+ "Notification of a completed thread in the target VM. The "
+ "notification is generated by the dying thread before it terminates. "
+ "Because of this timing, it is possible "
+ "for {@link VirtualMachine#allThreads} to return this thread "
+ "after this event is received. "
+ "<p>"
+ "Note that this event gives no information "
+ "about the lifetime of the thread object. It may or may not be collected "
+ "soon depending on what references exist in the target VM. "
+
+ (int requestID "Request that generated event")
+ (threadObject thread "Ending thread")
+ )
+ (Alt ClassPrepare=JDWP.EventKind.CLASS_PREPARE
+ "Notification of a class prepare in the target VM. See the JVM "
+ "specification for a definition of class preparation. Class prepare "
+ "events are not generated for primtiive classes (for example, "
+ "java.lang.Integer.TYPE). "
+
+ (int requestID "Request that generated event")
+ (threadObject thread "Preparing thread. "
+ "In rare cases, this event may occur in a debugger system "
+ "thread within the target VM. Debugger threads take precautions "
+ "to prevent these events, but they cannot be avoided under some "
+ "conditions, especially for some subclasses of "
+ "java.lang.Error. "
+ "If the event was generated by a debugger system thread, the "
+ "value returned by this method is null, and if the requested "
+ "<a href=\"#JDWP_SuspendPolicy\">suspend policy</a> "
+ "for the event was EVENT_THREAD "
+ "all threads will be suspended instead, and the "
+ "composite event's suspend policy will reflect this change. "
+ "<p>"
+ "Note that the discussion above does not apply to system threads "
+ "created by the target VM during its normal (non-debug) operation. "
+ )
+ (byte refTypeTag "Kind of reference type. "
+ "See <a href=\"#JDWP_TypeTag\">JDWP.TypeTag</a>")
+ (referenceTypeID typeID "Type being prepared")
+ (string signature "Type signature")
+ (int status "Status of type. "
+ "See <a href=\"#JDWP_ClassStatus\">JDWP.ClassStatus</a>")
+ )
+ (Alt ClassUnload=JDWP.EventKind.CLASS_UNLOAD
+ "Notification of a class unload in the target VM. "
+ "<p>"
+ "There are severe constraints on the debugger back-end during "
+ "garbage collection, so unload information is greatly limited. "
+
+ (int requestID "Request that generated event")
+ (string signature "Type signature")
+ )
+ (Alt FieldAccess=JDWP.EventKind.FIELD_ACCESS
+ "Notification of a field access in the target VM. "
+ "Field modifications "
+ "are not considered field accesses. "
+ "Requires canWatchFieldAccess capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
+
+ (int requestID "Request that generated event")
+ (threadObject thread "Accessing thread")
+ (location location "Location of access")
+ (byte refTypeTag "Kind of reference type. "
+ "See <a href=\"#JDWP_TypeTag\">JDWP.TypeTag</a>")
+ (referenceTypeID typeID "Type of field")
+ (field fieldID "Field being accessed")
+ (tagged-object object
+ "Object being accessed (null=0 for statics")
+ )
+ (Alt FieldModification=JDWP.EventKind.FIELD_MODIFICATION
+ "Notification of a field modification in the target VM. "
+ "Requires canWatchFieldModification capability - see "
+ "<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>."
+
+ (int requestID "Request that generated event")
+ (threadObject thread "Modifying thread")
+ (location location "Location of modify")
+ (byte refTypeTag "Kind of reference type. "
+ "See <a href=\"#JDWP_TypeTag\">JDWP.TypeTag</a>")
+ (referenceTypeID typeID "Type of field")
+ (field fieldID "Field being modified")
+ (tagged-object object
+ "Object being modified (null=0 for statics")
+ (value valueToBe "Value to be assigned")
+ )
+ (Alt VMDeath=JDWP.EventKind.VM_DEATH
+ (int requestID
+ "Request that generated event")
+ )
+ )
+ )
+ )
+ )
+)
+(ConstantSet Error
+ (Constant NONE =0 "No error has occurred.")
+ (Constant INVALID_THREAD =10 "Passed thread is null, is not a valid thread or has exited.")
+ (Constant INVALID_THREAD_GROUP =11 "Thread group invalid.")
+ (Constant INVALID_PRIORITY =12 "Invalid priority.")
+ (Constant THREAD_NOT_SUSPENDED =13 "If the specified thread has not been "
+ "suspended by an event.")
+ (Constant THREAD_SUSPENDED =14 "Thread already suspended.")
+ (Constant THREAD_NOT_ALIVE =15 "Thread has not been started or is now dead.")
+
+ (Constant INVALID_OBJECT =20 "If this reference type has been unloaded "
+ "and garbage collected.")
+ (Constant INVALID_CLASS =21 "Invalid class.")
+ (Constant CLASS_NOT_PREPARED =22 "Class has been loaded but not yet prepared.")
+ (Constant INVALID_METHODID =23 "Invalid method.")
+ (Constant INVALID_LOCATION =24 "Invalid location.")
+ (Constant INVALID_FIELDID =25 "Invalid field.")
+ (Constant INVALID_FRAMEID =30 "Invalid jframeID.")
+ (Constant NO_MORE_FRAMES =31 "There are no more Java or JNI frames on the "
+ "call stack.")
+ (Constant OPAQUE_FRAME =32 "Information about the frame is not available.")
+ (Constant NOT_CURRENT_FRAME =33 "Operation can only be performed on current frame.")
+ (Constant TYPE_MISMATCH =34 "The variable is not an appropriate type for "
+ "the function used.")
+ (Constant INVALID_SLOT =35 "Invalid slot.")
+ (Constant DUPLICATE =40 "Item already set.")
+ (Constant NOT_FOUND =41 "Desired element not found.")
+ (Constant INVALID_MONITOR =50 "Invalid monitor.")
+ (Constant NOT_MONITOR_OWNER =51 "This thread doesn't own the monitor.")
+ (Constant INTERRUPT =52 "The call has been interrupted before completion.")
+ (Constant INVALID_CLASS_FORMAT =60 "The virtual machine attempted to read a class "
+ "file and determined that the file is malformed "
+ "or otherwise cannot be interpreted as a class file.")
+ (Constant CIRCULAR_CLASS_DEFINITION
+ =61 "A circularity has been detected while "
+ "initializing a class.")
+ (Constant FAILS_VERIFICATION =62 "The verifier detected that a class file, "
+ "though well formed, contained some sort of "
+ "internal inconsistency or security problem.")
+ (Constant ADD_METHOD_NOT_IMPLEMENTED
+ =63 "Adding methods has not been implemented.")
+ (Constant SCHEMA_CHANGE_NOT_IMPLEMENTED
+ =64 "Schema change has not been implemented.")
+ (Constant INVALID_TYPESTATE =65 "The state of the thread has been modified, "
+ "and is now inconsistent.")
+ (Constant HIERARCHY_CHANGE_NOT_IMPLEMENTED
+ =66 "A direct superclass is different for the new class "
+ "version, or the set of directly implemented "
+ "interfaces is different "
+ "and canUnrestrictedlyRedefineClasses is false.")
+ (Constant DELETE_METHOD_NOT_IMPLEMENTED
+ =67 "The new class version does not declare a method "
+ "declared in the old class version "
+ "and canUnrestrictedlyRedefineClasses is false.")
+ (Constant UNSUPPORTED_VERSION =68 "A class file has a version number not supported "
+ "by this VM.")
+ (Constant NAMES_DONT_MATCH =69 "The class name defined in the new class file is "
+ "different from the name in the old class object.")
+ (Constant CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED
+ =70 "The new class version has different modifiers and "
+ "and canUnrestrictedlyRedefineClasses is false.")
+ (Constant METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED
+ =71 "A method in the new class version has "
+ "different modifiers "
+ "than its counterpart in the old class version and "
+ "and canUnrestrictedlyRedefineClasses is false.")
+ (Constant NOT_IMPLEMENTED =99 "The functionality is not implemented in "
+ "this virtual machine.")
+ (Constant NULL_POINTER =100 "Invalid pointer.")
+ (Constant ABSENT_INFORMATION =101 "Desired information is not available.")
+ (Constant INVALID_EVENT_TYPE =102 "The specified event type id is not recognized.")
+ (Constant ILLEGAL_ARGUMENT =103 "Illegal argument.")
+ (Constant OUT_OF_MEMORY =110 "The function needed to allocate memory and "
+ "no more memory was available for allocation.")
+ (Constant ACCESS_DENIED =111 "Debugging has not been enabled in this "
+ "virtual machine. JVMTI cannot be used.")
+ (Constant VM_DEAD =112 "The virtual machine is not running.")
+ (Constant INTERNAL =113 "An unexpected internal error has occurred.")
+ (Constant UNATTACHED_THREAD =115 "The thread being used to call this function "
+ "is not attached to the virtual machine. "
+ "Calls must be made from attached threads.")
+ (Constant INVALID_TAG =500 "object type id or class tag.")
+ (Constant ALREADY_INVOKING =502 "Previous invoke not complete.")
+ (Constant INVALID_INDEX =503 "Index is invalid.")
+ (Constant INVALID_LENGTH =504 "The length is invalid.")
+ (Constant INVALID_STRING =506 "The string is invalid.")
+ (Constant INVALID_CLASS_LOADER =507 "The class loader is invalid.")
+ (Constant INVALID_ARRAY =508 "The array is invalid.")
+ (Constant TRANSPORT_LOAD =509 "Unable to load the transport.")
+ (Constant TRANSPORT_INIT =510 "Unable to initialize the transport.")
+ (Constant NATIVE_METHOD =511 )
+ (Constant INVALID_COUNT =512 "The count is invalid.")
+)
+(ConstantSet EventKind
+ (Constant SINGLE_STEP =1 )
+ (Constant BREAKPOINT =2 )
+ (Constant FRAME_POP =3 )
+ (Constant EXCEPTION =4 )
+ (Constant USER_DEFINED =5 )
+ (Constant THREAD_START =6 )
+ (Constant THREAD_DEATH =7 )
+ (Constant THREAD_END =7 "obsolete - was used in jvmdi")
+ (Constant CLASS_PREPARE =8 )
+ (Constant CLASS_UNLOAD =9 )
+ (Constant CLASS_LOAD =10 )
+ (Constant FIELD_ACCESS =20 )
+ (Constant FIELD_MODIFICATION =21 )
+ (Constant EXCEPTION_CATCH =30 )
+ (Constant METHOD_ENTRY =40 )
+ (Constant METHOD_EXIT =41 )
+ (Constant METHOD_EXIT_WITH_RETURN_VALUE =42 )
+ (Constant MONITOR_CONTENDED_ENTER =43 )
+ (Constant MONITOR_CONTENDED_ENTERED =44 )
+ (Constant MONITOR_WAIT =45 )
+ (Constant MONITOR_WAITED =46 )
+ (Constant VM_START =90 )
+ (Constant VM_INIT =90 "obsolete - was used in jvmdi")
+ (Constant VM_DEATH =99 )
+ (Constant VM_DISCONNECTED =100 "Never sent across JDWP")
+)
+
+(ConstantSet ThreadStatus
+ (Constant ZOMBIE =0 )
+ (Constant RUNNING =1 )
+ (Constant SLEEPING =2 )
+ (Constant MONITOR =3 )
+ (Constant WAIT =4 )
+)
+
+(ConstantSet SuspendStatus
+ (Constant SUSPEND_STATUS_SUSPENDED = 0x1 )
+)
+(ConstantSet ClassStatus
+ (Constant VERIFIED =1 )
+ (Constant PREPARED =2 )
+ (Constant INITIALIZED =4 )
+ (Constant ERROR =8 )
+)
+(ConstantSet TypeTag
+ (Constant CLASS=1 "ReferenceType is a class. ")
+ (Constant INTERFACE=2 "ReferenceType is an interface. ")
+ (Constant ARRAY=3 "ReferenceType is an array. ")
+)
+(ConstantSet Tag
+ (Constant ARRAY = '[' "'[' - an array object (objectID size). ")
+ (Constant BYTE = 'B' "'B' - a byte value (1 byte).")
+ (Constant CHAR = 'C' "'C' - a character value (2 bytes).")
+ (Constant OBJECT = 'L' "'L' - an object (objectID size).")
+ (Constant FLOAT = 'F' "'F' - a float value (4 bytes).")
+ (Constant DOUBLE = 'D' "'D' - a double value (8 bytes).")
+ (Constant INT = 'I' "'I' - an int value (4 bytes).")
+ (Constant LONG = 'J' "'J' - a long value (8 bytes).")
+ (Constant SHORT = 'S' "'S' - a short value (2 bytes).")
+ (Constant VOID = 'V' "'V' - a void value (no bytes).")
+ (Constant BOOLEAN = 'Z' "'Z' - a boolean value (1 byte).")
+ (Constant STRING = 's' "'s' - a String object (objectID size). ")
+ (Constant THREAD = 't' "'t' - a Thread object (objectID size). ")
+ (Constant THREAD_GROUP = 'g'
+ "'g' - a ThreadGroup object (objectID size). ")
+ (Constant CLASS_LOADER = 'l'
+ "'l' - a ClassLoader object (objectID size). ")
+ (Constant CLASS_OBJECT = 'c'
+ "'c' - a class object object (objectID size). ")
+)
+
+(ConstantSet StepDepth
+ (Constant INTO = 0
+ "Step into any method calls that occur before the end of the step. ")
+ (Constant OVER = 1
+ "Step over any method calls that occur before the end of the step. ")
+ (Constant OUT = 2
+ "Step out of the current method. ")
+)
+
+(ConstantSet StepSize
+ (Constant MIN = 0
+ "Step by the minimum possible amount (often a bytecode instruction). ")
+ (Constant LINE = 1
+ "Step to the next source line unless there is no line number information in which case a MIN step is done instead.")
+)
+
+(ConstantSet SuspendPolicy
+ (Constant NONE = 0
+ "Suspend no threads when this event is encountered. ")
+ (Constant EVENT_THREAD = 1
+ "Suspend the event thread when this event is encountered. ")
+ (Constant ALL = 2
+ "Suspend all threads when this event is encountered. ")
+)
+
+(ConstantSet InvokeOptions
+ "The invoke options are a combination of zero or more of the following bit flags:"
+ (Constant INVOKE_SINGLE_THREADED = 0x01
+ "otherwise, all threads started. ")
+ (Constant INVOKE_NONVIRTUAL = 0x02
+ "otherwise, normal virtual invoke (instance methods only)")
+)
+
+
diff --git a/jdk/make/jpda/transport/Makefile b/jdk/make/jpda/transport/Makefile
new file mode 100644
index 0000000..8e507ea
--- /dev/null
+++ b/jdk/make/jpda/transport/Makefile
@@ -0,0 +1,53 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all of the transports
+#
+
+BUILDDIR = ../..
+PRODUCT = jpda
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = socket
+ifeq ($(PLATFORM), windows)
+SUBDIRS += shmem
+endif # PLATFORM
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+#
+# Copy jdwpTransport.h into the SDK include directory
+#
+FILES_h = $(INCLUDEDIR)/jdwpTransport.h
+
+$(INCLUDEDIR)/%.h: $(SHARE_SRC)/javavm/export/%.h
+ $(install-file)
+
+all:: $(FILES_h)
+
+clean clobber::
+ $(RM) $(FILES_h)
+
diff --git a/jdk/make/jpda/transport/shmem/Makefile b/jdk/make/jpda/transport/shmem/Makefile
new file mode 100644
index 0000000..ad5ff4b
--- /dev/null
+++ b/jdk/make/jpda/transport/shmem/Makefile
@@ -0,0 +1,84 @@
+#
+# Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JDI shared memory transport implementation
+#
+
+BUILDDIR = ../../..
+LIBRARY = dt_shmem
+PRODUCT = jbug
+
+# Mapfile only used on Solaris/Linux
+FILES_m = mapfile-vers
+
+include $(BUILDDIR)/common/Defs.gmk
+
+# 64-bit windows does not build at -W3 if warnings are fatal
+ifeq ($(PLATFORM), windows)
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ COMPILER_WARNINGS_FATAL=false
+ endif
+endif
+
+FILES_c = \
+ SharedMemoryTransport.c \
+ SharedMemoryConnection.c \
+ shmemBack.c \
+ shmemBase.c \
+ shmem_md.c
+
+OTHER_INCLUDES = -I$(INCLUDEDIR) -I$(PLATFORM_INCLUDE) \
+ -I$(SHARE_SRC)/transport/export \
+ -I$(SHARE_SRC)/transport/shmem \
+ -I$(SHARE_SRC)/back/export \
+ -I$(PLATFORM_SRC)/transport/shmem
+
+#
+# Stuff to feed into javah.
+#
+FILES_export = \
+ com/sun/tools/jdi/SharedMemoryConnection.java \
+ com/sun/tools/jdi/SharedMemoryTransportService.java
+
+# Use the mapfile-vers (See the mapfile located with this Makefile)
+ifdef FILES_m
+ include $(BUILDDIR)/common/Mapfile-vers.gmk
+endif
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Library.gmk
+
+# Add -export options to explicitly spell exported symbols
+ifeq ($(PLATFORM), windows)
+ OTHER_LCF += -export:jdwpTransport_OnLoad
+endif
+
+#
+# vpaths for the transport (should not be seen by others)
+#
+vpath %.c $(SHARE_SRC)/native/com/sun/tools/jdi:$(SHARE_SRC)/transport/shmem:$(PLATFORM_SRC)/transport/shmem
diff --git a/jdk/make/jpda/transport/shmem/mapfile-vers b/jdk/make/jpda/transport/shmem/mapfile-vers
new file mode 100644
index 0000000..d97b900
--- /dev/null
+++ b/jdk/make/jpda/transport/shmem/mapfile-vers
@@ -0,0 +1,33 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ jdwpTransport_OnLoad;
+ local:
+ *;
+};
diff --git a/jdk/make/jpda/transport/socket/Makefile b/jdk/make/jpda/transport/socket/Makefile
new file mode 100644
index 0000000..07c5642
--- /dev/null
+++ b/jdk/make/jpda/transport/socket/Makefile
@@ -0,0 +1,91 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the JDI back-end implementation
+#
+
+BUILDDIR = ../../..
+LIBRARY = dt_socket
+PRODUCT = jbug
+
+# Mapfile only used on Solaris/Linux
+FILES_m = mapfile-vers
+
+include $(BUILDDIR)/common/Defs.gmk
+
+ifeq ($(PLATFORM), windows)
+ # Files built here do not compile with warning level 3 if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+endif
+
+ifeq ($(PLATFORM), linux)
+ OTHER_LDLIBS += -lnsl $(LIBSOCKET) -lpthread
+endif
+
+ifeq ($(PLATFORM), solaris)
+ OTHER_LDLIBS += -lnsl $(LIBSOCKET)
+endif
+
+ifeq ($(PLATFORM), windows)
+ OTHER_LDLIBS += ws2_32.lib
+endif
+
+OTHER_INCLUDES = -I$(INCLUDEDIR) -I$(PLATFORM_INCLUDE) \
+ -I$(SHARE_SRC)/transport/export \
+ -I$(SHARE_SRC)/transport/socket \
+ -I$(PLATFORM_SRC)/transport/socket \
+ -I$(SHARE_SRC)/back/export \
+ -I$(PLATFORM_SRC)/back
+
+#
+# Files to compile.
+#
+FILES_c = \
+ socketTransport.c \
+ socket_md.c
+
+# Use the mapfile-vers (See the mapfile located with this Makefile)
+ifdef FILES_m
+ include $(BUILDDIR)/common/Mapfile-vers.gmk
+endif
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Library.gmk
+
+# We don't want to link against -ljava
+JAVALIB=
+
+# Add -export options to explicitly spell exported symbols
+ifeq ($(PLATFORM), windows)
+ OTHER_LCF += -export:jdwpTransport_OnLoad
+endif
+
+#
+# Add to ambient vpath so we pick up the library files
+#
+vpath %.c $(SHARE_SRC)/transport/socket:$(PLATFORM_SRC)/transport/socket
diff --git a/jdk/make/jpda/transport/socket/mapfile-vers b/jdk/make/jpda/transport/socket/mapfile-vers
new file mode 100644
index 0000000..d97b900
--- /dev/null
+++ b/jdk/make/jpda/transport/socket/mapfile-vers
@@ -0,0 +1,33 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ jdwpTransport_OnLoad;
+ local:
+ *;
+};
diff --git a/jdk/make/jpda/tty/Makefile b/jdk/make/jpda/tty/Makefile
new file mode 100644
index 0000000..6503763
--- /dev/null
+++ b/jdk/make/jpda/tty/Makefile
@@ -0,0 +1,51 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the tty (aka JDB) on JDI
+#
+
+BUILDDIR = ../..
+PACKAGE = com.sun.tools.example.debug.tty
+PRODUCT = jpda
+PROGRAM = jdb
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Java Files to compile are found automatically.
+#
+AUTO_FILES_JAVA_DIRS = com/sun/tools/example/debug/tty
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jdk
+RESOURCE_BUNDLES_JAVA = com/sun/tools/example/debug/tty/TTYResources.java
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/jprt.config b/jdk/make/jprt.config
new file mode 100644
index 0000000..0d18b27
--- /dev/null
+++ b/jdk/make/jprt.config
@@ -0,0 +1,363 @@
+#!echo "This is not a shell script"
+#############################################################################
+#
+# Copyright 2006-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+#############################################################################
+#
+# JPRT shell configuration for building.
+#
+# Input environment variables:
+# ALT_BOOTDIR
+# ALT_SLASH_JAVA
+# ALT_JDK_IMPORT_PATH
+# OPENJDK
+# Windows Only:
+# PATH
+# VS71COMNTOOLS
+# PROCESSOR_IDENTIFIER
+# ROOTDIR
+#
+# Output variable settings:
+# make Full path to GNU make
+# compiler_path Path to compiler bin directory
+# compiler_name Unique name of this compiler
+#
+# Output environment variables:
+# PATH
+# ALT_COMPILER_PATH
+# OPENJDK only:
+# ALT_CLOSED_JDK_IMPORT_PATH
+# ALT_JDK_DEVTOOLS_DIR
+# Windows Only:
+# ALT_MSDEVTOOLS_PATH
+# ALT_DEVTOOLS_PATH (To avoid the C:/UTILS default)
+# LIB
+# INCLUDE
+#
+# After JDK6, most settings will be found via ALT_SLASH_JAVA or
+# by way of other system environment variables. If this was JDK5
+# or an older JDK, you might need to export more ALT_* variables.
+#
+# On Windows AMD64, if MSSDK is not set, assumes Platform SDK is installed at:
+# C:/Program Files/Microsoft Platform SDK
+#
+#############################################################################
+
+#############################################################################
+# Error
+error() # message
+{
+ echo "ERROR: $1"
+ exit 6
+}
+# Directory must exist
+dirMustExist() # dir name
+{
+ if [ ! -d "$1" ] ; then
+ error "Directory for $2 does not exist: $1"
+ fi
+}
+# File must exist
+fileMustExist() # dir name
+{
+ if [ ! -f "$1" ] ; then
+ error "File for $2 does not exist: $1"
+ fi
+}
+#############################################################################
+
+# Should be set by JPRT as the 3 basic inputs
+bootdir="${ALT_BOOTDIR}"
+slashjava="${ALT_SLASH_JAVA}"
+jdk_import="${ALT_JDK_IMPORT_PATH}"
+
+# The /java/devtools items
+jdk_devtools="${slashjava}/devtools"
+share="${jdk_devtools}/share"
+
+# Needed for langtools, maybe other parts of the build
+ANT_HOME="${share}/ant/latest"
+export ANT_HOME
+FINDBUGS_HOME="${share}/findbugs/latest"
+export FINDBUGS_HOME
+
+# The 3 bin directories in common to all platforms
+sharebin="${share}/bin"
+antbin="${ANT_HOME}/bin"
+findbugsbin="${FINDBUGS_HOME}/bin"
+
+# Check input
+dirMustExist "${bootdir}" ALT_BOOTDIR
+dirMustExist "${slashjava}" ALT_SLASH_JAVA
+dirMustExist "${jdk_import}" ALT_JDK_IMPORT_PATH
+dirMustExist "${ANT_HOME}" ANT_HOME
+dirMustExist "${FINDBUGS_HOME}" FINDBUGS_HOME
+
+# Use the JDK import for now (FIXME: use the binary plugs?)
+if [ "${OPENJDK}" = true ] ; then
+ ALT_CLOSED_JDK_IMPORT_PATH="${jdk_import}"
+ export ALT_CLOSED_JDK_IMPORT_PATH
+fi
+
+# Uses 'uname -s', but only expect SunOS or Linux, assume Windows otherwise.
+osname=`uname -s`
+if [ "${osname}" = SunOS ] ; then
+
+ # SOLARIS: Sparc or X86
+ osarch=`uname -p`
+ if [ "${osarch}" = sparc ] ; then
+ solaris_arch=sparc
+ else
+ solaris_arch=i386
+ fi
+
+ # Get the SS11 compilers into path (make sure it matches ALT setting)
+ compiler_path=${jdk_devtools}/${solaris_arch}/SUNWspro/SS11/bin
+ compiler_name=SS11
+ ALT_COMPILER_PATH="${compiler_path}"
+ export ALT_COMPILER_PATH
+ dirMustExist "${compiler_path}" ALT_COMPILER_PATH
+ path4sdk=${compiler_path}:${sharebin}:${antbin}:${findbugsbin}
+
+ # Add basic solaris system paths
+ path4sdk=${path4sdk}:/usr/ccs/bin:/usr/ccs/lib:/usr/bin:/bin:/usr/sfw/bin
+
+ # Get the previous JDK to be used to bootstrap the build
+ path4sdk=${bootdir}/bin:${path4sdk}
+
+ # Find GNU make
+ make=/usr/sfw/bin/gmake
+ if [ ! -f ${make} ] ; then
+ make=/opt/sfw/bin/gmake
+ if [ ! -f ${make} ] ; then
+ make=${jdk_devtools}/${solaris_arch}/bin/gnumake
+ fi
+ fi
+ fileMustExist "${make}" make
+
+ # File creation mask
+ umask 002
+
+elif [ "${osname}" = Linux ] ; then
+
+ # LINUX: X86, AMD64
+ osarch=`uname -m`
+ if [ "${osarch}" = i686 ] ; then
+ linux_arch=i586
+ elif [ "${osarch}" = x86_64 ] ; then
+ linux_arch=amd64
+ fi
+
+ # Get the compilers into path (make sure it matches ALT setting)
+ compiler_path=/usr/bin
+ compiler_name=usr_bin
+ ALT_COMPILER_PATH="${compiler_path}"
+ export ALT_COMPILER_PATH
+ dirMustExist "${compiler_path}" ALT_COMPILER_PATH
+ path4sdk=${compiler_path}:${sharebin}:${antbin}:${findbugsbin}
+
+ # Add basic paths
+ path4sdk=${path4sdk}:/usr/bin:/bin:/usr/sbin:/sbin
+
+ # Get the previous JDK to be used to bootstrap the build
+ path4sdk=${bootdir}/bin:${path4sdk}
+
+ # Find GNU make
+ make=/usr/bin/make
+ fileMustExist "${make}" make
+
+ umask 002
+
+ # Linux platform may be old, use motif files from the devtools area
+ if [ "${OPENJDK}" = true ] ; then
+ ALT_JDK_DEVTOOLS_DIR="${jdk_devtools}"
+ export ALT_JDK_DEVTOOLS_DIR
+ fi
+
+
+else
+
+ # Windows: Differs on CYGWIN vs. MKS, and the compiler available.
+ # Also, blanks in pathnames gives GNU make headaches, so anything placed
+ # in any ALT_* variable should be the short windows dosname.
+
+ # WINDOWS: Install and use MKS or CYGWIN (should have already been done)
+ # Assumption here is that you are in a shell window via MKS or cygwin.
+ # MKS install should have defined the environment variable ROOTDIR.
+ # We also need to figure out which one we have: X86, AMD64
+ if [ "`echo ${PROCESSOR_IDENTIFIER} | fgrep AMD64`" != "" ] ; then
+ windows_arch=amd64
+ else
+ windows_arch=i586
+ fi
+
+ # We need to determine if we are running a CYGWIN shell or an MKS shell
+ # (if uname isn't available, then it will be unix_toolset=unknown)
+ unix_toolset=unknown
+ if [ "`uname -a | fgrep Cygwin`" = "" -a -d "${ROOTDIR}" ] ; then
+ # We kind of assume ROOTDIR is where MKS is and it's ok
+ unix_toolset=MKS
+ mkshome=`dosname -s "${ROOTDIR}"`
+ # Utility to convert to short pathnames without spaces
+ dosname="${mkshome}/mksnt/dosname -s"
+ # Most unix utilities are in the mksnt directory of ROOTDIR
+ unixcommand_path="${mkshome}/mksnt"
+ path4sdk="${sharebin};${antbin};${findbugsbin};${unixcommand_path}"
+ dirMustExist "${unixcommand_path}" ALT_UNIXCOMMAND_PATH
+ devtools_path="${jdk_devtools}/win32/bin"
+ path4sdk="${devtools_path};${path4sdk}"
+ # Normally this need not be set, but on Windows it's default is C:/UTILS
+ ALT_DEVTOOLS_PATH="${devtools_path}"
+ export ALT_DEVTOOLS_PATH
+ dirMustExist "${devtools_path}" ALT_DEVTOOLS_PATH
+ # Find GNU make
+ make="${devtools_path}/gnumake.exe"
+ fileMustExist "${make}" make
+ elif [ "`uname -a | fgrep Cygwin`" != "" -a -f /bin/cygpath ] ; then
+ # For CYGWIN, uname will have "Cygwin" in it, and /bin/cygpath should exist
+ unix_toolset=CYGWIN
+ # Utility to convert to short pathnames without spaces
+ dosname="/usr/bin/cygpath -a -m -s"
+ # Most unix utilities are in the /usr/bin
+ unixcommand_path="/usr/bin"
+ path4sdk="${sharebin};${antbin};${findbugsbin};${unixcommand_path}"
+ dirMustExist "${unixcommand_path}" ALT_UNIXCOMMAND_PATH
+ # Find GNU make
+ make="${unixcommand_path}/make.exe"
+ fileMustExist "${make}" make
+ else
+ echo "WARNING: Cannot figure out if this is MKS or CYGWIN"
+ fi
+
+ # WINDOWS: Compiler setup (nasty part)
+ # NOTE: You can use vcvars32.bat to set PATH, LIB, and INCLUDE.
+ # NOTE: CYGWIN has a link.exe too, make sure the compilers are first
+ if [ "${windows_arch}" = i586 ] ; then
+ # 32bit Windows compiler settings
+ # VisualStudio .NET 2003 VC++ 7.1 (VS71COMNTOOLS should be defined)
+ vs_root=`${dosname} "${VS71COMNTOOLS}/../.."`
+ # Fill in PATH, LIB, and INCLUDE (unset all others to make sure)
+ msdev_root="${vs_root}/Common7/Tools"
+ msdevtools_path="${msdev_root}/bin"
+ vc7_root="${vs_root}/Vc7"
+ compiler_path="${vc7_root}/bin"
+ compiler_name=VS2003
+ platform_sdk="${vc7_root}/PlatformSDK"
+ # LIB and INCLUDE must use ; as a separator
+ include4sdk="${vc7_root}/atlmfc/include"
+ include4sdk="${include4sdk};${vc7_root}/include"
+ include4sdk="${include4sdk};${platform_sdk}/include/prerelease"
+ include4sdk="${include4sdk};${platform_sdk}/include"
+ include4sdk="${include4sdk};${vs_root}/SDK/v1.1/include"
+ lib4sdk="${vc7_root}/atlmfc/lib"
+ lib4sdk="${lib4sdk};${vc7_root}/lib"
+ lib4sdk="${lib4sdk};${platform_sdk}/lib/prerelease"
+ lib4sdk="${lib4sdk};${platform_sdk}/lib"
+ lib4sdk="${lib4sdk};${vs_root}/SDK/v1.1/lib"
+ # Search path and DLL locating path
+ # WARNING: CYGWIN has a link.exe too, make sure compilers are first
+ path4sdk="${vs_root}/Common7/Tools/bin;${path4sdk}"
+ path4sdk="${vs_root}/SDK/v1.1/bin;${path4sdk}"
+ path4sdk="${vs_root}/Common7/Tools;${path4sdk}"
+ path4sdk="${vs_root}/Common7/Tools/bin/prerelease;${path4sdk}"
+ path4sdk="${vs_root}/Common7/IDE;${path4sdk}"
+ path4sdk="${compiler_path};${path4sdk}"
+ elif [ "${windows_arch}" = amd64 ] ; then
+ # AMD64 64bit Windows compiler settings
+ if [ "${MSSDK}" != "" ] ; then
+ platform_sdk="${MSSDK}"
+ else
+ platform_sdk=`${dosname} "C:/Program Files/Microsoft Platform SDK/"`
+ fi
+ compiler_path="${platform_sdk}/Bin/win64/x86/AMD64"
+ compiler_name=VS2005_PSDK
+ msdevtools_path="${platform_sdk}/Bin"
+ # LIB and INCLUDE must use ; as a separator
+ include4sdk="${platform_sdk}/Include"
+ include4sdk="${include4sdk};${platform_sdk}/Include/crt/sys"
+ include4sdk="${include4sdk};${platform_sdk}/Include/mfc"
+ include4sdk="${include4sdk};${platform_sdk}/Include/atl"
+ include4sdk="${include4sdk};${platform_sdk}/Include/crt"
+ lib4sdk="${platform_sdk}/Lib/AMD64"
+ lib4sdk="${lib4sdk};${platform_sdk}/Lib/AMD64/atlmfc"
+ # Search path and DLL locating path
+ # WARNING: CYGWIN has a link.exe too, make sure compilers are first
+ path4sdk="${platform_sdk}/bin;${path4sdk}"
+ path4sdk="${compiler_path};${path4sdk}"
+ fi
+ # Export LIB and INCLUDE
+ unset lib
+ unset Lib
+ LIB="${lib4sdk}"
+ export LIB
+ unset include
+ unset Include
+ INCLUDE="${include4sdk}"
+ export INCLUDE
+ # Set the ALT variable
+ ALT_COMPILER_PATH=`${dosname} "${compiler_path}"`
+ export ALT_COMPILER_PATH
+ dirMustExist "${compiler_path}" ALT_COMPILER_PATH
+ ALT_MSDEVTOOLS_PATH=`${dosname} "${msdevtools_path}"`
+ export ALT_MSDEVTOOLS_PATH
+ dirMustExist "${msdevtools_path}" ALT_MSDEVTOOLS_PATH
+
+ # WINDOWS: Get the previous JDK to be used to bootstrap the build
+ path4sdk="${bootdir}/bin;${path4sdk}"
+
+ # Turn all \\ into /, remove duplicates and trailing /
+ slash_path="`echo ${path4sdk} | sed -e 's@\\\\@/@g' -e 's@//@/@g' -e 's@/$@@' -e 's@/;@;@g'`"
+
+ # For windows, it's hard to know where the system is, so we just add this
+ # to PATH.
+ path4sdk="${slash_path};${PATH}"
+
+ # Convert path4sdk to cygwin style
+ if [ "${unix_toolset}" = CYGWIN ] ; then
+ path4sdk="`/usr/bin/cygpath -p ${path4sdk}`"
+ fi
+
+ # Set special windows ALT variables
+ ALT_ISHIELDDIR="C:/ishield802"
+ export ALT_ISHIELDDIR
+
+ # Sponsors binaries
+ ALT_SPONSOR1DIR=C:/sponsor_binaries
+ export ALT_SPONSOR1DIR
+ ALT_SPONSOR2DIR=C:/sponsor_binaries
+ export ALT_SPONSOR2DIR
+
+fi
+
+# Export PATH setting
+PATH="${path4sdk}"
+export PATH
+
+# Things we need to unset
+unset LD_LIBRARY_PATH
+unset LD_LIBRARY_PATH_32
+unset LD_LIBRARY_PATH_64
+unset JAVA_HOME
+
diff --git a/jdk/make/jprt.gmk b/jdk/make/jprt.gmk
new file mode 100644
index 0000000..95d3587
--- /dev/null
+++ b/jdk/make/jprt.gmk
@@ -0,0 +1,49 @@
+#
+# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# JPRT rule to build this workspace
+
+JPRT_ARCHIVE_BUNDLE=$(ABS_OUTPUTDIR)/$(JPRT_BUILD_FLAVOR)-bundle.zip
+ifdef JPRT_BUILD_VERSION
+ MILESTONE=$(JPRT_BUILD_VERSION)
+endif
+
+jprt_build_product: all images
+ ( $(CD) $(OUTPUTDIR)/j2sdk-image && \
+ $(ZIPEXE) -q -r $(JPRT_ARCHIVE_BUNDLE) . )
+
+jprt_build_fastdebug: fastdebug images
+ ( $(CD) $(OUTPUTDIR)/j2sdk-image && \
+ $(ZIPEXE) -q -r $(JPRT_ARCHIVE_BUNDLE) . )
+
+jprt_build_debug: debug images
+ ( $(CD) $(OUTPUTDIR)/j2sdk-image && \
+ $(ZIPEXE) -q -r $(JPRT_ARCHIVE_BUNDLE) . )
+
+#
+# Phonies to avoid accidents.
+#
+.PHONY: jprt_build_product jprt_build_fastdebug jprt_build_debug
+
diff --git a/jdk/make/jprt.properties b/jdk/make/jprt.properties
new file mode 100644
index 0000000..06abef8
--- /dev/null
+++ b/jdk/make/jprt.properties
@@ -0,0 +1,60 @@
+#
+# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Properties for jprt
+jprt.tools.default.release=jdk1.7.0
+
+# Specific platform list
+jprt.build.platforms=\
+solaris_sparc_5.10,\
+solaris_sparcv9_5.10,\
+solaris_i586_5.10,\
+solaris_x64_5.10,\
+linux_i586,\
+linux_x64,\
+windows_i586,\
+windows_x64
+
+# The different build flavors we want
+jprt.build.flavors=product,fastdebug
+jprt.run.flavors=c1,c2
+jprt.solaris_sparcv9.run.flavors=c2
+jprt.solaris_x64.run.flavors=c2
+jprt.windows_x64.run.flavors=c2
+jprt.linux_x64.run.flavors=c2
+jprt.run.flavor.c1.option=-client
+jprt.run.flavor.c2.option=-server
+
+# Explicitly designate what the 32bit match is for the 64bit build
+jprt.solaris_sparcv9.build.platform.match32=solaris_sparc_5.10
+jprt.solaris_x64.build.platform.match32=solaris_i586_5.10
+
+# Standard list of jprt test targets for this workspace
+jprt.test.targets=*-*-*-jvm98
+
+# Directories needed to build
+jprt.bundle.src.dirs=make src
+jprt.bundle.exclude.src.dirs=build
+
diff --git a/jdk/make/launchers/Makefile b/jdk/make/launchers/Makefile
new file mode 100644
index 0000000..a2f5587
--- /dev/null
+++ b/jdk/make/launchers/Makefile
@@ -0,0 +1,120 @@
+#
+# Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building simple launchers
+#
+
+BUILDDIR = ..
+PACKAGE = launchers
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+# Run MAKE $@ for a launcher:
+# $(call make-launcher, name, mainclass, java-args, main-args)
+define make-launcher
+$(MAKE) -f Makefile.launcher \
+ PROGRAM=$(strip $1) \
+ MAIN_CLASS=$(strip $2) \
+ MAIN_JAVA_ARGS="$(strip $3)" \
+ MAIN_ARGS="$(strip $4)" $@
+endef
+
+# Run MAKE $@ for all launchers
+ifeq ($(PLATFORM),windows)
+# Run MAKE $@ for all platform specific launchers
+define make-platform-specific-launchers
+$(call make-launcher, kinit, sun.security.krb5.internal.tools.Kinit, , )
+$(call make-launcher, klist, sun.security.krb5.internal.tools.Klist, , )
+$(call make-launcher, ktab, sun.security.krb5.internal.tools.Ktab, , )
+endef
+else
+# Run MAKE $@ for all platform specific launchers
+define make-platform-specific-launchers
+endef
+endif
+# Run MAKE $@ for all generic launchers
+define make-all-launchers
+$(call make-launcher, appletviewer, sun.applet.Main, , )
+$(call make-launcher, apt, com.sun.tools.apt.Main, , )
+$(call make-launcher, extcheck, com.sun.tools.extcheck.Main, , )
+$(call make-launcher, idlj, com.sun.tools.corba.se.idl.toJavaPortable.Compile, , )
+$(call make-launcher, jar, sun.tools.jar.Main, , )
+$(call make-launcher, jarsigner, sun.security.tools.JarSigner, , )
+$(call make-launcher, javac, com.sun.tools.javac.Main, , )
+$(call make-launcher, javadoc, com.sun.tools.javadoc.Main, , )
+$(call make-launcher, javah, com.sun.tools.javah.Main, , )
+$(call make-launcher, javap, sun.tools.javap.Main, , )
+$(call make-launcher, jconsole, sun.tools.jconsole.JConsole, \
+ -J-Djconsole.showOutputViewer, )
+$(call make-launcher, jdb, com.sun.tools.example.debug.tty.TTY, , )
+$(call make-launcher, jhat, com.sun.tools.hat.Main, , )
+$(call make-launcher, jinfo, sun.tools.jinfo.JInfo, \
+ -J-Dsun.jvm.hotspot.debugger.useProcDebugger \
+ -J-Dsun.jvm.hotspot.debugger.useWindbgDebugger, )
+$(call make-launcher, jmap, sun.tools.jmap.JMap, \
+ -J-Dsun.jvm.hotspot.debugger.useProcDebugger \
+ -J-Dsun.jvm.hotspot.debugger.useWindbgDebugger, )
+$(call make-launcher, jps, sun.tools.jps.Jps, , )
+$(call make-launcher, jrunscript, com.sun.tools.script.shell.Main, , )
+$(call make-launcher, jsadebugd, sun.jvm.hotspot.jdi.SADebugServer, , )
+$(call make-launcher, jstack, sun.tools.jstack.JStack, \
+ -J-Dsun.jvm.hotspot.debugger.useProcDebugger \
+ -J-Dsun.jvm.hotspot.debugger.useWindbgDebugger, )
+$(call make-launcher, jstat, sun.tools.jstat.Jstat, , )
+$(call make-launcher, jstatd, sun.tools.jstatd.Jstatd, , )
+$(call make-launcher, keytool, sun.security.tools.KeyTool, , )
+$(call make-launcher, native2ascii, sun.tools.native2ascii.Main, , )
+$(call make-launcher, orbd, com.sun.corba.se.impl.activation.ORBD, \
+ -J-Dcom.sun.CORBA.activation.DbDir=./orb.db \
+ -J-Dcom.sun.CORBA.activation.Port=1049 \
+ -J-Dcom.sun.CORBA.POA.ORBServerId=1, )
+$(call make-launcher, pack200, com.sun.java.util.jar.pack.Driver, , --pack)
+$(call make-launcher, policytool, sun.security.tools.PolicyTool, , )
+$(call make-launcher, rmic, sun.rmi.rmic.Main, , )
+$(call make-launcher, rmid, sun.rmi.server.Activation, , )
+$(call make-launcher, rmiregistry, sun.rmi.registry.RegistryImpl, , )
+$(call make-launcher, schemagen, com.sun.tools.internal.jxc.SchemaGenerator, , )
+$(call make-launcher, serialver, sun.tools.serialver.SerialVer, , )
+$(call make-launcher, servertool, com.sun.corba.se.impl.activation.ServerTool, , )
+$(call make-launcher, tnameserv, com.sun.corba.se.impl.naming.cosnaming.TransientNameServer, \
+ -J-Dcom.sun.CORBA.activation.DbDir=./orb.db \
+ -J-Djava.util.logging.LoggingPermission=contol \
+ -J-Dcom.sun.CORBA.POA.ORBServerId=1, )
+$(call make-launcher, wsgen, com.sun.tools.internal.ws.WsGen, , )
+$(call make-launcher, wsimport, com.sun.tools.internal.ws.WsImport, , )
+$(call make-launcher, xjc, com.sun.tools.internal.xjc.Driver, , )
+endef
+
+build:
+ $(make-all-launchers)
+ $(make-platform-specific-launchers)
+
+clean clobber::
+ $(make-all-launchers)
+ $(make-platform-specific-launchers)
+
+include $(BUILDDIR)/common/Rules.gmk
+
diff --git a/jdk/make/launchers/Makefile.launcher b/jdk/make/launchers/Makefile.launcher
new file mode 100644
index 0000000..7e71e10
--- /dev/null
+++ b/jdk/make/launchers/Makefile.launcher
@@ -0,0 +1,204 @@
+#
+# Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building simple launchers
+#
+
+BUILDDIR = ..
+PACKAGE = launcher
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+# The PROGRAM and MAIN_CLASS must be defined
+ifndef PROGRAM
+ build: no_program
+ no_program:
+ $(ECHO) "No PROGRAM name defined"
+ exit 1
+endif
+ifndef MAIN_CLASS
+ build: no_main
+ no_main:
+ $(ECHO) "No MAIN_CLASS name defined"
+ exit 1
+endif
+
+# Some tools need the wildcard expansion option
+ifeq ($(PROGRAM),apt)
+ WILDCARDS=true
+ NEVER_ACT_AS_SERVER_CLASS_MACHINE=true
+endif
+ifeq ($(PROGRAM),javac)
+ WILDCARDS=true
+ MAIN_JAVA_ARGS += -J-Xss4m -J-ea:com.sun.tools...
+ NEVER_ACT_AS_SERVER_CLASS_MACHINE=true
+endif
+ifeq ($(PROGRAM),javadoc)
+ WILDCARDS=true
+ NEVER_ACT_AS_SERVER_CLASS_MACHINE=true
+endif
+ifeq ($(PROGRAM),javap)
+ WILDCARDS=true
+ NEVER_ACT_AS_SERVER_CLASS_MACHINE=true
+endif
+ifeq ($(PROGRAM),javah)
+ WILDCARDS=true
+ NEVER_ACT_AS_SERVER_CLASS_MACHINE=true
+endif
+ifeq ($(PROGRAM),serialver)
+ WILDCARDS=true
+endif
+
+# GUI tools need X11
+ifeq ($(PROGRAM),appletviewer)
+ GUI_TOOL=true
+endif
+ifeq ($(PROGRAM),policytool)
+ GUI_TOOL=true
+endif
+
+# SA tools
+ifeq ($(PROGRAM),jstack)
+ SA_TOOL=true
+endif
+ifeq ($(PROGRAM),jsadebugd)
+ SA_TOOL=true
+endif
+ifeq ($(PROGRAM),jinfo)
+ SA_TOOL=true
+endif
+ifeq ($(PROGRAM),jmap)
+ SA_TOOL=true
+endif
+
+# special idlj launcher
+ifeq ($(PROGRAM),orbd)
+ IDLJ_TOOL=true
+endif
+ifeq ($(PROGRAM),servertool)
+ IDLJ_TOOL=true
+endif
+ifeq ($(PROGRAM),tnameserv)
+ IDLJ_TOOL=true
+endif
+
+# idlj itself only
+ifeq ($(PROGRAM),idlj)
+ ifndef STANDALONE_CORBA_WS
+ FILES_c = $(SHARE_SRC)/native/bin/$(PROGRAM).c \
+ $(SHARE_SRC)/native/bin/utility.c
+ endif
+endif
+
+# rmic only
+ifeq ($(PROGRAM),rmic)
+ ifdef STANDALONE_CORBA_WS
+ FILES_c = $(SHARE_SRC)/native/bin/$(PROGRAM).c \
+ $(SHARE_SRC)/native/bin/utility.c
+ endif
+ WILDCARDS=true
+endif
+
+# IDLJ_TOOL only uses different source files
+ifeq ($(IDLJ_TOOL),true)
+ ifdef STANDALONE_CORBA_WS
+ FILES_c = $(SHARE_SRC)/native/bin/idlj.c \
+ $(SHARE_SRC)/native/bin/utility.c
+ endif
+endif
+
+# jdb only
+ifeq ($(PROGRAM),jdb)
+ # Override the default APP_CLASSPATH to pick up sa-jdi.jar also.
+ # Default is defined in src/[solaris,windows]/bin/java_md.h
+ # PROGRAM, JAVA_ARGS, and APP_CLASSPATH are used in src/share/bin/java.c
+ # SA is currently not available on windows (for any ARCH), or linux-ia64:
+ ifneq ($(ARCH), ia64)
+ JDB_CLASSPATH = "{ \"/lib/tools.jar\", \"/lib/sa-jdi.jar\", \"/classes\" }"
+ OTHER_CPPFLAGS += -DAPP_CLASSPATH=$(JDB_CLASSPATH)
+ endif
+endif
+
+# jconsole only
+ifeq ($(PROGRAM),jconsole)
+ JCONSOLE_CLASSPATH = "{ \"/lib/jconsole.jar\", \"/lib/tools.jar\", \"/classes\" }"
+ OTHER_CPPFLAGS += -DAPP_CLASSPATH=$(JCONSOLE_CLASSPATH)
+ ifeq ($(PLATFORM), windows)
+ OTHER_CPPFLAGS += -DJAVAW
+ LDLIBS_COMMON += user32.lib
+ MAIN_JAVA_ARGS += -J-Djconsole.showOutputViewer
+ endif
+endif
+
+# GUI tools
+ifeq ($(GUI_TOOL),true)
+ ifneq ($(PLATFORM), windows)
+ # Anything with a GUI needs X11 to be linked in.
+ OTHER_LDLIBS += -L$(OPENWIN_LIB) -lX11
+ endif
+endif
+
+# SA tools need special app classpath
+ifeq ($(SA_TOOL),true)
+ SA_CLASSPATH = "{ \"/lib/tools.jar\", \"/lib/sa-jdi.jar\", \"/classes\"}"
+ OTHER_CPPFLAGS += -DAPP_CLASSPATH=$(SA_CLASSPATH)
+endif
+
+# Wildcards
+ifeq ($(WILDCARDS),true)
+ OTHER_CPPFLAGS += -DEXPAND_CLASSPATH_WILDCARDS
+endif
+
+# Always tell native code what the main class is
+OTHER_CPPFLAGS += -DMAIN_CLASS=\"$(MAIN_CLASS)\"
+
+# Construct initializer for initial arguments to java
+ALL_ARGS = -J-ms8m $(MAIN_JAVA_ARGS) $(MAIN_CLASS) $(MAIN_ARGS)
+JAVA_ARGS = "{ $(ALL_ARGS:%=\"%\",) }"
+
+# Always report launcher info
+build: launcher_info
+
+# Print info macro
+define printLauncherSetting
+if [ "$2" != "" ] ; then $(PRINTF) "%-16s %s\n" "$1:" "$2"; fi
+endef
+
+# Report basic information about this launcher
+launcher_info:
+ @$(ECHO) "========================================================="
+ @$(call printLauncherSetting,LAUNCHER,$(PROGRAM))
+ @$(call printLauncherSetting,MAIN_CLASS,$(MAIN_CLASS))
+ @$(call printLauncherSetting,MAIN_JAVA_ARGS,$(MAIN_JAVA_ARGS))
+ @$(call printLauncherSetting,MAIN_ARGS,$(MAIN_ARGS))
+ @$(call printLauncherSetting,ALL_ARGS,$(ALL_ARGS))
+ @$(ECHO) "========================================================="
+
+#
+# Rules for building a program
+#
+include $(BUILDDIR)/common/Program.gmk
+
diff --git a/jdk/make/mkdemo/Makefile b/jdk/make/mkdemo/Makefile
new file mode 100644
index 0000000..b0bd7f5
--- /dev/null
+++ b/jdk/make/mkdemo/Makefile
@@ -0,0 +1,55 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all the demos
+#
+
+BUILDDIR = ..
+PRODUCT = demos
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = applets jfc jvmti management jni scripting jpda
+
+all build:: nbproject
+ $(SUBDIRS-loop)
+
+nbproject:
+ $(RM) -r $(DEMODIR)/nbproject
+ $(MKDIR) -p $(DEMODIR)
+ ( $(CD) $(SHARE_SRC)/demo && $(TAR) -cf - \
+ `find nbproject $(SCM_DIRS_prune) -o -type f -print` ) | \
+ ( $(CD) $(DEMODIR) && $(TAR) -xf - )
+ifndef OPENJDK
+ ( $(CD) $(CLOSED_SHARE_SRC)/demo && $(TAR) -cf - \
+ `find nbproject $(SCM_DIRS_prune) -o -type f -print` ) | \
+ ( $(CD) $(DEMODIR) && $(TAR) -xf - )
+endif
+
+clean clobber::
+ $(SUBDIRS-loop)
+ $(RM) -r $(DEMODIR)
+ $(RM) -r $(DEMOCLASSDIR)
+
diff --git a/jdk/make/mkdemo/applets/Animator/Makefile b/jdk/make/mkdemo/applets/Animator/Makefile
new file mode 100644
index 0000000..da1d36e
--- /dev/null
+++ b/jdk/make/mkdemo/applets/Animator/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = Animator
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(CLOSED_SRC)/share/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/ArcTest/Makefile b/jdk/make/mkdemo/applets/ArcTest/Makefile
new file mode 100644
index 0000000..594bbb3
--- /dev/null
+++ b/jdk/make/mkdemo/applets/ArcTest/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = ArcTest
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/BarChart/Makefile b/jdk/make/mkdemo/applets/BarChart/Makefile
new file mode 100644
index 0000000..98b0085
--- /dev/null
+++ b/jdk/make/mkdemo/applets/BarChart/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = BarChart
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
+
diff --git a/jdk/make/mkdemo/applets/Blink/Makefile b/jdk/make/mkdemo/applets/Blink/Makefile
new file mode 100644
index 0000000..455d0bd
--- /dev/null
+++ b/jdk/make/mkdemo/applets/Blink/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = Blink
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/CardTest/Makefile b/jdk/make/mkdemo/applets/CardTest/Makefile
new file mode 100644
index 0000000..75a6e43
--- /dev/null
+++ b/jdk/make/mkdemo/applets/CardTest/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = CardTest
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/Clock/Makefile b/jdk/make/mkdemo/applets/Clock/Makefile
new file mode 100644
index 0000000..0a40704
--- /dev/null
+++ b/jdk/make/mkdemo/applets/Clock/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = Clock
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/DitherTest/Makefile b/jdk/make/mkdemo/applets/DitherTest/Makefile
new file mode 100644
index 0000000..84943ca
--- /dev/null
+++ b/jdk/make/mkdemo/applets/DitherTest/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = DitherTest
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/DrawTest/Makefile b/jdk/make/mkdemo/applets/DrawTest/Makefile
new file mode 100644
index 0000000..0956c00
--- /dev/null
+++ b/jdk/make/mkdemo/applets/DrawTest/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = DrawTest
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/Fractal/Makefile b/jdk/make/mkdemo/applets/Fractal/Makefile
new file mode 100644
index 0000000..3eb27da
--- /dev/null
+++ b/jdk/make/mkdemo/applets/Fractal/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = Fractal
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/GraphLayout/Makefile b/jdk/make/mkdemo/applets/GraphLayout/Makefile
new file mode 100644
index 0000000..ed4b97f
--- /dev/null
+++ b/jdk/make/mkdemo/applets/GraphLayout/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+DEMONAME = GraphLayout
+PRODUCT = demo/applets
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(CLOSED_SRC)/share/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/GraphicsTest/Makefile b/jdk/make/mkdemo/applets/GraphicsTest/Makefile
new file mode 100644
index 0000000..f3022a9
--- /dev/null
+++ b/jdk/make/mkdemo/applets/GraphicsTest/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = GraphicsTest
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/JumpingBox/Makefile b/jdk/make/mkdemo/applets/JumpingBox/Makefile
new file mode 100644
index 0000000..2f4ec7f
--- /dev/null
+++ b/jdk/make/mkdemo/applets/JumpingBox/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = JumpingBox
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(CLOSED_SRC)/share/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/Makefile b/jdk/make/mkdemo/applets/Makefile
new file mode 100644
index 0000000..f8000bf
--- /dev/null
+++ b/jdk/make/mkdemo/applets/Makefile
@@ -0,0 +1,47 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the demo applets
+#
+
+BUILDDIR = ../..
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS_CLOSED = Animator GraphLayout JumpingBox TicTacToe
+SUBDIRS = ArcTest BarChart Blink CardTest Clock DitherTest DrawTest \
+ Fractal GraphicsTest MoleculeViewer \
+ NervousText SimpleGraph SortDemo SpreadSheet WireFrame
+ifndef OPENJDK
+SUBDIRS += $(SUBDIRS_CLOSED)
+endif
+
+SUBDIRS_MAKEFLAGS += DEMO_IS_APPLET=true
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+clobber clean::
+ $(RM) -r $(DEMODIR)/applets
diff --git a/jdk/make/mkdemo/applets/MoleculeViewer/Makefile b/jdk/make/mkdemo/applets/MoleculeViewer/Makefile
new file mode 100644
index 0000000..d6078b4
--- /dev/null
+++ b/jdk/make/mkdemo/applets/MoleculeViewer/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = MoleculeViewer
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/NervousText/Makefile b/jdk/make/mkdemo/applets/NervousText/Makefile
new file mode 100644
index 0000000..89e305c
--- /dev/null
+++ b/jdk/make/mkdemo/applets/NervousText/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = NervousText
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/SimpleGraph/Makefile b/jdk/make/mkdemo/applets/SimpleGraph/Makefile
new file mode 100644
index 0000000..5154448
--- /dev/null
+++ b/jdk/make/mkdemo/applets/SimpleGraph/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = SimpleGraph
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/SortDemo/Makefile b/jdk/make/mkdemo/applets/SortDemo/Makefile
new file mode 100644
index 0000000..4c82643
--- /dev/null
+++ b/jdk/make/mkdemo/applets/SortDemo/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = SortDemo
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/SpreadSheet/Makefile b/jdk/make/mkdemo/applets/SpreadSheet/Makefile
new file mode 100644
index 0000000..a9a187a
--- /dev/null
+++ b/jdk/make/mkdemo/applets/SpreadSheet/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = SpreadSheet
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/TicTacToe/Makefile b/jdk/make/mkdemo/applets/TicTacToe/Makefile
new file mode 100644
index 0000000..d02b863
--- /dev/null
+++ b/jdk/make/mkdemo/applets/TicTacToe/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = TicTacToe
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(CLOSED_SRC)/share/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/applets/WireFrame/Makefile b/jdk/make/mkdemo/applets/WireFrame/Makefile
new file mode 100644
index 0000000..17d15b7
--- /dev/null
+++ b/jdk/make/mkdemo/applets/WireFrame/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build applet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/applets
+DEMONAME = WireFrame
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/applets/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/applets/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jfc/CodePointIM/Makefile b/jdk/make/mkdemo/jfc/CodePointIM/Makefile
new file mode 100644
index 0000000..77883da
--- /dev/null
+++ b/jdk/make/mkdemo/jfc/CodePointIM/Makefile
@@ -0,0 +1,45 @@
+#
+# Copyright 2004-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the CodePointInputMethod
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jfc
+DEMONAME = CodePointIM
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jfc/$(DEMONAME)
+DEMO_TOPFILES = ./README.html ./README_ja.html ./README_zh_CN.html
+DEMO_MAINCLASS = $(DEMONAME)
+DEMO_DESCRIPTOR = java.awt.im.spi.InputMethodDescriptor
+DEMO_DESTDIR = $(DEMODIR)/jfc/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jfc/FileChooserDemo/Makefile b/jdk/make/mkdemo/jfc/FileChooserDemo/Makefile
new file mode 100644
index 0000000..89a4d96
--- /dev/null
+++ b/jdk/make/mkdemo/jfc/FileChooserDemo/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile to build the FileChooser demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jfc
+DEMONAME = FileChooserDemo
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jfc/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_MAINCLASS = $(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/jfc/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jfc/Font2DTest/Makefile b/jdk/make/mkdemo/jfc/Font2DTest/Makefile
new file mode 100644
index 0000000..64f985d
--- /dev/null
+++ b/jdk/make/mkdemo/jfc/Font2DTest/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the Font2DTest Demo
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jfc
+DEMONAME = Font2DTest
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jfc/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_MAINCLASS = $(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/jfc/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jfc/Java2D/Makefile b/jdk/make/mkdemo/jfc/Java2D/Makefile
new file mode 100644
index 0000000..fec6e9a
--- /dev/null
+++ b/jdk/make/mkdemo/jfc/Java2D/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the Java 2D Demo
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jfc
+DEMONAME = Java2Demo
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(CLOSED_SRC)/share/demo/jfc/Java2D
+DEMO_TOPFILES = ./Java2Demo.html ./README.txt
+DEMO_MAINCLASS = java2d.Java2Demo
+DEMO_DESTDIR = $(DEMODIR)/jfc/Java2D
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jfc/Makefile b/jdk/make/mkdemo/jfc/Makefile
new file mode 100644
index 0000000..06817a1
--- /dev/null
+++ b/jdk/make/mkdemo/jfc/Makefile
@@ -0,0 +1,51 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the jfc demos
+#
+
+BUILDDIR = ../..
+PRODUCT = demos
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = \
+ CodePointIM \
+ FileChooserDemo \
+ Font2DTest \
+ Metalworks \
+ Notepad \
+ SampleTree \
+ SwingApplet \
+ TableExample
+
+# Some demos aren't currently included in OpenJDK
+ifndef OPENJDK
+ SUBDIRS += Java2D SwingSet2 Stylepad
+endif
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/mkdemo/jfc/Metalworks/Makefile b/jdk/make/mkdemo/jfc/Metalworks/Makefile
new file mode 100644
index 0000000..adde302
--- /dev/null
+++ b/jdk/make/mkdemo/jfc/Metalworks/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile to build the Metalworks demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jfc
+DEMONAME = Metalworks
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jfc/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_MAINCLASS = $(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/jfc/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jfc/Notepad/Makefile b/jdk/make/mkdemo/jfc/Notepad/Makefile
new file mode 100644
index 0000000..c86bbde
--- /dev/null
+++ b/jdk/make/mkdemo/jfc/Notepad/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 1997-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile to build the Notepad demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jfc
+DEMONAME = Notepad
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jfc/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_MAINCLASS = $(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/jfc/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jfc/SampleTree/Makefile b/jdk/make/mkdemo/jfc/SampleTree/Makefile
new file mode 100644
index 0000000..4e4bd7a
--- /dev/null
+++ b/jdk/make/mkdemo/jfc/SampleTree/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 1997-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile to build the SampleTree demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jfc
+DEMONAME = SampleTree
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jfc/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_MAINCLASS = $(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/jfc/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jfc/Stylepad/Makefile b/jdk/make/mkdemo/jfc/Stylepad/Makefile
new file mode 100644
index 0000000..4dc7d03
--- /dev/null
+++ b/jdk/make/mkdemo/jfc/Stylepad/Makefile
@@ -0,0 +1,50 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile to build the Stylepad demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jfc
+DEMONAME = Stylepad
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(CLOSED_SRC)/share/demo/jfc/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_MAINCLASS = $(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/jfc/$(DEMONAME)
+
+# Notepad files need to be added to the demo
+DEMO_EXTRA_SRCDIR = $(SHARE_SRC)/demo/jfc/Notepad
+DEMO_EXTRA_FILES := Notepad.java ElementTreePanel.java \
+ $(shell $(CD) $(DEMO_EXTRA_SRCDIR) \
+ && $(FIND) resources $(SCM_DIRS_prune) -o -type f -print )
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jfc/SwingApplet/Makefile b/jdk/make/mkdemo/jfc/SwingApplet/Makefile
new file mode 100644
index 0000000..5cb8bfe
--- /dev/null
+++ b/jdk/make/mkdemo/jfc/SwingApplet/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 1997-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile to build the SwingApplet demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jfc
+DEMONAME = SwingApplet
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jfc/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_MAINCLASS = $(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/jfc/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jfc/SwingSet2/Makefile b/jdk/make/mkdemo/jfc/SwingSet2/Makefile
new file mode 100644
index 0000000..70612b6
--- /dev/null
+++ b/jdk/make/mkdemo/jfc/SwingSet2/Makefile
@@ -0,0 +1,45 @@
+#
+# Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile to build the SwingSet2 demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jfc
+DEMONAME = SwingSet2
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(CLOSED_SRC)/share/demo/jfc/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_MAINCLASS = $(DEMONAME)
+DEMO_MANIFEST_ATTR = SplashScreen-Image: resources/images/splash.png
+DEMO_DESTDIR = $(DEMODIR)/jfc/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jfc/TableExample/Makefile b/jdk/make/mkdemo/jfc/TableExample/Makefile
new file mode 100644
index 0000000..76e9628
--- /dev/null
+++ b/jdk/make/mkdemo/jfc/TableExample/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 1997-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile to build the Table demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jfc
+DEMONAME = TableExample
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jfc/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_MAINCLASS = $(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/jfc/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jni/Makefile b/jdk/make/mkdemo/jni/Makefile
new file mode 100644
index 0000000..4cc3639
--- /dev/null
+++ b/jdk/make/mkdemo/jni/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the jni demo(s)
+#
+
+BUILDDIR = ../..
+PRODUCT = demos
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS =
+
+ifeq ($(PLATFORM),solaris)
+ SUBDIRS += Poller
+endif
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/mkdemo/jni/Poller/Makefile b/jdk/make/mkdemo/jni/Poller/Makefile
new file mode 100644
index 0000000..cda828f
--- /dev/null
+++ b/jdk/make/mkdemo/jni/Poller/Makefile
@@ -0,0 +1,45 @@
+#
+# Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build Poller class demo.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jni
+DEMONAME = Poller
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(PLATFORM_SRC)/demo/jni/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_MAINCLASS = Client
+DEMO_NATIVECLASS= $(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/jni/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jpda/Makefile b/jdk/make/mkdemo/jpda/Makefile
new file mode 100644
index 0000000..569d0ea
--- /dev/null
+++ b/jdk/make/mkdemo/jpda/Makefile
@@ -0,0 +1,40 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PRODUCT = demo/jpda
+DEMONAME = jpda
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/classes
+DEMO_PKGDIR = com/sun/tools/example
+DEMO_TOPFILES = ./com/sun/tools/example/README
+DEMO_DESTDIR = $(DEMODIR)/jpda
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jvmti/Makefile b/jdk/make/mkdemo/jvmti/Makefile
new file mode 100644
index 0000000..5924130
--- /dev/null
+++ b/jdk/make/mkdemo/jvmti/Makefile
@@ -0,0 +1,56 @@
+#
+# Copyright 2004-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the jvmti demo(s)
+#
+
+BUILDDIR = ../..
+PRODUCT = demos
+include $(BUILDDIR)/common/Defs.gmk
+
+# Can be built in any order, the JRE version of hprof and java_crw_demo are
+# really built in make/java.
+# The hprof target here just deliveres the sources and README files.
+# The java_crw_demo and agent_util files are copied into each demo that
+# uses them.
+SUBDIRS = \
+ versionCheck \
+ gctest \
+ heapViewer \
+ heapTracker \
+ minst \
+ mtrace \
+ waiters \
+ hprof
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+all build :: $(DEMODIR)/jvmti/index.html
+
+$(DEMODIR)/jvmti/index.html: $(SHARE_SRC)/demo/jvmti/index.html
+ $(install-file)
+
diff --git a/jdk/make/mkdemo/jvmti/README.txt b/jdk/make/mkdemo/jvmti/README.txt
new file mode 100644
index 0000000..cc02bb4
--- /dev/null
+++ b/jdk/make/mkdemo/jvmti/README.txt
@@ -0,0 +1,58 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+Instructions on adding a jvmti demo agent.
+
+Basically you want to mimic the jvmti demo agent "mtrace".
+
+* Create and populate a source directory at src/demo/jvmti
+ (Try and re-use code in agent_util area like src/demo/jvmti/mtrace)
+ (This should include a small README.txt document on what this demo is)
+
+* Make sure the appropriate "demo" copyright notice is added to all the
+ source files.
+
+* Edit src/share/demo/jvmti/index.html and add in reference to this demo.
+
+* Create make directory at make/mkdemo/jvmti
+ (Mimic make/mkdemo/jvmti/mtrace/Makefile)
+
+* Edit make/mkdemo/jvmti/Makefile and add in the new demo
+
+* Create test directory at test/demo/jvmti, create at least one test
+ (Use test/demo/jvmti/mtrace as a template)
+
+* Don't forget to SCCS in all the new files
+
+* Build and create images (cd make && gnumake && gnumake images)
+ (Do this on Solaris, Linux, and at least one Windows platform)
+
+* Verify that browsing build/*/j2sdk-images/demo/jvmti looks right
+
+* Run the tests: cd test/demo/jvmti && runregress .
+ (Do this on Solaris, Linux, and at least one Windows platform)
+
+Contact: jk-svc-group@sun.com for more information or help.
+
diff --git a/jdk/make/mkdemo/jvmti/gctest/Makefile b/jdk/make/mkdemo/jvmti/gctest/Makefile
new file mode 100644
index 0000000..af10206
--- /dev/null
+++ b/jdk/make/mkdemo/jvmti/gctest/Makefile
@@ -0,0 +1,41 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jvmti
+DEMONAME = gctest
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jvmti/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_DESTDIR = $(DEMODIR)/jvmti/$(DEMONAME)
+
+DEMO_OBJECTS = agent_util.$(OBJECT_SUFFIX)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jvmti/heapTracker/Makefile b/jdk/make/mkdemo/jvmti/heapTracker/Makefile
new file mode 100644
index 0000000..dfb432b
--- /dev/null
+++ b/jdk/make/mkdemo/jvmti/heapTracker/Makefile
@@ -0,0 +1,41 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jvmti
+DEMONAME = heapTracker
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jvmti/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_DESTDIR = $(DEMODIR)/jvmti/$(DEMONAME)
+
+DEMO_OBJECTS = agent_util.$(OBJECT_SUFFIX) java_crw_demo.$(OBJECT_SUFFIX)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jvmti/heapViewer/Makefile b/jdk/make/mkdemo/jvmti/heapViewer/Makefile
new file mode 100644
index 0000000..3472073
--- /dev/null
+++ b/jdk/make/mkdemo/jvmti/heapViewer/Makefile
@@ -0,0 +1,41 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jvmti
+DEMONAME = heapViewer
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jvmti/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_DESTDIR = $(DEMODIR)/jvmti/$(DEMONAME)
+
+DEMO_OBJECTS = agent_util.$(OBJECT_SUFFIX)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jvmti/hprof/Makefile b/jdk/make/mkdemo/jvmti/hprof/Makefile
new file mode 100644
index 0000000..545872f
--- /dev/null
+++ b/jdk/make/mkdemo/jvmti/hprof/Makefile
@@ -0,0 +1,52 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jvmti
+DEMONAME = hprof
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jvmti/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_PSRCDIR = $(PLATFORM_SRC)/demo/jvmti/$(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/jvmti/$(DEMONAME)
+
+DEMO_OBJECTS = java_crw_demo.$(OBJECT_SUFFIX)
+
+ifeq ($(PLATFORM), windows)
+ EXTRA_LIBS += wsock32.lib winmm.lib
+endif
+ifeq ($(PLATFORM), solaris)
+ OTHER_LDLIBS += $(LIBSOCKET) -lnsl -ldl
+endif
+ifeq ($(PLATFORM), linux)
+ OTHER_LDLIBS += $(LIBSOCKET) -lnsl -ldl -lpthread
+endif
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jvmti/mapfile-vers b/jdk/make/mkdemo/jvmti/mapfile-vers
new file mode 100644
index 0000000..64debe9
--- /dev/null
+++ b/jdk/make/mkdemo/jvmti/mapfile-vers
@@ -0,0 +1,34 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface for a Java JVMTI agent library (Solaris & Linux).
+
+SUNWprivate_1.1 {
+ global:
+ Agent_OnLoad;
+ Agent_OnUnload;
+ local:
+ *;
+};
diff --git a/jdk/make/mkdemo/jvmti/minst/Makefile b/jdk/make/mkdemo/jvmti/minst/Makefile
new file mode 100644
index 0000000..01479b3
--- /dev/null
+++ b/jdk/make/mkdemo/jvmti/minst/Makefile
@@ -0,0 +1,41 @@
+#
+# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jvmti
+DEMONAME = minst
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jvmti/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_DESTDIR = $(DEMODIR)/jvmti/$(DEMONAME)
+
+DEMO_OBJECTS = agent_util.$(OBJECT_SUFFIX) java_crw_demo.$(OBJECT_SUFFIX)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jvmti/mtrace/Makefile b/jdk/make/mkdemo/jvmti/mtrace/Makefile
new file mode 100644
index 0000000..224ce59
--- /dev/null
+++ b/jdk/make/mkdemo/jvmti/mtrace/Makefile
@@ -0,0 +1,41 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jvmti
+DEMONAME = mtrace
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jvmti/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_DESTDIR = $(DEMODIR)/jvmti/$(DEMONAME)
+
+DEMO_OBJECTS = agent_util.$(OBJECT_SUFFIX) java_crw_demo.$(OBJECT_SUFFIX)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jvmti/versionCheck/Makefile b/jdk/make/mkdemo/jvmti/versionCheck/Makefile
new file mode 100644
index 0000000..e25a5c8
--- /dev/null
+++ b/jdk/make/mkdemo/jvmti/versionCheck/Makefile
@@ -0,0 +1,41 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jvmti
+DEMONAME = versionCheck
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jvmti/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_DESTDIR = $(DEMODIR)/jvmti/$(DEMONAME)
+
+DEMO_OBJECTS = agent_util.$(OBJECT_SUFFIX)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/jvmti/waiters/Makefile b/jdk/make/mkdemo/jvmti/waiters/Makefile
new file mode 100644
index 0000000..669e5d5
--- /dev/null
+++ b/jdk/make/mkdemo/jvmti/waiters/Makefile
@@ -0,0 +1,41 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/jvmti
+DEMONAME = waiters
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/jvmti/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_DESTDIR = $(DEMODIR)/jvmti/$(DEMONAME)
+
+DEMO_OBJECTS = agent_util.$(OBJECT_SUFFIX)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/management/FullThreadDump/Makefile b/jdk/make/mkdemo/management/FullThreadDump/Makefile
new file mode 100644
index 0000000..6e6d75d
--- /dev/null
+++ b/jdk/make/mkdemo/management/FullThreadDump/Makefile
@@ -0,0 +1,40 @@
+#
+# Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/management
+DEMONAME = FullThreadDump
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/management/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_MAINCLASS = $(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/management/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/management/JTop/Makefile b/jdk/make/mkdemo/management/JTop/Makefile
new file mode 100644
index 0000000..bad0a27
--- /dev/null
+++ b/jdk/make/mkdemo/management/JTop/Makefile
@@ -0,0 +1,40 @@
+#
+# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/management
+DEMONAME = JTop
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/management/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_MAINCLASS = $(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/management/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/management/Makefile b/jdk/make/mkdemo/management/Makefile
new file mode 100644
index 0000000..b021ddd
--- /dev/null
+++ b/jdk/make/mkdemo/management/Makefile
@@ -0,0 +1,47 @@
+#
+# Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the java.lang.management demo(s)
+#
+
+BUILDDIR = ../..
+PRODUCT = demos
+include $(BUILDDIR)/common/Defs.gmk
+
+# Can be built in any order
+SUBDIRS = FullThreadDump \
+ VerboseGC \
+ MemoryMonitor \
+ JTop
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+all build :: $(DEMODIR)/management/index.html
+
+$(DEMODIR)/management/index.html: $(SHARE_SRC)/demo/management/index.html
+ $(install-file)
+
diff --git a/jdk/make/mkdemo/management/MemoryMonitor/Makefile b/jdk/make/mkdemo/management/MemoryMonitor/Makefile
new file mode 100644
index 0000000..3ca070e
--- /dev/null
+++ b/jdk/make/mkdemo/management/MemoryMonitor/Makefile
@@ -0,0 +1,40 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/management
+DEMONAME = MemoryMonitor
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/management/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_MAINCLASS = $(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/management/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/management/README.txt b/jdk/make/mkdemo/management/README.txt
new file mode 100644
index 0000000..bc00d2b
--- /dev/null
+++ b/jdk/make/mkdemo/management/README.txt
@@ -0,0 +1,57 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+Instructions on adding a java.lang.management demo.
+
+Basically you want to mimic the java.lang.management demo "FullThreadDump".
+
+* Create and populate a source directory at src/demo/management
+ (This should include a small README.txt document on what this demo is)
+
+* Make sure the appropriate "demo" copyright notice is added to all the
+ source files.
+
+* Edit src/share/demo/management/index.html and add in reference to this demo.
+
+* Create make directory at make/mkdemo/management
+ (Mimic make/mkdemo/management/FullThreadDump/Makefile)
+
+* Edit make/mkdemo/management/Makefile and add in the new demo
+
+* Create test directory at test/demo/management, create at least one test
+ (Use test/demo/management/FullThreadDump as a template)
+
+* Don't forget to put all files under SCM control
+
+* Build and create images (cd make && gnumake && gnumake images)
+ (Do this on Solaris, Linux, and at least one Windows platform)
+
+* Verify that browsing build/*/j2sdk-images/demo/management looks right
+
+* Run the tests: cd test/demo/management && runregress .
+ (Do this on Solaris, Linux, and at least one Windows platform)
+
+Contact: jk-svc-group@sun.com for more information or help.
+
diff --git a/jdk/make/mkdemo/management/VerboseGC/Makefile b/jdk/make/mkdemo/management/VerboseGC/Makefile
new file mode 100644
index 0000000..6824732
--- /dev/null
+++ b/jdk/make/mkdemo/management/VerboseGC/Makefile
@@ -0,0 +1,40 @@
+#
+# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/management
+DEMONAME = VerboseGC
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/management/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt
+DEMO_MAINCLASS = $(DEMONAME)
+DEMO_DESTDIR = $(DEMODIR)/management/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mkdemo/scripting/Makefile b/jdk/make/mkdemo/scripting/Makefile
new file mode 100644
index 0000000..b32cfb7
--- /dev/null
+++ b/jdk/make/mkdemo/scripting/Makefile
@@ -0,0 +1,38 @@
+#
+# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the scripting demo(s)
+#
+
+BUILDDIR = ../..
+PRODUCT = demos
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = jconsole-plugin
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/mkdemo/scripting/jconsole-plugin/Makefile b/jdk/make/mkdemo/scripting/jconsole-plugin/Makefile
new file mode 100644
index 0000000..6759df5
--- /dev/null
+++ b/jdk/make/mkdemo/scripting/jconsole-plugin/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the jconsole-plugin
+#
+
+BUILDDIR = ../../..
+PRODUCT = demo/scripting
+DEMONAME = jconsole-plugin
+include $(BUILDDIR)/common/Defs.gmk
+
+DEMO_ROOT = $(SHARE_SRC)/demo/scripting/$(DEMONAME)
+DEMO_TOPFILES = ./README.txt ./build.xml
+DEMO_SRCDIR = $(DEMO_ROOT)/src
+DEMO_DESTDIR = $(DEMODIR)/scripting/$(DEMONAME)
+
+#
+# Demo jar building rules.
+#
+include $(BUILDDIR)/common/Demo.gmk
+
diff --git a/jdk/make/mksample/Makefile b/jdk/make/mksample/Makefile
new file mode 100644
index 0000000..2d87ebd
--- /dev/null
+++ b/jdk/make/mksample/Makefile
@@ -0,0 +1,51 @@
+#
+# Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all the samples
+#
+
+BUILDDIR = ..
+PRODUCT = java
+include $(BUILDDIR)/common/Defs.gmk
+
+ifdef OPENJDK
+ WEBSERVICES_SUBDIR =
+else
+ WEBSERVICES_SUBDIR = webservices
+endif
+
+SUBDIRS = nio jmx scripting $(WEBSERVICES_SUBDIR) nbproject
+
+# include dtrace samples in Solaris builds
+ifeq ($(PLATFORM), solaris)
+ SUBDIRS += dtrace
+endif
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+clobber clean ::
+ $(RM) -r $(SAMPLEDIR)
diff --git a/jdk/make/mksample/dtrace/Makefile b/jdk/make/mksample/dtrace/Makefile
new file mode 100644
index 0000000..056f0b2
--- /dev/null
+++ b/jdk/make/mksample/dtrace/Makefile
@@ -0,0 +1,67 @@
+#
+# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for the dtrace sample code
+#
+
+BUILDDIR = ../..
+
+PRODUCT = java
+
+include $(BUILDDIR)/common/Defs.gmk
+
+SAMPLE_SRC_DIR = $(PLATFORM_SRC)/sample/dtrace
+SAMPLE_DST_DIR = $(SAMPLEDIR)/dtrace
+
+SAMPLE_FILES = \
+ $(SAMPLE_DST_DIR)/README.txt \
+ $(SAMPLE_DST_DIR)/helpers/dtrace_helper.d \
+ $(SAMPLE_DST_DIR)/hotspot_jni/README.txt \
+ $(SAMPLE_DST_DIR)/hotspot_jni/CriticalSection.d \
+ $(SAMPLE_DST_DIR)/hotspot_jni/CriticalSection_slow.d \
+ $(SAMPLE_DST_DIR)/hotspot_jni/hotspot_jni_calls_stat.d \
+ $(SAMPLE_DST_DIR)/hotspot_jni/hotspot_jni_calls_tree.d \
+ $(SAMPLE_DST_DIR)/hotspot/README.txt \
+ $(SAMPLE_DST_DIR)/hotspot/class_loading_stat.d \
+ $(SAMPLE_DST_DIR)/hotspot/gc_time_stat.d \
+ $(SAMPLE_DST_DIR)/hotspot/hotspot_calls_tree.d \
+ $(SAMPLE_DST_DIR)/hotspot/method_compile_stat.d \
+ $(SAMPLE_DST_DIR)/hotspot/method_invocation_stat.d \
+ $(SAMPLE_DST_DIR)/hotspot/method_invocation_stat_filter.d \
+ $(SAMPLE_DST_DIR)/hotspot/method_invocation_tree.d \
+ $(SAMPLE_DST_DIR)/hotspot/monitors.d \
+ $(SAMPLE_DST_DIR)/hotspot/object_allocation_stat.d
+
+
+all build: $(SAMPLE_FILES)
+
+$(SAMPLE_DST_DIR)/%: $(SAMPLE_SRC_DIR)/%
+ $(install-file)
+
+clean clobber:
+ $(RM) -r $(SAMPLE_DST_DIR)
+
+.PHONY: all build clean clobber
diff --git a/jdk/make/mksample/jmx/Makefile b/jdk/make/mksample/jmx/Makefile
new file mode 100644
index 0000000..94d0a18
--- /dev/null
+++ b/jdk/make/mksample/jmx/Makefile
@@ -0,0 +1,39 @@
+#
+# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all the samples under the jmx subdirectory.
+#
+
+BUILDDIR = ../..
+PRODUCT = java
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = jmx-scandir
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+clobber clean ::
+ $(RM) -r $(SAMPLEDIR)/jmx
diff --git a/jdk/make/mksample/jmx/jmx-scandir/Makefile b/jdk/make/mksample/jmx/jmx-scandir/Makefile
new file mode 100644
index 0000000..b32a41917
--- /dev/null
+++ b/jdk/make/mksample/jmx/jmx-scandir/Makefile
@@ -0,0 +1,96 @@
+#
+# Copyright 2006-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for the nioserver sample code
+#
+
+BUILDDIR = ../../..
+
+PRODUCT = java
+
+include $(BUILDDIR)/common/Defs.gmk
+
+SAMPLE_SRC_DIR = $(SHARE_SRC)/sample/jmx/jmx-scandir
+SAMPLE_DST_DIR = $(SAMPLEDIR)/jmx/jmx-scandir
+
+SAMPLE_FILES = \
+ $(SAMPLE_DST_DIR)/build.xml \
+ $(SAMPLE_DST_DIR)/build.properties \
+ $(SAMPLE_DST_DIR)/index.html \
+ $(SAMPLE_DST_DIR)/keystore \
+ $(SAMPLE_DST_DIR)/logging.properties \
+ $(SAMPLE_DST_DIR)/manifest.mf \
+ $(SAMPLE_DST_DIR)/truststore \
+ $(SAMPLE_DST_DIR)/docfiles/connect-local-ant-run.jpg \
+ $(SAMPLE_DST_DIR)/docfiles/connect-local-java-jar.jpg \
+ $(SAMPLE_DST_DIR)/docfiles/connect-local.jpg \
+ $(SAMPLE_DST_DIR)/docfiles/remote-connection-failed.jpg \
+ $(SAMPLE_DST_DIR)/docfiles/remote-connection.jpg \
+ $(SAMPLE_DST_DIR)/docfiles/scandir-config.jpg \
+ $(SAMPLE_DST_DIR)/docfiles/scandir-result.jpg \
+ $(SAMPLE_DST_DIR)/docfiles/scandir-start.jpg \
+ $(SAMPLE_DST_DIR)/nbproject/file-targets.xml \
+ $(SAMPLE_DST_DIR)/nbproject/jdk.xml \
+ $(SAMPLE_DST_DIR)/nbproject/netbeans-targets.xml \
+ $(SAMPLE_DST_DIR)/nbproject/project.xml \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/DirectoryScanner.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/DirectoryScannerMXBean.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/ResultLogManager.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/ResultLogManagerMXBean.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/ScanDirAgent.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/ScanDirClient.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/ScanDirConfig.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/ScanDirConfigMXBean.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/ScanManager.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/ScanManagerMXBean.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/package.html \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/config/DirectoryScannerConfig.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/config/FileMatch.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/config/ResultLogConfig.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/config/ResultRecord.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/config/ScanManagerConfig.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/config/XmlConfigUtils.java \
+ $(SAMPLE_DST_DIR)/src/com/sun/jmx/examples/scandir/config/package.html \
+ $(SAMPLE_DST_DIR)/src/etc/access.properties \
+ $(SAMPLE_DST_DIR)/src/etc/management.properties \
+ $(SAMPLE_DST_DIR)/src/etc/password.properties \
+ $(SAMPLE_DST_DIR)/src/etc/testconfig.xml \
+ $(SAMPLE_DST_DIR)/test/com/sun/jmx/examples/scandir/DirectoryScannerTest.java \
+ $(SAMPLE_DST_DIR)/test/com/sun/jmx/examples/scandir/ScanDirConfigTest.java \
+ $(SAMPLE_DST_DIR)/test/com/sun/jmx/examples/scandir/ScanManagerTest.java \
+ $(SAMPLE_DST_DIR)/test/com/sun/jmx/examples/scandir/TestUtils.java \
+ $(SAMPLE_DST_DIR)/test/com/sun/jmx/examples/scandir/config/XmlConfigUtilsTest.java
+
+
+all build: $(SAMPLE_FILES)
+
+$(SAMPLE_DST_DIR)/%: $(SAMPLE_SRC_DIR)/%
+ $(install-file)
+
+clean clobber:
+ $(RM) -r $(SAMPLE_DST_DIR)
+
+.PHONY: all build clean clobber
diff --git a/jdk/make/mksample/nbproject/Makefile b/jdk/make/mksample/nbproject/Makefile
new file mode 100644
index 0000000..abc326c
--- /dev/null
+++ b/jdk/make/mksample/nbproject/Makefile
@@ -0,0 +1,50 @@
+#
+# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for the nbproject sample code
+#
+
+BUILDDIR = ../..
+
+PRODUCT = java
+
+include $(BUILDDIR)/common/Defs.gmk
+
+SAMPLE_SRC_DIR = $(SHARE_SRC)/sample/nbproject
+SAMPLE_DST_DIR = $(SAMPLEDIR)/nbproject
+
+SAMPLE_FILES = \
+ $(SAMPLE_DST_DIR)/project.xml \
+
+all build: $(SAMPLE_FILES)
+
+$(SAMPLE_DST_DIR)/%: $(SAMPLE_SRC_DIR)/%
+ $(install-file)
+
+clean clobber:
+ $(RM) -r $(SAMPLE_DST_DIR)
+
+.PHONY: all build clean clobber
diff --git a/jdk/make/mksample/nio/Makefile b/jdk/make/mksample/nio/Makefile
new file mode 100644
index 0000000..a6e8fc4
--- /dev/null
+++ b/jdk/make/mksample/nio/Makefile
@@ -0,0 +1,39 @@
+#
+# Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all the samples under the nio subdirectory.
+#
+
+BUILDDIR = ../..
+PRODUCT = java
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = server
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+clobber clean ::
+ $(RM) -r $(SAMPLEDIR)/nio
diff --git a/jdk/make/mksample/nio/server/Makefile b/jdk/make/mksample/nio/server/Makefile
new file mode 100644
index 0000000..a776fa9
--- /dev/null
+++ b/jdk/make/mksample/nio/server/Makefile
@@ -0,0 +1,74 @@
+#
+# Copyright 2004-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for the nioserver sample code
+#
+
+BUILDDIR = ../../..
+
+PRODUCT = java
+
+include $(BUILDDIR)/common/Defs.gmk
+
+SAMPLE_SRC_DIR = $(SHARE_SRC)/sample/nio/server
+SAMPLE_DST_DIR = $(SAMPLEDIR)/nio/server
+
+SAMPLE_FILES = \
+ $(SAMPLE_DST_DIR)/AcceptHandler.java \
+ $(SAMPLE_DST_DIR)/Acceptor.java \
+ $(SAMPLE_DST_DIR)/B1.java \
+ $(SAMPLE_DST_DIR)/BN.java \
+ $(SAMPLE_DST_DIR)/BP.java \
+ $(SAMPLE_DST_DIR)/ChannelIO.java \
+ $(SAMPLE_DST_DIR)/ChannelIOSecure.java \
+ $(SAMPLE_DST_DIR)/Content.java \
+ $(SAMPLE_DST_DIR)/Dispatcher.java \
+ $(SAMPLE_DST_DIR)/Dispatcher1.java \
+ $(SAMPLE_DST_DIR)/DispatcherN.java \
+ $(SAMPLE_DST_DIR)/FileContent.java \
+ $(SAMPLE_DST_DIR)/Handler.java \
+ $(SAMPLE_DST_DIR)/MalformedRequestException.java \
+ $(SAMPLE_DST_DIR)/N1.java \
+ $(SAMPLE_DST_DIR)/N2.java \
+ $(SAMPLE_DST_DIR)/README.txt \
+ $(SAMPLE_DST_DIR)/Reply.java \
+ $(SAMPLE_DST_DIR)/Request.java \
+ $(SAMPLE_DST_DIR)/RequestHandler.java \
+ $(SAMPLE_DST_DIR)/RequestServicer.java \
+ $(SAMPLE_DST_DIR)/Sendable.java \
+ $(SAMPLE_DST_DIR)/Server.java \
+ $(SAMPLE_DST_DIR)/StringContent.java \
+ $(SAMPLE_DST_DIR)/URLDumper.java
+
+all build: $(SAMPLE_FILES)
+
+$(SAMPLE_DST_DIR)/%: $(SAMPLE_SRC_DIR)/%
+ $(install-file)
+
+clean clobber:
+ $(RM) -r $(SAMPLE_DST_DIR)
+
+.PHONY: all build clean clobber
diff --git a/jdk/make/mksample/scripting/Makefile b/jdk/make/mksample/scripting/Makefile
new file mode 100644
index 0000000..0fd9e87
--- /dev/null
+++ b/jdk/make/mksample/scripting/Makefile
@@ -0,0 +1,39 @@
+#
+# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all the samples under the scripting subdirectory.
+#
+
+BUILDDIR = ../..
+PRODUCT = java
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = scriptpad
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+clobber clean ::
+ $(RM) -r $(SAMPLEDIR)/scripting
diff --git a/jdk/make/mksample/scripting/scriptpad/Makefile b/jdk/make/mksample/scripting/scriptpad/Makefile
new file mode 100644
index 0000000..8918764
--- /dev/null
+++ b/jdk/make/mksample/scripting/scriptpad/Makefile
@@ -0,0 +1,74 @@
+#
+# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for the scriptpad sample code
+#
+
+BUILDDIR = ../../..
+
+PRODUCT = java
+
+include $(BUILDDIR)/common/Defs.gmk
+
+SAMPLE_SRC_DIR = $(SHARE_SRC)/sample/scripting/scriptpad
+SAMPLE_DST_DIR = $(SAMPLEDIR)/scripting/scriptpad
+
+SAMPLE_FILES = \
+ $(SAMPLE_DST_DIR)/build.xml \
+ $(SAMPLE_DST_DIR)/build.properties \
+ $(SAMPLE_DST_DIR)/README.txt \
+ $(SAMPLE_DST_DIR)/nbproject/file-targets.xml \
+ $(SAMPLE_DST_DIR)/nbproject/jdk.xml \
+ $(SAMPLE_DST_DIR)/nbproject/netbeans-targets.xml \
+ $(SAMPLE_DST_DIR)/nbproject/project.xml \
+ $(SAMPLE_DST_DIR)/src/com/sun/sample/scriptpad/Main.java \
+ $(SAMPLE_DST_DIR)/src/META-INF/manifest.mf \
+ $(SAMPLE_DST_DIR)/src/resources/conc.js \
+ $(SAMPLE_DST_DIR)/src/resources/gui.js \
+ $(SAMPLE_DST_DIR)/src/resources/Main.js \
+ $(SAMPLE_DST_DIR)/src/resources/mm.js \
+ $(SAMPLE_DST_DIR)/src/resources/scriptpad.js \
+ $(SAMPLE_DST_DIR)/src/scripts/browse.js \
+ $(SAMPLE_DST_DIR)/src/scripts/insertfile.js \
+ $(SAMPLE_DST_DIR)/src/scripts/linewrap.js \
+ $(SAMPLE_DST_DIR)/src/scripts/mail.js \
+ $(SAMPLE_DST_DIR)/src/scripts/memmonitor.js \
+ $(SAMPLE_DST_DIR)/src/scripts/memory.bat \
+ $(SAMPLE_DST_DIR)/src/scripts/memory.sh \
+ $(SAMPLE_DST_DIR)/src/scripts/memory.js \
+ $(SAMPLE_DST_DIR)/src/scripts/README.txt \
+ $(SAMPLE_DST_DIR)/src/scripts/textcolor.js
+
+
+all build: $(SAMPLE_FILES)
+
+$(SAMPLE_DST_DIR)/%: $(SAMPLE_SRC_DIR)/%
+ $(install-file)
+
+clean clobber:
+ $(RM) -r $(SAMPLE_DST_DIR)
+
+.PHONY: all build clean clobber
diff --git a/jdk/make/mksample/webservices/EbayClient/Makefile b/jdk/make/mksample/webservices/EbayClient/Makefile
new file mode 100644
index 0000000..541bd14
--- /dev/null
+++ b/jdk/make/mksample/webservices/EbayClient/Makefile
@@ -0,0 +1,63 @@
+#
+# Copyright 2006-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for the EbayClient sample code
+#
+
+BUILDDIR = ../../..
+
+PRODUCT = java
+
+include $(BUILDDIR)/common/Defs.gmk
+
+SAMPLE_SRC_DIR = $(CLOSED_SHARE_SRC)/sample/webservices/EbayClient
+SAMPLE_DST_DIR = $(SAMPLEDIR)/webservices/EbayClient
+
+SAMPLE_FILES = \
+ $(SAMPLE_DST_DIR)/src/ebay/client/MainGUIApp.java \
+ $(SAMPLE_DST_DIR)/src/ebay/client/ViewItemDetails.java \
+ $(SAMPLE_DST_DIR)/src/ebay/client/handler/RequesterCredentials.java \
+ $(SAMPLE_DST_DIR)/build.xml \
+ $(SAMPLE_DST_DIR)/build.properties \
+ $(SAMPLE_DST_DIR)/eBaySvc.wsdl \
+ $(SAMPLE_DST_DIR)/ebay.properties \
+ $(SAMPLE_DST_DIR)/jax-ws-catalog.xml \
+ $(SAMPLE_DST_DIR)/manifest.mf \
+ $(SAMPLE_DST_DIR)/index.html \
+ $(SAMPLE_DST_DIR)/nbproject/file-targets.xml \
+ $(SAMPLE_DST_DIR)/nbproject/project.xml \
+ $(SAMPLE_DST_DIR)/nbproject/jdk.xml \
+ $(SAMPLE_DST_DIR)/nbproject/netbeans-targets.xml \
+
+all build: $(SAMPLE_FILES)
+
+$(SAMPLE_DST_DIR)/%: $(SAMPLE_SRC_DIR)/%
+ $(install-file)
+
+clean clobber:
+ $(RM) -r $(SAMPLE_DST_DIR)
+
+.PHONY: all build clean clobber
diff --git a/jdk/make/mksample/webservices/EbayServer/Makefile b/jdk/make/mksample/webservices/EbayServer/Makefile
new file mode 100644
index 0000000..a0481cd
--- /dev/null
+++ b/jdk/make/mksample/webservices/EbayServer/Makefile
@@ -0,0 +1,64 @@
+#
+# Copyright 2006-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for the EbayServer sample code
+#
+
+BUILDDIR = ../../..
+
+PRODUCT = java
+
+include $(BUILDDIR)/common/Defs.gmk
+
+SAMPLE_SRC_DIR = $(CLOSED_SHARE_SRC)/sample/webservices/EbayServer
+SAMPLE_DST_DIR = $(SAMPLEDIR)/webservices/EbayServer
+
+SAMPLE_FILES = \
+ $(SAMPLE_DST_DIR)/src/ebay/server/Main.java \
+ $(SAMPLE_DST_DIR)/src/ebay/server/Ebay.java \
+ $(SAMPLE_DST_DIR)/src/ebay/server/ImageProvider.java \
+ $(SAMPLE_DST_DIR)/build.xml \
+ $(SAMPLE_DST_DIR)/build.properties \
+ $(SAMPLE_DST_DIR)/eBaySvc.wsdl \
+ $(SAMPLE_DST_DIR)/manifest.mf \
+ $(SAMPLE_DST_DIR)/index.html \
+ $(SAMPLE_DST_DIR)/nbproject/project.xml \
+ $(SAMPLE_DST_DIR)/nbproject/jdk.xml \
+ $(SAMPLE_DST_DIR)/nbproject/netbeans-targets.xml \
+ $(SAMPLE_DST_DIR)/nbproject/file-targets.xml \
+ $(SAMPLE_DST_DIR)/images/8d_2.jpg \
+ $(SAMPLE_DST_DIR)/images/sun_blade_1000_h400px.jpg \
+ $(SAMPLE_DST_DIR)/images/Sun_Fire_E20K_Server.jpg \
+
+all build: $(SAMPLE_FILES)
+
+$(SAMPLE_DST_DIR)/%: $(SAMPLE_SRC_DIR)/%
+ $(install-file)
+
+clean clobber:
+ $(RM) -r $(SAMPLE_DST_DIR)
+
+.PHONY: all build clean clobber
diff --git a/jdk/make/mksample/webservices/Makefile b/jdk/make/mksample/webservices/Makefile
new file mode 100644
index 0000000..208db3c
--- /dev/null
+++ b/jdk/make/mksample/webservices/Makefile
@@ -0,0 +1,40 @@
+#
+# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all the samples under the webservices subdirectory.
+#
+
+BUILDDIR = ../..
+PRODUCT = java
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = EbayClient EbayServer
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+clobber clean ::
+ $(RM) -r $(SAMPLEDIR)/webservices
diff --git a/jdk/make/netbeans/README b/jdk/make/netbeans/README
new file mode 100644
index 0000000..9c71319
--- /dev/null
+++ b/jdk/make/netbeans/README
@@ -0,0 +1,632 @@
+Working on OpenJDK using NetBeans
+ This note describes how to work on the OpenJDK from NetBeans. We've
+ provided several NetBeans projects as starting points. Below we'll
+ describe how to use them, as well as how to create your own.
+
+Getting Started
+ In addition to the source bundle for Open JDK, you'll need to download
+ and install copies of the JDK and of NetBeans 6. And if you want to run
+ tests on the JDK (you do want to run tests, right?), you'll need to
+ install the jtreg test harness.
+
+ In this note, when pathnames are not fully specified, they should be
+ interpreted as being relative to the directory containing this README
+ and the NetBeans projects themselves.
+
+ The JDK build process is largely make-based, and is not
+ exceptionally tolerant of pathnames with spaces in them (such as
+ "Program Files". Please be sure to install everything in a
+ directories whose paths don't have any spaces!
+
+ Downloading the JDK
+ You've probably done this a million times. Download and install it
+ from http://java.sun.com/javase
+
+ Downloading the OpenJDK sources
+ Since you're reading this, d you've already downloaded the OpenJDK
+ source bundle. Later in this document we'll refer to the location
+ where you installed the Open JDK sources as *install-dir*.
+
+ Downloading a pre-built, JDK 7
+ This will be necessary to do builds of some of the projects. In
+ general, you want to download and install a pre-built JDK that
+ corresponds to the OpenJDK sources you download. Building the entire
+ OpenJDK depends on a few parts of the pre-built JDK. Get this from
+ http://download.java.net/jdk7/binaries
+
+ Note: For working on certain projects, like JMX and JConsole, you
+ may find convenient to use a pre-built version of JDK 7 (or
+ OpenJDK) rather than building your own. This will allow you
+ to build only that part of the OpenJDK sources which correspond
+ to that project.
+
+ NetBeans 6
+ Yep, NetBeans *6*. Nope, not FCS'd yet. We're on the edge here,
+ enjoy it! Get the latest working development build of NetBeans 6
+ from http://netbeans.org
+
+ jtreg
+ "jtreg" is the test harness for running OpenJDK's regression tests.
+ Get it from http://openjdk.java.net/jtreg
+
+ Ant
+ NetBeans comes with ant, but if you use a separately-installed copy
+ please make sure that it is at least version 1.7.0.
+
+Configuring
+ Building OpenJDK is hard and complex. No, strike that. While it's not
+ exactly "easy", we've got it down to *relatively* small set of
+ properties you need to set.
+
+ The NetBeans projects provided here share a fair amount of common
+ structure. They share properties values where it makes sense. Each
+ project loads properties from these properties files, in this order
+
+ ${basedir}/nbproject/private/build.properties
+ $HOME/.openjdk/${ant.project.name}-build.properties
+ $HOME/.openjdk/build.properties
+ ${basedir}/build.properties
+
+ (${basedir} refers to the directory containing a particular NetBeans
+ project.) The first time a property defined determines value: it is
+ *not* overridden if it is read from properties files read later. The net
+ result is that by carefully choosing where to define a property, you can
+ have it for a specific project, all uses of a specific project (useful
+ if you work on multiple copies of the OpenJDK sources), all projects, or
+ only projects in a specific sandbox.
+
+ With that in mind, please set the following properties. Presuming you
+ want the same values for all your work, set them in
+ $HOME/.openjdk/build.properties.
+
+ * bootstrap.jdk
+ Set to the location where you installed JDK 7.
+
+ * jtreg.home
+ Set to the location where you installed jtreg.
+
+ * make.options
+ Some of the projects invoke "make", since they compile native code.
+ The make.options property is for passing information about what you
+ installed where to make. Change the paths to fit your particular
+ situation:
+
+ make.options=\
+ ALT_BOOTDIR=/home/me/bin/jdk1.6.0 \
+ ALT_BINARY_PLUGS_PATH=/home/me/bin/openjdk-binary-plugs \
+ ALT_JDK_IMPORT_PATH=/home/me/bin/jdk1.7.0 \
+ OPENJDK=true
+
+ The trailing '\' are important, so that make gets the above as a
+ single set of options.
+
+ You might want to add additional additional options: see the README
+ for the project you're using for more information. And see
+ *install-dir*/jdk/make/README-builds.html
+ to read much more about building the JDK.
+
+ Windows-specific configuration
+ First, please note that the entire JDK cannot currently be built on
+ Windows platforms. This will likely limit your ability to build
+ make-based projects. See
+ *install-dir*/jdk/make/README-builds.html
+ for full information on issues with building on the Windows platform.
+
+ That said, there are two ways to work with the Windows-required settings
+ for the Microsoft tools. Either:
+
+ * Set environment variables values in Windows
+ Doing so means accessing the System control panel in Windows, and
+ setting the environment variables there.
+
+ By doing so, you can launch NetBeans by double-clicking its icon,
+ and the environment variable values will be available.
+
+ * Set environment variable values in a shell
+ Doing so means adding the settings to an init file (e.g. .bashrc,
+ .cshrc, etc.) or a file that you source before running NetBeans. In
+ this case, you'll have to launch NetBeans from the command line in a
+ shell in which you've set the environment variables.
+
+ In either case, the end result should be that the settings are available
+ to the make-based build process when it runs from within NetBeans.
+
+ The make-based builds presumes that you're using cygwin, and expects to
+ find "make" in c:\cygwin\bin\make. If you've installed cygwin elsewhere,
+ set "make" in a properties file.
+
+ Configuring Project Properties
+ A note of caution is in order: These are NetBeans *freeform* projects.
+ If you use the NetBeans GUI to examine them, things are likely to not
+ look "right". Please don't edit them there, please instead use a text
+ editor.
+
+ Locale Requirements
+ To build the Open JDK sources, be certain that you are using the "C"
+ locale on Unix (R) platforms, or "English (United States)" locale on
+ Windows.
+
+Platforms and architectures, oh my!
+ The Open JDK can be built for a variety of operating system platforms
+ and hardware architectures. The resulting builds are always placed in a
+ directory which contains the platform and architecture as part of the
+ pathname, as in *platform*-*arch*. For example, if you build the jdk
+ project on a Linux platform running on x86 hardware, the resulting build
+ will be in:
+
+ *install-dir*/jdk/build/linux-i586
+
+ We've provided support for some platforms and architectures in
+ common/architectures. Add another, if your needs require it.
+
+Provided NetBeans projects
+ This section describes the NetBeans projects that help you work on
+ particular parts of the JDK. While they're largely similar in structure
+ and should work the way you expect NetBeans projects to work: edit,
+ build, test, etc. But there are some differences. They don't all support
+ the same targets (e.g., there's nothing to run in jarzip project).
+
+ Some projects are built by invoking make, since they involve compilation
+ of native code or other activities that cannot be done by javac. We call
+ these "make-based", and call all others "ant-based".
+
+ They all are configured by way of a build.properties file, which
+ specifies what subdirectories of the JDK sources they manipulate, what
+ directories contain their tests, whether they use make or ant, etc.
+
+ The very first time you open any one of these projects on set of Open
+ JDK sources, NetBeans will scan the entire set of sources, not just
+ those for the project you opened. This will take a few minutes, but will
+ ensure that Go To Type, Go To Source, and so on work as expected. Later,
+ when you open other projects on the same Open JDK sources, there will be
+ at most a slight delay.
+
+ There's a README accompanying each project. Most are text files, which
+ you can Open in NetBeans, some are HTML files, in which case unless you
+ enjoy reading raw HTML, you're better off choosing the *View* menu item
+ from the context menu, which will display the README in your web
+ browser.
+
+ Finally, note that these projects were all created by different people,
+ and are while some attempt has been made to make them look and behave
+ the same, they are maintained separately and will vary somewhat.
+
+ The projects currently provided are:
+
+ jdk (directory "jdk")
+ A convenient starting point for the other projects, and from which
+ you can build the entire OpenJDK. Please note that depending on your
+ hardware, this could take a *very* long time. The results of the
+ build are in *install-dir*/jdk/build/*platform*-*arch*.
+
+ world (directory "world")
+ This project builds both the Hotspot VM and all of JavaSE. Please
+ note that pretty much regardless of your hardware, this *will* take
+ a long time, and use *lots* of disk space (more than 3GB). The
+ results of the build are in
+ *install-dir*/control/build/*platform*-*arch* and
+ *install-dir*/control/build/*platform*-*arch*-fastdebug.
+
+ Consult the project's README file for details.
+
+ AWT & Java2d (directory "awt2d")
+ For working on AWT and Java2d. Supports running the Font2DTest demo.
+
+ This is a make-based project: In order to build this project, you
+ should build the jdk project first, since AWT and Java2d include
+ native code.
+
+ JConsole (directory "jconsole")
+ For working on JConsole. Creates ../dist/lib/jconsole.jar. Supports
+ running and debugging JConsole.
+
+ This ant-based project does *not* require that you build the jdk
+ project first, provided that you use a pre-built version of JDK 7.
+
+ Java (TM) Management Extensions (JMX(TM)) API (directory "jmx")
+ For working on JMX source code. Creates ../dist/lib/jmx.jar.
+
+ This ant-based project does *not* require that you build the jdk
+ project first, provided that you use a pre-built version of JDK 7.
+
+ Jar & Zip (directory "jarzip")
+ For working on jar & zip. It builds the zip library (including
+ native code), the jar library, and the jar tool. Creates an
+ executable jar program in ../build/*platform*-*arch*/bin/jar.
+
+ This is a make-based project: In order to build this project, you
+ should build the jdk project first, since AWT and Java2d include
+ native code.
+
+ Swing (directory "swing")
+ For working on Swing. Creates ../dist/lib/swing.jar. Supports
+ running and debugging the SampleTree demo.
+
+ This ant-based project does *not* require that you build the jdk
+ project first, provided that you use a pre-built version of JDK 7.
+
+ In addition, there are projects for building the compiler, javadoc,
+ and related tools, in the OpenJDK langtools component. These
+ projects are separate from those described here, and have their
+ own set of guidelines and conventions. For more details, see the
+ README files in make/netbeans in the OpenJDK langtools component.
+
+Running Tests
+ We use the jtreg test harness, described more fully at
+ http://openjdk.java.net/jtreg
+
+ The OpenJDK tests are in the default Java package, are public classes,
+ and have a "static void main(String[] args)" with which they are
+ invoked. Some tests are actually shell scripts, which might compile
+ code, etc. jtreg is quite flexible.
+
+ To run tests for a project, use *Test Project* from NetBeans. From the
+ command line, you can invoke "ant jtreg" on any individual project's
+ build.xml file.
+
+ In either NetBeans of on the command line, jtreg prints summary output
+ about the pass/fail nature of each test. An HTML report of the entire
+ test run is
+
+ ../build/*platform*-*arch*/jtreg/*ant-project-name*/JTreport/report.html
+
+ In that same JTreport directory are also individual HTML files
+ summarizing the test environment, test passes and failures, etc.
+
+ More detail on any individual test is under
+
+ ../build/*platform*-*arch*/jtreg/*ant-project-name*/JTwork.
+
+ For example, details about the awt/Modal/SupportedTest/SupportedTest
+ test are under the JTwork directory at the same pathname as the test
+ itself in a ".jtr" file. For example:
+
+ ../build/*platform*-*arch*/jtreg/*ant-project-name*/JTwork/awt/Modal/SupportedTest/SupportedTest.jtr
+
+ Sometimes you will see that running jtreg has resulted in a failure.
+ This does not always mean that a test has an error in it. Jtreg
+ distinguishes between these two cases. There are a number of tests that
+ are "ignored", and not run, and these are reported as failures.
+
+ You can run a single test by right clicking on it and choosing *Run
+ File* from the context menu. Similarly, you can debug a single test by
+ choosing *Debug File*.
+
+Debugging
+ Debugging is enabled by default in ant-based projects, as if
+ "-g:lines,vars,source" were given. You can alter these settings via
+ entries in one of the configuration properties files. For example:
+
+ javac.debug=false
+ javac.debuglevel=<debug level options>
+
+ To debug a project or test, use NetBeans in the normal way, with *Debug
+ Project* or *Debug File*. Note that not all projects provide a target
+ that can be debugged, but tests can be debugged.
+
+Creating Javadoc
+ You can create Javadoc for any of the projects: just choose *Generate
+ Javadoc for Project* from the NetBeans menu. Your default browser will
+ open up, displaying the just-generated javadoc.
+
+ Javadoc gets generated into a separate subdirectory for each project.
+ For example, the Jar & Zip project's javadoc gets generated in
+
+ ../build/*platform*-*arch*/jtreg/*ant-project-name*/javadoc/jarzip
+
+Cleaning projects
+ Each project can of course be cleaned. Make-based and ant-based projects
+ differ a little in what exactly gets cleaned. In both cases, all jtreg
+ results and javadoc are removed.
+
+ In ant-based projects, project-specific files as determined by the
+ project's build.properties file are removed from the classes and gensrc
+ directories that are under ../build/*platform*-*arch*.
+
+ In make-based projects, "make clean" is run in the same directories as
+ "make all" is run when building the project.
+
+ Please note that the jdk project is "special" with respect to
+ cleaning: in this case, the entire ../build directory is removed.
+ Similar for the world project.
+
+Creating your own NetBeans project
+ The project's we've provided are hopefully a useful starting point, but
+ chances are that you want to work on something else. This section will
+ describe how to select an existing project, and then adapt it to your
+ needs.
+
+ Considerations
+ The first consideration is whether or not the code in which you're
+ interested needs anything beyond javac and copying of resources to
+ build. If so, then you'll need to create a make-based project. If not,
+ an ant-based project is possible. See the project descriptions above to
+ learn which are make-based, and which are ant-based.
+
+ The second consideration is to consider the files that you'll need. Each
+ project is defined by 3 files:
+
+ * build.xml
+ This is the ant build script. For a make-based project, they tend to
+ have a target for "make clean" and another for "make all", each of
+ which invokes "make-run" in the same set of directories. Take a look
+ at jarzip/build.xml for an example.
+
+ For an ant-based project, there might be nothing, with all the work
+ done via the declaration of properties in the build.properties file.
+ Take a look at jconsole/build.xml for an example, and notice how it
+ overrides the -pre-compile and -post-compile targets that are
+ defined in common/shared.xml (where they are defined to do nothing).
+
+ * build.properties
+ This file defines the directories (and possibly files) that are
+ included in and excluded from. Basically, a file is considered to be
+ in a project if it is mentioned in the includes list, or is
+ contained under a directory mentioned in that list, *unless* it is
+ explicitly excluded or is contained under a directory that is
+ excluded. Take a look awt2d/build.properties for an example.
+
+ * nbproject/project.xml
+ This file defines a project for NetBeans for a "freeform" project.
+ Each declares several entity references, which are used later in the
+ project. For an example, see javadoc/nbproject/project.xml, which is
+ an ant-based project. Compare that with
+ jarzip/nbproject/project.xml, which is make-based. Not much
+ difference! That's because while the jarzip project is make-based,
+ it does not have any platform-specifc native code. Contrast that
+ with awt2d/nbproject/project.xml, which does have native code;
+ notice that it uses platform-specific entity references.
+
+ In summary, we recommend exploring the given projects, and choosing one
+ that most closely suits our needs.
+
+ Example: A project for working on collections
+ Let's create a project to work with on the collections classes. There's no native
+ code here, so an ant-based project will do. Therefore, the jconsole
+ project is a reasonable project to use as a starting point.
+
+ Clone the existing project
+ Make a directory for the collections project next to the existing projects:
+
+ % mkdir -p collections/nbproject
+
+ Copy files from the jconsole project:
+
+ % cp jconsole/build.properties collections
+ % cp jconsole/build.xml collections
+ % cp jconsole/nbproject/project.xml collections/nbproject
+
+ Change the set of files included in the project
+ The collections sources are all under one directory, and we want to include
+ them all. The same is true of the tests. So edit
+ collections/build.properties so that it contains these lines:
+
+ includes=\
+ java/util/
+ excludes=\
+ java/util/Calendar.java,\
+ java/util/jar/,\
+ java/util/logging/,\
+ java/util/prefs/,\
+ java/util/regex/,\
+ java/util/spi/,\
+ java/util/zip/,\
+ **/*-XLocales.java
+ jtreg.tests=\
+ java/util/**/*Collection/ \
+ java/util/**/*Map/ \
+ java/util/**/*Set/ \
+ java/util/**/*List/
+
+ Notice the trailing "/" in some of those pathnames: that tells NetBeans to
+ treat the path as a directory and include (or exclude) everything beneath
+ it in the hierarchy. Note also how we include java/util, but then exclude
+ several directories under that which are not related to collections.
+
+ The build.xml for collections is about as simple as can be. First, change the
+ name of the project:
+
+ <project name="collections" default="build" basedir=".">
+
+ Then remove the -pre-compile target from the build.xml. Change the
+ -post-compile target to create collections.jar without any manifest, and
+ to only contain the collections-related classes. The jar task now looks
+ like this:
+
+ <jar destfile="${dist.dir}/lib/collections.jar">
+ <fileset dir="${classes.dir}">
+ <include name="java/util/*.class"/>
+ <exclude name="java/util/Calendar*.class"/>
+ </fileset>
+ </jar>
+
+ Also, change the clean target to remove collections.jar instead of
+ jconsole.jar.
+
+ Now edit project.xml file. NetBeans uses an internal name and a
+ user-visible name, both of which should be changed:
+
+ <name>Collections</name> <!-- Customized -->
+
+ <property name="name">collections</property> <!-- Customized -->
+
+ Inside of <ide-actions>, you'll see actions defined for "run" and
+ "debug". The Open JDK sources don't include any interesting Collections
+ demos, but leave these here for now: Chances are you'll find or create
+ some collections app of your own, and want to run and or debug it.
+
+ Now, open the Collections project in NetBeans. You'll find that it operates
+ just like all the other projects.
+
+ If/when you want to have this project run a collections demo, change the run
+ target in collections/build.xml to invoke it in whatever manner is appropriate
+ for the app. From NetBeans, you should be able to run and debug the app,
+ including setting breakpoints in collections code.
+
+Appendix 1: Customizations
+ There are several ways to customize NetBeans projects. These projects
+ share a common structure, based on common/shared.xml and
+ common/make.xml. Because of that sharing, some mechanisms described
+ below apply to most any project.
+
+ Several properties can be user-defined (and several should not be
+ user-defined!). There are different properties files read. Some default
+ targets can be overridden.
+
+ Property files
+ When projects are started, and when when ant runs (whether from NetBeans
+ or the command line), these properties files are loaded in the order
+ shown:
+
+ ${basedir}/nbproject/private/build.properties
+ $HOME/.openjdk/${ant.project.name}-build.properties
+ $HOME/.openjdk/build.properties
+ ${basedir}/build.properties
+
+ Recall that with ant, once a property is defined, its value cannot be
+ changed, so it's "first one wins".
+
+ To set or change a property for all your projects, put the change into
+ $HOME/.openjdk/build.properties. This will affect all projects,
+ regardless of how many copies of the Open JDK sources you have
+ installed.
+
+ Let's say you have 2 copies of the Open JDK sources installed on your
+ machine. To set or change a property for only the jconsole projects, but
+ for both of them, make the change in
+ $HOME/.openjdk/${ant.project.name}-build.properties. If you wanted to
+ make the change for only one of them, do it in that project's
+ ${basedir}/build.properties or
+ ${basedir}/nbproject/private/build.properties.
+
+ Note that the ${basedir}/build.properties file is provided as part of
+ the Open JDK sources. If you want to make a change for a particular
+ project, you can do so there. To be sure that you don't ever
+ accidentally check it in to the Open JDK sources, you might prefer to
+ change it in ${basedir}/nbproject/private/build.properties.
+
+ User-definable Properties
+ You can provide your own definitions for the properties listed below. We
+ don't recommend overriding the definitions of other properties.
+
+ The following two properties should be set before you try to use the
+ projects with NetBeans or ant:
+
+ * bootstrap.jdk
+ Default: None. Please set this, normally in
+ $HOME/.openjdk/build.properties.
+
+ * jtreg.home
+ Default: None. Please set this, normally in
+ $HOME/.openjdk/build.properties.
+
+ These options are for configuring the behavior of make:
+
+ * use.make
+ Default: Not set. Set this, normally in ${basedir}/build.properties,
+ for a project which is make-based.
+
+ * make
+ Default: The right make for the platform, at the normal location, set
+ in *install-dir*/jdk/make/netbeans/common/make.xml
+
+ * make.options
+ Default: Empty string. Set this to any options you want to pass to
+ make, normally in ${basedir}/build.properties.
+
+ The remaining options are for use at your discretion:
+
+ * javac.options
+ Default: -Xlint
+
+ * javac.debug
+ Default: true
+
+ * javac.debuglevel
+ Default: lines,vars,source
+
+ * javadoc.options
+ Default: Empty string. Some projects will need to set this to
+ increase the heap for running javadoc. For example, see the jconsole
+ project.
+
+ * javadoc.packagenames
+ Default: "none". Set this only if your project has packages that
+ should be javadoc'd which are outside of those listed in the javadoc
+ target's packageset. See the jconsole project for an example.
+
+ * jtreg.tests
+ Default: None. Set this to a list of tests and/or directories
+ containing regression tests, normally in
+ ${basedir}/build.properties.
+
+ * jtreg.options
+ Default: Empty string. See http://openjdk.java.net/jtreg
+
+ * jtreg.vm.options
+ Default: Empty string. See http://openjdk.java.net/jtreg
+
+ * jtreg.samevm
+ Default: false. See http://openjdk.java.net/jtreg
+
+ User-overridable Targets
+ The following targets are provided for your convenience in customizing
+ various standard actions of the build process. The default action for
+ each one is to do nothing.
+
+ These come in pairs, allowing your scripts to take some action before or
+ after a standard action.
+
+ * -pre-init
+ Runs before any other initialization has been done.
+
+ * -post-init
+ Runs before after all other initialization has been done.
+
+ * -pre-compile
+ Runs before compilation, whether via ant or make. Note that in the
+ case of make, it is before the -build-make target has run, not after
+ each individual make-run has run.
+
+ * -post-compile
+ Runs after compilation, whether via ant or make.
+
+ * -pre-jtreg
+ Runs before regression tests are run.
+
+ * -post-jtreg
+ Runs before after regression tests are run.
+
+ In a make-based project, you should override these targets to do the
+ build and clean actions required of your project.
+
+ * -build-make
+ * -clean-make
+
+Known Issues
+ Tests won't run: waiting for lock
+ Occasionally when running tests, there will be a delay, followed by a
+ message like this:
+ Waiting to lock test result cache for
+ /tmp/jdk/build/linux-i586/jtreg/jconsole/JTwork for 20 seconds
+ The workaround is to stop the tests, rm -rf the offending jtreg/<project>
+ directory by hand, and re-run the tests.
+
+ Can't run nor debug a single test in the JConsole test
+ In most projects, you can run a single test by opening it in the editor,
+ and choosing Run File from the context menu. If you try this with the a
+ JConsole test, instead you'll see that *all* tests from *all* projects
+ are run. The workaround is to not try to run a single JConsole test.
+ Debugging is similarly problematic (both running and debugging use the
+ same underlying infrastructure).
+
+ If you do Run File a JConsole tests, you can always stop them by pressing
+ the stop button in the NetBeans output window. But you'll be surprised to
+ learn that they are actually still running in the background. The only
+ way out of this situation is to exit NetBeans. A few more tests will run,
+ but after restarting NetBeans things will be OK.
+
+Attribution
+ UNIX is a registered trademark in the United States and other countries,
+ exclusively licensed through X/Open Company, Ltd.
+
diff --git a/jdk/make/netbeans/awt2d/README b/jdk/make/netbeans/awt2d/README
new file mode 100644
index 0000000..a990726
--- /dev/null
+++ b/jdk/make/netbeans/awt2d/README
@@ -0,0 +1,224 @@
+Working on AWT and Java2D code with NetBeans
+
+ This project includes most of Java2D and AWT-related files,
+ allows easy navigation and builds from within NetBeans.
+
+ Since both AWT and Java2D have lots of native code, this
+ project uses "make" targets for building.
+
+ Unfortunately currently this project doesn't support
+ working with native code. Meaning, there is no navigation, code
+ completion, refactoring, etc.
+ In the future we will provide native code support.
+
+ You can certainly install the C/C++ pack for NetBeans 6.0
+ once it becomes available, or use any other editor for
+ working with C/C++ files.
+
+ In order to use this project from within NetBeans you will have
+ to perform a full jdk build first.
+
+Here are the steps:
+ 1. setup your jdk build environment as described in
+ other documents (see build documentation)
+
+ 2. perform a full jdk build (preferably a FASTDEBUG build,
+ as it simplifies the debugging - the classes and object files
+ will be built with the debug information).
+ You only need to build jdk's "all" target:
+ #> cd jdk/make
+ #> make all > build.log 2>&1
+
+ 3. set "make" and "make.options" properties in your
+ ~/.openjdk/build.properties file (see the main README
+ file for more information on property files)
+ to set up the environment in NetBeans.
+
+ To get a list of variables you most likely will need to override
+ to make the the build work in NetBeans, you can do something like this
+ (on Windows):
+ #>env | grep ALT
+ ALT_JDK_IMPORT_PATH=c:/devtools/java/jdk1.7.0
+ ALT_DXSDK_PATH=c:/devtools/DirectX/DXSDK_Dec06
+ ALT_BOOTDIR=c:/DevTools/java/jdk1.6.0
+
+ If your build is a FASTDEBUG build, don't forget
+ to set FASTDEBUG=true in the property file as well so that what you
+ have built from the terminal matches what will be built from NetBeans.
+
+ Set "make.options" in your build.properties
+ accordingly:
+ make.options=\
+ ALT_JDK_IMPORT_PATH=c:/devtools/java/jdk1.7.0 \
+ ALT_DXSDK_PATH=c:/devtools/DirectX/DXSDK_Dec06 \
+ ALT_BOOTDIR=c:/DevTools/java/jdk1.6.0 \
+ FASTDEBUG=true
+ make=c:/devtools/cygwin/bin/make
+
+ 4. Windows only: make sure you either call vcvars32.bat
+ file which sets the compiler environment
+ (typically located in <YourVisualStudioInstallDir>/VC7/bin)
+ and start NetBeans from the same terminal,
+ or make Visual Studio register its environment
+ variables globally.
+ (When building on 64-bit Windows platform, use setenv.cmd
+ from Platform SDK instead of vcvars32, as described in the
+ build documentation)
+
+ 5. Now you can launch NetBeans
+
+Notes on building the project from NetBeans
+
+ If you work only with Java files, you can compile them
+ with "Compile Single File" target ("F9" by default), the ant build
+ will compile the class files into the correct directory automatically.
+
+ However, if you touched any of C/C++ files,
+ you will need to use "build main project" ("F11") which launches
+ "make" on a set of directories.
+
+ Same goes if you touched a Java file which has native
+ methods. You will need to run the build so that
+ "javah" can generate the JNI header files used by
+ the native code.
+
+Demos
+
+ The default run target for this project is Font2DTest,
+ which is launched with the runtime you built.
+
+ You can also start other demos by selecting a demo
+ in the Project or Files view and choosing "Run" from
+ the menu.
+
+ In particular, there is a J2DBench demo project,
+ which is a Java2D benchmark. To run it,
+ select java2d.J2DBench/build.xml node in the
+ "Projects" explorer and execute "Run" target.
+ For more information on this benchmark, see
+ the project's README file in the "Files" view.
+
+Notes on using CND (C/C++ pack) with this project and NetBeans.
+
+ As mentioned above currently a project for working with native code is not
+ provided. However, you can set it up by yourself if you have
+ access to CND pack for NetBeans 6.0.
+
+ First, install CND as described here (this is a page for CND 5.5,
+ there likely will be one for 6.0 as well):
+ http://www.netbeans.org/community/releases/55/cnd-install.html
+ and make sure everyting works it works.
+
+ Then, create a new C/C++ project of "from existing code" type (see page
+ mentioned above for examples). The project should be located in the same
+ directoryas this project is - on the same level. Call it something like
+ "awt2d-native-${platform}-${arch}". So, for example, you may have
+ jdk/make/netbeans/awt2d
+ jdk/make/netbeans/awt2d-native-windows-i586
+
+ Specify the top level Makefile (jdk/make/Makefile), even though
+ you will not be using, as the Java awt2d project is set up
+ for building the workspace (thus make sure it's the default project,
+ so when you hit "Build Project" it's awt2d one that's chosen).
+
+ The most important thing is to specify the directories which will
+ be included into this project, the defines, and the directories for
+ include files.
+ This will enable code completion and limited navigation.
+
+ Using the project wizard, select the source directories you're interested in.
+
+ For example,
+ src/share/native/sun/java2d
+ src/windows/native/sun/java2d
+ ....
+ (this will recursively include the subdirectories)
+
+ Then set the list of the includes required by CND to enable code assistance.
+ You can get a complete list of include directories by looking at your
+ build log file and checking what directories are included with "-I" when
+ the files you're interesed in are built (you can probably devise some
+ script to generate the list of include files relative to the native
+ cnd project directory, and the list of defines passed to the compiler)
+
+ For example, on Windows x86, you might have something like this
+ (a somewhat complete list of awt and 2d native directories on windows):
+
+ ../../src/share/javavm/export;
+ ../../src/share/javavm/include;
+ ../../src/share/native/common;
+ ../../src/share/native/sun/awt/debug;
+ ../../src/share/native/sun/awt/image/cvutils;
+ ../../src/share/native/sun/awt/image;
+ ../../src/share/native/sun/awt/medialib;
+ ../../src/share/native/sun/awt;
+ ../../src/share/native/sun/font/bidi;
+ ../../src/share/native/sun/font/layout;
+ ../../src/share/native/sun/font;
+ ../../src/share/native/sun/java2d/cmm/lcms;
+ ../../src/share/native/sun/java2d/cmm;
+ ../../src/share/native/sun/java2d/loops;
+ ../../src/share/native/sun/java2d/opengl;
+ ../../src/share/native/sun/java2d/pipe;
+ ../../src/share/native/sun/java2d;
+ ../../src/windows/javavm/export;
+ ../../src/windows/native/common;
+ ../../src/windows/native/sun/awt;
+ ../../src/windows/native/sun/java2d/d3d;
+ ../../src/windows/native/sun/java2d/opengl;
+ ../../src/windows/native/sun/java2d/windows;
+ ../../src/windows/native/sun/java2d;
+ ../../src/windows/native/sun/windows;
+ ../../build/windows-i586/tmp/sun/sun.awt/awt/CClassHeaders;
+ ../../build/windows-i586/tmp/sun/sun.awt/awt/obj;
+ ../../build/windows-i586/tmp/sun/sun.awt/awt/obj_gO;
+ ../../build/windows-i586/tmp/sun/sun.awt/jpeg/CClassHeaders;
+ ../../build/windows-i586/tmp/sun/sun.awt/splashscreen/CClassHeaders;
+ ../../build/windows-i586/tmp/sun/sun.font/fontmanager/CClassHeaders;
+ ../../build/windows-i586/tmp/sun/sun.font/t2k/CClassHeaders;
+ C:/DevTools/DirectX/DXSDK_Dec06/Include;
+ C:/devtools/VS2003/SDK/v1.1/include;
+ C:/devtools/VS2003/VC7/ATLMFC/INCLUDE;
+ C:/devtools/VS2003/VC7/INCLUDE;
+ C:/devtools/VS2003/VC7/PlatformSDK/include;
+ C:/devtools/VS2003/VC7/PlatformSDK/include/prerelease;
+
+ (you can format this into a single line with ';' delimiters and paste it
+ into the text field instead of entering them one by one)
+
+ Note that most paths are relative to the native project directory -
+ this helps if you decide to relocate the workspace later. The ones that
+ aren't relative are paths to external include directories, like those
+ of the Platform SDK, DirectX SDK.
+ On Unix platforms these may be directories like /usr/include.
+
+ The parser must know some defines to correctly parse the source files,
+ these can also be obtained from the log file. For example, on Windows
+ x86 with debugging enabled, the defines would be something like this:
+ D3D_OVERLOADS; UNICODE; _UNICODE; WIN32; IAL; _LITTLE_ENDIAN; WIN32; _X86_;
+ x86; WIN32_LEAN_AND_MEAN; INTERNAL_BUILD; JDK_MAJOR_VERSION='"1"';
+ JDK_MINOR_VERSION='"7"'; RELEASE=1.7.0-internal; DEBUG="true"
+
+ (again, format it into a single line with '; ' delimiter - note the
+ space after ';' - and paste into the corresponding text field)
+
+ Note that the list of include directories will be different on different
+ platforms and architectures - consult you build log file.
+
+ After the project is created a loaded, you may want to check the list
+ of include files which weren't found (right-click on the native
+ project root in Projects exprorer, and select "View failed #include Directives"
+ from the popup menu. Update the inlcude directories list accordingly.
+
+ You can later create a different configuration for non-debug build,
+ just make a copy of your current configuration - call it ${arch}-debug
+ (in the native project's Properties dialog) and remove "DEBUG=true" from
+ the list of defines.
+
+ Note that with both Java and native projects opened the default
+ heap size NetBeans starts with might not be sufficient for comfortable work,
+ so you may need to increase it. You can do it either from the command line
+ or by editing your ~/.netbeans/dev/etc/netbeans.conf file and adding
+ something like this:
+ -J-Xms312m -J-Xmx512m -J-XX:PermSize=128m -J-XX:MaxPermSize=200m
+ to netbeans_default_options property.
diff --git a/jdk/make/netbeans/awt2d/build.properties b/jdk/make/netbeans/awt2d/build.properties
new file mode 100644
index 0000000..6189729
--- /dev/null
+++ b/jdk/make/netbeans/awt2d/build.properties
@@ -0,0 +1,76 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+includes=\
+ com/sun/java2d/ \
+ com/sun/image/ \
+ com/sun/imageio/ \
+ java/awt/ \
+ javax/imageio/ \
+ javax/print/ \
+ sun/dcpr/ \
+ sun/image/ \
+ sun/awt/ \
+ sun/splashscreen/ \
+ sun/xawt/ \
+ sun/headless/ \
+ sun/font/ \
+ sun/jpeg/ \
+ sun/cmm/ \
+ sun/jawt/ \
+ sun/text/ \
+ sun/java2d/ \
+ sun/print/
+excludes=\
+ java/awt/doc-files/ \
+ java/awt/im/ \
+ sun/awt/im/ \
+ sun/awt/resources/ \
+ sun/print/resources/
+demos=\
+ java2d/J2DBench/src/ \
+ java2d/J2DBench/options/ \
+ java2d/J2DBench/build.xml \
+ jfc/
+jtreg.tests=\
+ java/awt/ \
+ javax/imageio/ \
+ javax/print/ \
+ sun/awt/ \
+ sun/java2d/ \
+ closed/java/awt/ \
+ closed/javax/imageio/ \
+ closed/javax/print/ \
+ closed/sun/awt/ \
+ closed/sun/java2d/
+jtreg.options=-automatic
+use.make=true
+javadoc.options=-J-Xmx256m
diff --git a/jdk/make/netbeans/awt2d/build.xml b/jdk/make/netbeans/awt2d/build.xml
new file mode 100644
index 0000000..fa1ecc6
--- /dev/null
+++ b/jdk/make/netbeans/awt2d/build.xml
@@ -0,0 +1,100 @@
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<project name="awt2d" default="build" basedir=".">
+ <description>
+ JDK: AWT & Java2D Ant build file
+ </description>
+
+ <import file="../common/shared.xml"/>
+
+ <target name="-build-make" depends="-make.init,-build-make-unix,-build-make-windows" if="use.make"/>
+
+ <target name="-build-make-unix" depends="-make.init" if="osfamily.unix">
+ <make-run target="all" dir="${make.dir}/java/awt"/>
+ <make-run target="all" dir="${make.dir}/sun/dcpr"/>
+ <make-run target="all" dir="${make.dir}/sun/image"/>
+ <make-run target="all" dir="${make.dir}/sun/awt"/>
+ <make-run target="all" dir="${make.dir}/sun/splashscreen"/>
+ <make-run target="all" dir="${make.dir}/sun/xawt"/>
+ <make-run target="all" dir="${make.dir}/sun/headless"/>
+ <make-run target="all" dir="${make.dir}/sun/font"/>
+ <make-run target="all" dir="${make.dir}/sun/jpeg"/>
+ <make-run target="all" dir="${make.dir}/sun/cmm"/>
+ <make-run target="all" dir="${make.dir}/sun/jawt"/>
+ <make-run target="all" dir="${make.dir}/sun/text"/>
+ <make-run target="all" dir="${make.dir}/com/sun/image"/>
+ <make-run target="all" dir="${make.dir}/com/sun/java2d"/>
+ </target>
+
+ <target name="-build-make-windows" depends="-make.init" if="os.windows">
+ <make-run target="all" dir="${make.dir}/java/awt"/>
+ <make-run target="all" dir="${make.dir}/sun/dcpr"/>
+ <make-run target="all" dir="${make.dir}/sun/awt"/>
+ <make-run target="all" dir="${make.dir}/sun/splashscreen"/>
+ <make-run target="all" dir="${make.dir}/sun/font"/>
+ <make-run target="all" dir="${make.dir}/sun/jpeg"/>
+ <make-run target="all" dir="${make.dir}/sun/cmm"/>
+ <make-run target="all" dir="${make.dir}/sun/jawt"/>
+ <make-run target="all" dir="${make.dir}/sun/text"/>
+ <make-run target="all" dir="${make.dir}/com/sun/image"/>
+ <make-run target="all" dir="${make.dir}/com/sun/java2d"/>
+ </target>
+
+ <target name="-clean-make" depends="-make.init,-clean-docs-tests" if="use.make">
+ <make-run target="clean" dir="${make.dir}/java/awt"/>
+ <make-run target="clean" dir="${make.dir}/sun/dcpr"/>
+ <make-run target="clean" dir="${make.dir}/sun/image"/>
+ <make-run target="clean" dir="${make.dir}/sun/awt"/>
+ <make-run target="clean" dir="${make.dir}/sun/splashscreen"/>
+ <make-run target="clean" dir="${make.dir}/sun/xawt"/>
+ <make-run target="clean" dir="${make.dir}/sun/font"/>
+ <make-run target="clean" dir="${make.dir}/sun/jpeg"/>
+ <make-run target="clean" dir="${make.dir}/sun/cmm"/>
+ <make-run target="clean" dir="${make.dir}/sun/jawt"/>
+ <make-run target="clean" dir="${make.dir}/sun/text"/>
+ <make-run target="clean" dir="${make.dir}/com/sun/image"/>
+ <make-run target="clean" dir="${make.dir}/com/sun/java2d"/>
+ <make-run target="clean" dir="${make.dir}/mkdemo/jfc"/>
+ </target>
+
+ <target name="run" depends="-make.init">
+ <make-run target="all" dir="${make.dir}/mkdemo/jfc"/>
+ <property name="jvm.args" value=""/>
+ <java jar="${build.dir}/demo/jfc/Font2DTest/Font2DTest.jar"
+ fork="true"
+ classpath="${classes.dir}:${bootstrap.jdk}/jre/lib/rt.jar">
+ <jvmarg line="${jvm.args}"/>
+ </java>
+ </target>
+
+
+</project>
diff --git a/jdk/make/netbeans/awt2d/nbproject/project.xml b/jdk/make/netbeans/awt2d/nbproject/project.xml
new file mode 100644
index 0000000..8511e32
--- /dev/null
+++ b/jdk/make/netbeans/awt2d/nbproject/project.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!DOCTYPE project [
+ <!ENTITY properties SYSTEM "../../common/properties.ent">
+ <!ENTITY share-sources SYSTEM "../../common/share-sources.ent">
+ <!ENTITY unix-sources SYSTEM "../../common/unix-sources.ent">
+ <!ENTITY windows-sources SYSTEM "../../common/windows-sources.ent">
+ <!ENTITY demo-sources SYSTEM "../../common/demo-sources.ent">
+ <!ENTITY jtreg-sources SYSTEM "../../common/jtreg-sources.ent">
+ <!ENTITY build-folder SYSTEM "../../common/build-folder.ent">
+ <!ENTITY standard-bindings SYSTEM "../../common/standard-bindings.ent">
+ <!ENTITY share-view SYSTEM "../../common/share-view.ent">
+ <!ENTITY unix-view SYSTEM "../../common/unix-view.ent">
+ <!ENTITY windows-view SYSTEM "../../common/windows-view.ent">
+ <!ENTITY demo-view SYSTEM "../../common/demo-view.ent">
+ <!ENTITY jtreg-view SYSTEM "../../common/jtreg-view.ent">
+ <!ENTITY file-view SYSTEM "../../common/file-view.ent">
+ <!ENTITY standard-actions SYSTEM "../../common/standard-actions.ent">
+ <!ENTITY java-data-native SYSTEM "../../common/java-data-native.ent">
+]>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/2">
+ <name>AWT & Java2d</name> <!-- Customized -->
+ <properties>
+ <property name="name">awt2d</property> <!-- Customized -->
+ &properties;
+ </properties>
+ <folders>
+ &share-sources;
+ &unix-sources;
+ &windows-sources;
+ &demo-sources;
+ &jtreg-sources;
+ &build-folder;
+ </folders>
+ <ide-actions>
+ &standard-bindings;
+ <action name="run">
+ <target>run</target>
+ </action>
+ <action name="debug">
+ <target>debug</target>
+ </action>
+ </ide-actions>
+ <view>
+ <items>
+ &share-view;
+ &unix-view;
+ &windows-view;
+ &demo-view;
+ &jtreg-view;
+ &file-view;
+ </items>
+ <context-menu>
+ &standard-actions;
+ <ide-action name="run"/>
+ <ide-action name="debug"/>
+ </context-menu>
+ </view>
+ </general-data>
+ &java-data-native;
+ </configuration>
+</project>
diff --git a/jdk/make/netbeans/common/README-ent b/jdk/make/netbeans/common/README-ent
new file mode 100644
index 0000000..f7b31eb
--- /dev/null
+++ b/jdk/make/netbeans/common/README-ent
@@ -0,0 +1,25 @@
+The *.ent files in this directory provide common functionality to the
+project.xml file of various projects. There are different kinds,
+e.g. "-sources" from share-sources.ent
+
+* -sources: Defines sources used by a project.
+
+* -view: Defines project's sources that are displayed in the Projects tab.
+
+* -actions: Defines a set of actions of the project available from NetBeans.
+
+* -bindings: Defines the targets invoked by the corresponding actions.
+
+Note that -sources and -view files come in pairs: A project will have an
+entity reference for each, so that it uses and displays the sources.
+
+Similarly, -actions and -bindings are paired.
+
+These kinds are not paired:
+
+build-folder.ent: Defines the location of the folder where compiled classes,
+resources, etc. are placed.
+
+java-data-native.ent, java-data-no-native.ent: These define information about
+the location of classes and sources of native and non-native projects, where
+"native" is suggestive of "native code", that is, non-Java source code.
diff --git a/jdk/make/netbeans/common/architectures/README b/jdk/make/netbeans/common/architectures/README
new file mode 100644
index 0000000..1d19b44
--- /dev/null
+++ b/jdk/make/netbeans/common/architectures/README
@@ -0,0 +1,3 @@
+List of translations from Java's os.name and os.arch properties
+into the platform names used by the JDK makefiles.
+Add your own translations as needed.
diff --git a/jdk/make/netbeans/common/architectures/arch-amd64.properties b/jdk/make/netbeans/common/architectures/arch-amd64.properties
new file mode 100644
index 0000000..ca8ec95
--- /dev/null
+++ b/jdk/make/netbeans/common/architectures/arch-amd64.properties
@@ -0,0 +1,32 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+arch=i586
diff --git a/jdk/make/netbeans/common/architectures/arch-i386.properties b/jdk/make/netbeans/common/architectures/arch-i386.properties
new file mode 100644
index 0000000..ca8ec95
--- /dev/null
+++ b/jdk/make/netbeans/common/architectures/arch-i386.properties
@@ -0,0 +1,32 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+arch=i586
diff --git a/jdk/make/netbeans/common/architectures/arch-sparc.properties b/jdk/make/netbeans/common/architectures/arch-sparc.properties
new file mode 100644
index 0000000..339b07e
--- /dev/null
+++ b/jdk/make/netbeans/common/architectures/arch-sparc.properties
@@ -0,0 +1,32 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+arch=sparc
diff --git a/jdk/make/netbeans/common/architectures/arch-x86.properties b/jdk/make/netbeans/common/architectures/arch-x86.properties
new file mode 100644
index 0000000..ca8ec95
--- /dev/null
+++ b/jdk/make/netbeans/common/architectures/arch-x86.properties
@@ -0,0 +1,32 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+arch=i586
diff --git a/jdk/make/netbeans/common/architectures/name-Linux.properties b/jdk/make/netbeans/common/architectures/name-Linux.properties
new file mode 100644
index 0000000..7aadb23
--- /dev/null
+++ b/jdk/make/netbeans/common/architectures/name-Linux.properties
@@ -0,0 +1,32 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+platform=linux
diff --git a/jdk/make/netbeans/common/architectures/name-SunOS.properties b/jdk/make/netbeans/common/architectures/name-SunOS.properties
new file mode 100644
index 0000000..1f23c48
--- /dev/null
+++ b/jdk/make/netbeans/common/architectures/name-SunOS.properties
@@ -0,0 +1,32 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+platform=solaris
diff --git a/jdk/make/netbeans/common/build-folder.ent b/jdk/make/netbeans/common/build-folder.ent
new file mode 100644
index 0000000..e2789c3
--- /dev/null
+++ b/jdk/make/netbeans/common/build-folder.ent
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<build-folder>
+ <location>${root}/build</location>
+</build-folder>
diff --git a/jdk/make/netbeans/common/closed-share-sources.ent b/jdk/make/netbeans/common/closed-share-sources.ent
new file mode 100644
index 0000000..0701496
--- /dev/null
+++ b/jdk/make/netbeans/common/closed-share-sources.ent
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-folder>
+ <label>Closed-Source Packages</label>
+ <type>java</type>
+ <location>${root}/src/closed/share/classes</location>
+ <includes>${includes}</includes>
+ <excludes>${excludes}</excludes>
+</source-folder>
+<source-folder>
+ <label>Closed-Source Packages</label>
+ <location>${root}/src/closed/share/classes</location>
+ <includes>${includes}</includes>
+ <excludes>${excludes}</excludes>
+</source-folder>
diff --git a/jdk/make/netbeans/common/closed-share-view.ent b/jdk/make/netbeans/common/closed-share-view.ent
new file mode 100644
index 0000000..242bfd7
--- /dev/null
+++ b/jdk/make/netbeans/common/closed-share-view.ent
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-folder style="packages">
+ <label>Closed-Source Packages</label>
+ <location>${root}/src/closed/share/classes</location>
+ <includes>${includes}</includes>
+ <excludes>${excludes}</excludes>
+</source-folder>
diff --git a/jdk/make/netbeans/common/demo-sources.ent b/jdk/make/netbeans/common/demo-sources.ent
new file mode 100644
index 0000000..d7b7154
--- /dev/null
+++ b/jdk/make/netbeans/common/demo-sources.ent
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-folder>
+ <label>Demos</label>
+ <location>${root}/src/share/demo</location>
+ <includes>${demos}</includes>
+</source-folder>
diff --git a/jdk/make/netbeans/common/demo-view.ent b/jdk/make/netbeans/common/demo-view.ent
new file mode 100644
index 0000000..403117f
--- /dev/null
+++ b/jdk/make/netbeans/common/demo-view.ent
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-folder style="tree">
+ <label>Demos</label>
+ <location>${root}/src/share/demo</location>
+ <includes>${demos}</includes>
+</source-folder>
diff --git a/jdk/make/netbeans/common/file-view.ent b/jdk/make/netbeans/common/file-view.ent
new file mode 100644
index 0000000..1f561d0
--- /dev/null
+++ b/jdk/make/netbeans/common/file-view.ent
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-file>
+ <location>README.html</location>
+</source-file>
+<source-file>
+ <location>README</location>
+</source-file>
+<source-file>
+ <location>build.properties</location>
+</source-file>
+<source-file>
+ <location>build.xml</location>
+</source-file>
diff --git a/jdk/make/netbeans/common/java-data-native.ent b/jdk/make/netbeans/common/java-data-native.ent
new file mode 100644
index 0000000..c8c9810
--- /dev/null
+++ b/jdk/make/netbeans/common/java-data-native.ent
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
+ <compilation-unit>
+ <package-root>${root}/src/share/classes</package-root>
+ <package-root>${root}/src/windows/classes</package-root>
+ <package-root>${root}/src/solaris/classes</package-root>
+ <classpath mode="boot">${bootstrap.jdk}/jre/lib/rt.jar</classpath>
+ <built-to>${root}/build/${platform}-${arch}/classes</built-to>
+ <javadoc-built-to>${root}/build/javadoc/${name}</javadoc-built-to>
+ <source-level>1.5</source-level>
+ </compilation-unit>
+</java-data>
diff --git a/jdk/make/netbeans/common/java-data-no-native.ent b/jdk/make/netbeans/common/java-data-no-native.ent
new file mode 100644
index 0000000..f2dae00
--- /dev/null
+++ b/jdk/make/netbeans/common/java-data-no-native.ent
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
+ <compilation-unit>
+ <package-root>${root}/src/share/classes</package-root>
+ <classpath mode="boot">${bootstrap.jdk}/jre/lib/rt.jar</classpath>
+ <built-to>${root}/build/${platform}-${arch}/classes</built-to>
+ <javadoc-built-to>${root}/build/javadoc/${name}</javadoc-built-to>
+ <source-level>1.5</source-level>
+ </compilation-unit>
+</java-data>
diff --git a/jdk/make/netbeans/common/jtreg-sources.ent b/jdk/make/netbeans/common/jtreg-sources.ent
new file mode 100644
index 0000000..78d843a
--- /dev/null
+++ b/jdk/make/netbeans/common/jtreg-sources.ent
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-folder>
+ <label>Tests</label>
+ <location>${root}/test</location>
+ <includes>${jtreg.tests}</includes>
+</source-folder>
diff --git a/jdk/make/netbeans/common/jtreg-view.ent b/jdk/make/netbeans/common/jtreg-view.ent
new file mode 100644
index 0000000..e1a5fe62
--- /dev/null
+++ b/jdk/make/netbeans/common/jtreg-view.ent
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-folder style="packages">
+ <label>Tests</label>
+ <location>${root}/test</location>
+ <includes>${jtreg.tests}</includes>
+</source-folder>
diff --git a/jdk/make/netbeans/common/make.xml b/jdk/make/netbeans/common/make.xml
new file mode 100644
index 0000000..cb6642d
--- /dev/null
+++ b/jdk/make/netbeans/common/make.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<project name="make" basedir="..">
+
+ <target name="-make.init" depends="-init,-pre-init.linux,-pre-init.solaris,-pre-init.windows">
+ <property name="make.options" value=""/> <!-- default, can be overridden per user or per project -->
+ </target>
+
+ <target name="-pre-init.linux" if="os.linux">
+ <property name="platform" value="linux"/>
+ <property name="make" value="make"/>
+ </target>
+
+ <target name="-pre-init.solaris" if="os.solaris">
+ <property name="platform" value="solaris"/>
+ <property name="make" value="gmake"/>
+ </target>
+
+ <target name="-pre-init.windows" if="os.windows">
+ <property name="platform" value="windows"/>
+ <property name="make" value="c:/cygwin/bin/make"/>
+ </target>
+
+ <macrodef name="make-run">
+ <attribute name="target"/>
+ <attribute name="dir"/>
+ <attribute name="opts" default=""/>
+ <sequential>
+ <echo message="Entering directory `@{dir}'"/>
+ <exec executable="${make}" dir="@{dir}" failonerror="true">
+ <arg value="@{target}"/>
+ <arg line="@{opts}"/>
+ <arg line="${make.options}"/>
+ <!-- Unset key variables -->
+ <env key="JAVA_HOME" value=""/>
+ <env key="LANG" value=""/>
+ <env key="LD_LIBRARY_PATH" value=""/>
+ </exec>
+ <echo message="Leaving directory `@{dir}'"/>
+ </sequential>
+ </macrodef>
+</project>
diff --git a/jdk/make/netbeans/common/properties.ent b/jdk/make/netbeans/common/properties.ent
new file mode 100644
index 0000000..1d624a6
--- /dev/null
+++ b/jdk/make/netbeans/common/properties.ent
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<property name="root">../../..</property>
+<property-file>../common/architectures/name-${os.name}.properties</property-file>
+<property name="platform">windows</property>
+<property-file>../common/architectures/arch-${os.arch}.properties</property-file>
+<property name="arch">${os.arch}</property>
+<property-file>nbproject/private/build.properties</property-file>
+<property-file>${user.home}/.openjdk/${name}-build.properties</property-file>
+<property-file>${user.home}/.openjdk/build.properties</property-file>
+<property-file>build.properties</property-file>
+<property name="bootstrap.jdk">${java.home}/..</property>
diff --git a/jdk/make/netbeans/common/sample-sources.ent b/jdk/make/netbeans/common/sample-sources.ent
new file mode 100644
index 0000000..103101c
--- /dev/null
+++ b/jdk/make/netbeans/common/sample-sources.ent
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-folder>
+ <label>Samples</label>
+ <location>${root}/src/share/sample</location>
+ <includes>${samples}</includes>
+</source-folder>
diff --git a/jdk/make/netbeans/common/sample-view.ent b/jdk/make/netbeans/common/sample-view.ent
new file mode 100644
index 0000000..514ff75
--- /dev/null
+++ b/jdk/make/netbeans/common/sample-view.ent
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-folder style="packages">
+ <label>Samples</label>
+ <location>${root}/src/share/sample</location>
+ <includes>${samples}</includes>
+</source-folder>
diff --git a/jdk/make/netbeans/common/share-sources.ent b/jdk/make/netbeans/common/share-sources.ent
new file mode 100644
index 0000000..75ff2b4
--- /dev/null
+++ b/jdk/make/netbeans/common/share-sources.ent
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-folder>
+ <label>Sources for All Platforms</label>
+ <type>java</type>
+ <location>${root}/src/share/classes</location>
+ <includes>${includes}</includes>
+ <excludes>${excludes}</excludes>
+</source-folder>
+<source-folder>
+ <label>Sources for All Platforms</label>
+ <location>${root}/src/share/classes</location>
+</source-folder>
diff --git a/jdk/make/netbeans/common/share-view.ent b/jdk/make/netbeans/common/share-view.ent
new file mode 100644
index 0000000..3b9c0d7
--- /dev/null
+++ b/jdk/make/netbeans/common/share-view.ent
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-folder style="packages">
+ <label>Sources for All Platforms</label>
+ <location>${root}/src/share/classes</location>
+ <includes>${includes}</includes>
+ <excludes>${excludes}</excludes>
+</source-folder>
diff --git a/jdk/make/netbeans/common/shared.xml b/jdk/make/netbeans/common/shared.xml
new file mode 100644
index 0000000..d177932
--- /dev/null
+++ b/jdk/make/netbeans/common/shared.xml
@@ -0,0 +1,378 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<project name="shared" basedir="..">
+
+ <import file="make.xml"/>
+
+ <target name="-tstamp">
+ <tstamp>
+ <format property="build.time" pattern="MM/dd/yyyy hh:mm aa"/>
+ <format property="build.fullversion.time" pattern="MM/dd/yyyy_HH_mm"/>
+ </tstamp>
+ </target>
+
+ <target name="-first-init" depends="-tstamp">
+ <mkdir dir="${user.home}/.openjdk"/>
+ <property name="workspace-user-build.properties" location="nbproject/private/build.properties"/>
+ <property file="${workspace-user-build.properties}"/>
+ <property file="${user.home}/.openjdk/${ant.project.name}-build.properties"/>
+ <property name="user-build.properties" location="${user.home}/.openjdk/build.properties"/>
+ <property file="${user-build.properties}"/>
+ <property file="${basedir}/build.properties"/>
+ <property environment="env."/>
+ </target>
+ <target name="-warn-about-bootstrap.jdk" depends="-first-init" unless="bootstrap.jdk">
+ <property name="fallback.jdk" location="${java.home}/.."/>
+ <echo level="warning">Warning: falling back to building against ${fallback.jdk}</echo>
+ <echo level="warning">Please define bootstrap.jdk=.../recent/jdk7/snapshot in ${user-build.properties} or ${workspace-user-build.properties}</echo>
+ </target>
+ <target name="-pre-init">
+ <!-- Invoked before -first-init. -->
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target name="-post-init">
+ <!-- Invoked after -project-init. -->
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target name="-init" description="Initial configuration used by everything else." depends="-pre-init,-first-init,-project-init,-post-init"/>
+ <target name="-project-init" depends="-warn-about-bootstrap.jdk">
+ <property name="root" location="../../.."/>
+ <property file="../common/architectures/name-${os.name}.properties"/>
+ <property name="platform" value="windows"/>
+ <property file="../common/architectures/arch-${os.arch}.properties"/>
+ <property name="arch" value="${os.arch}"/>
+ <echo level="verbose">System configuration claims architecture is ${platform}-${arch}</echo>
+ <property name="build.dir" location="${root}/build/${platform}-${arch}"/>
+ <property name="bin.dir" location="${build.dir}/bin"/>
+ <property name="make.dir" location="${root}/make"/>
+ <property name="gensrc.dir" location="${build.dir}/gensrc"/>
+ <property name="classes.dir" location="${build.dir}/classes"/>
+ <property name="jtreg.dir" location="${build.dir}/jtreg/${ant.project.name}"/>
+ <property name="dist.dir" value="${root}/dist"/>
+ <property name="includes" value="(nothing)"/>
+ <property name="excludes" value=""/>
+ <property name="javadoc.dir" location="${build.dir}/javadoc/${ant.project.name}"/>
+ <condition property="os.linux">
+ <os name="linux"/>
+ </condition>
+ <condition property="os.solaris">
+ <os name="SunOS"/>
+ </condition>
+ <condition property="osfamily.unix">
+ <os family="unix"/>
+ </condition>
+ <condition property="os.windows">
+ <os family="windows"/>
+ </condition>
+ <condition property="platform.src.dir" value="${root}/src/solaris/classes">
+ <os family="unix"/>
+ </condition>
+ <condition property="platform.src.dir" value="${root}/src/windows/classes">
+ <os family="windows"/>
+ </condition>
+ <property name="share.src.dir" value="${root}/src/share/classes"/>
+ <property name="bootstrap.jdk" location="${fallback.jdk}"/>
+ <!-- XXX ensure that bootstrap.jdk meets some minimum version requirements (TBD) -->
+ <condition property="bootstrap.javac" value="${bootstrap.jdk}/bin/javac">
+ <available file="${bootstrap.jdk}/bin/javac"/>
+ </condition>
+ <condition property="bootstrap.javac" value="${bootstrap.jdk}\bin\javac.exe">
+ <available file="${bootstrap.jdk}\bin\javac.exe"/>
+ </condition>
+ <fail unless="bootstrap.javac">${bootstrap.jdk} does not appear to be a functional JDK; no javac found.</fail>
+ <property name="javac.options" value="-Xlint"/> <!-- default, can be overridden per user or per project -->
+ <property name="javac.debug" value="true"/> <!-- default, can be overridden per user or per project -->
+ <property name="javac.debuglevel" value="lines,vars,source"/> <!-- default, can be overridden per user or per project -->
+ <macrodef name="jdk-javac">
+ <attribute name="srcdir"/>
+ <attribute name="includes" default="${includes}"/>
+ <attribute name="excludes" default="${excludes}"/>
+ <attribute name="classesdir" default="${classes.dir}"/>
+ <sequential>
+ <mkdir dir="@{classesdir}"/>
+ <javac srcdir="@{srcdir}" includes="@{includes}" excludes="@{excludes}" sourcepath=""
+ destdir="@{classesdir}" fork="true" executable="${bootstrap.javac}"
+ debug="${javac.debug}" debuglevel="${javac.debuglevel}">
+ <compilerarg value="-source"/>
+ <compilerarg value="1.5"/>
+ <compilerarg value="-target"/>
+ <compilerarg value="1.6"/> <!-- for usability of JDK 6 as snapshot; change to 1.7 when JSR 294 put back -->
+ <!-- Mandatory for compiling partial JDK sources against a snapshot; should NEVER be used for any other purpose: -->
+ <compilerarg value="-XDignore.symbol.file=true"/>
+ <compilerarg line="${javac.options}"/>
+ </javac>
+ </sequential>
+ </macrodef>
+ <available property="have.closed.src" file="${root}/src/closed/share/classes" type="dir"/>
+ </target>
+
+ <target name="-pre-compile">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target name="-post-compile">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+
+ <target name="build" depends="-init,-pre-compile,-build-ant,-build-make,-post-compile" description="Build sources."/>
+ <target name="-do-build-ant">
+ <depend srcdir="${share.src.dir}:${platform.src.dir}:${root}/src/closed/share/classes:${gensrc.dir}" destdir="${classes.dir}" cache="${build.dir}/depcache" includes="${includes}" excludes="${excludes}"/>
+ <mkdir dir="${gensrc.dir}"/>
+ <jdk-javac srcdir="${share.src.dir}:${platform.src.dir}:${gensrc.dir}"/>
+ <property name="copy.excludes" value="**/*.java,**/package.html,**/doc-files/"/>
+ <copy todir="${classes.dir}">
+ <fileset dir="${share.src.dir}" includes="${includes}" excludes="${excludes},${copy.excludes}"/>
+ <fileset dir="${platform.src.dir}" includes="${includes}" excludes="${excludes},${copy.excludes}"/>
+ </copy>
+ <antcall target="-maybe-do-build-ant-closed"/>
+ </target>
+ <target name="-maybe-do-build-ant-closed" if="have.closed.src">
+ <jdk-javac srcdir="${root}/src/closed/share/classes"/>
+ <copy todir="${classes.dir}">
+ <fileset dir="${root}/src/closed/share/classes" includes="${includes}" excludes="${excludes},${copy.excludes}"/>
+ </copy>
+ </target>
+ <target name="-build-ant" depends="-init" unless="use.make">
+ <antcall target="-do-build-ant"/>
+ </target>
+ <target name="-build-make" depends="-init" if="use.make"> <!-- override me to call <make-run> -->
+ <echo level="info">No make target defined for this project; falling back to simple Java build</echo>
+ <antcall target="-do-build-ant"/>
+ </target>
+
+ <target name="clean" depends="-init,-clean-docs-tests,-clean-ant,-clean-make" description="Clean build products."/>
+ <target name="-do-clean-ant">
+ <!-- XXX first s/\.java/.class/g in includes and excludes! -->
+ <delete dir="${classes.dir}" includes="${includes}" excludes="${excludes}" includeemptydirs="true"/>
+ <delete dir="${gensrc.dir}" includes="${includes}" excludes="${excludes}" includeemptydirs="true"/>
+ <delete dir="${build.dir}/depcache"/>
+ </target>
+ <target name="-clean-docs-tests">
+ <delete dir="${javadoc.dir}" includeemptydirs="true"/>
+ <delete dir="${jtreg.dir}" includeemptydirs="true"/>
+ </target>
+ <target name="-clean-ant" depends="-init" unless="use.make">
+ <antcall target="-do-clean-ant"/>
+ </target>
+ <target name="-clean-make" depends="-init" if="use.make"> <!-- override me to call <make-run> -->
+ <echo level="info">No make clean target defined for this project; falling back to simple Java clean</echo>
+ <antcall target="-do-clean-ant"/>
+ </target>
+
+ <target name="compile-single" depends="-init">
+ <fail unless="srcdir">Must set property 'srcdir'</fail>
+ <fail unless="includes">Must set property 'includes'</fail>
+ <jdk-javac srcdir="${srcdir}" includes="${includes}" excludes=""/>
+ </target>
+ <target name="debug-fix" depends="-init" if="netbeans.home">
+ <fail unless="class">Must set property 'class'</fail>
+ <antcall target="compile-single">
+ <param name="includes" value="${class}.java"/>
+ </antcall>
+ <nbjpdareload>
+ <fileset dir="${classes.dir}">
+ <include name="${class}.class"/>
+ </fileset>
+ </nbjpdareload>
+ </target>
+
+ <target name="-taskdef-jtreg" depends="-init" unless="jtreg.defined">
+ <fail message="Cannot locate jtreg: please set jtreg.home to its location">
+ <condition>
+ <not>
+ <isset property="jtreg.home"/>
+ </not>
+ </condition>
+ </fail>
+ <fail message="jtreg is not installed in ${jtreg.home}">
+ <condition>
+ <not>
+ <and>
+ <available file="${jtreg.home}/lib/jtreg.jar"/>
+ <available file="${jtreg.home}/lib/javatest.jar"/>
+ </and>
+ </not>
+ </condition>
+ </fail>
+ <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant">
+ <classpath>
+ <pathelement location="${jtreg.home}/lib/jtreg.jar"/>
+ <pathelement location="${jtreg.home}/lib/javatest.jar"/>
+ </classpath>
+ </taskdef>
+ <property name="jtreg.defined" value="true"/>
+ </target>
+ <target name="-check-tests-defined" unless="jtreg.tests">
+ <fail>You must define jtreg.tests to select some tests to run.</fail>
+ </target>
+ <target name="-jtreg-setup">
+ <property name="jtreg.vm.options" value=""/> <!-- default, can be overridden per user or per project -->
+ <property name="jtreg.options" value=""/> <!-- default, can be overridden per user or per project -->
+ <property name="jtreg.samevm" value="false"/> <!-- default, can be overridden per user or per project -->
+ </target>
+ <target name="-jtreg-ant" unless="use.make">
+ <jtreg dir="${root}/test" samevm="${jtreg.samevm}" verbose="summary"
+ jdk="${bootstrap.jdk}"
+ failonerror="false" resultproperty="jtreg.result"
+ javacoptions="-g"
+ vmoptions="-Xbootclasspath/p:${classes.dir} ${jtreg.vm.options}"
+ reportDir="${jtreg.dir}/JTreport"
+ workDir="${jtreg.dir}/JTwork"
+ includes="${jtreg.tests}">
+ <arg line="${jtreg.options}"/>
+ </jtreg>
+ </target>
+ <target name="-jtreg-make" if="use.make">
+ <jtreg dir="${root}/test" samevm="${jtreg.samevm}" verbose="summary"
+ failonerror="false" resultproperty="jtreg.result"
+ jdk="${build.dir}"
+ vmoptions="${jtreg.vm.options}"
+ javacoptions="-g"
+ reportDir="${jtreg.dir}/JTreport"
+ workDir="${jtreg.dir}/JTwork"
+ includes="${jtreg.tests}">
+ <arg line="${jtreg.options}"/>
+ </jtreg>
+ </target>
+ <target name="-pre-jtreg">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target name="-post-jtreg">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target name="-jtreg" depends="-init,-pre-jtreg,-taskdef-jtreg,-check-tests-defined,-jtreg-setup,-jtreg-make,-jtreg-ant,-post-jtreg">
+ <property name="jtreg.report" location="${jtreg.dir}/JTreport/report.html"/>
+ <condition property="jtreg.passed">
+ <equals arg1="${jtreg.result}" arg2="0"/>
+ </condition>
+ </target>
+ <target name="test" depends="jtreg"/> <!-- Allow use of existing finger muscle memory from command line. -->
+ <target name="jtreg" depends="-jtreg" description="Run jtreg-based tests." unless="jtreg.passed">
+ <fail>${jtreg.report}: some tests failed.</fail>
+ </target>
+ <target name="jtreg-nb" depends="-jtreg" if="netbeans.home" unless="jtreg.passed">
+ <makeurl file="${jtreg.report}" property="jtreg.report.url"/>
+ <nbbrowse url="${jtreg.report.url}#Results"/>
+ <fail>Some tests failed; see report for details.</fail>
+ </target>
+ <target name="jtreg-debug-nb" depends="-init" if="netbeans.home">
+ <!-- No package decls -> "source root" is immediately containing dir -->
+ <dirname file="${root}/test/${jtreg.tests}" property="test.dir"/>
+ <nbjpdastart addressproperty="jpda.address" name="${ant.project.name}" transport="dt_socket">
+ <bootclasspath>
+ <pathelement location="${classes.dir}"/>
+ <pathelement location="${bootstrap.jdk}/jre/lib/rt.jar"/>
+ </bootclasspath>
+ <classpath>
+ <pathelement location="${jtreg.dir}/JTwork/classes"/>
+ </classpath>
+ <sourcepath>
+ <pathelement location="${share.src.dir}"/>
+ <pathelement location="${platform.src.dir}"/>
+ <pathelement location="${root}/src/closed/share/classes"/>
+ <pathelement location="${test.dir}"/>
+ </sourcepath>
+ </nbjpdastart>
+ <antcall target="-jtreg">
+ <param name="jtreg.vm.options" value="-Xdebug -Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
+ </antcall>
+ </target>
+
+ <target name="debug" depends="-init" if="netbeans.home">
+ <!-- No package decls -> "source root" is immediately containing dir -->
+ <dirname file="${root}/test/${jtreg.tests}" property="test.dir"/>
+ <nbjpdastart addressproperty="jpda.address" name="${ant.project.name}" transport="dt_socket">
+ <bootclasspath>
+ <pathelement location="${classes.dir}"/>
+ <pathelement location="${bootstrap.jdk}/jre/lib/rt.jar"/>
+ </bootclasspath>
+ <sourcepath>
+ <pathelement location="${share.src.dir}"/>
+ <pathelement location="${platform.src.dir}"/>
+ <pathelement location="${root}/src/closed/share/classes"/>
+ <pathelement location="${test.dir}"/>
+ </sourcepath>
+ </nbjpdastart>
+ <antcall target="run">
+ <param name="jvm.args" value="-Xdebug -Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
+ </antcall>
+ </target>
+
+ <target name="javadoc" depends="-init" description="Build basic Javadoc for public packages.">
+ <property name="javadoc.options" value=""/> <!-- default, can be overridden per user or per project -->
+ <!-- Note: even with this default value, includes/excludes
+ from share.src.dir get javadoc'd; see packageset below -->
+ <property name="javadoc.packagenames" value="none"/> <!-- default, can be overridden per user or per project -->
+ <javadoc destdir="${javadoc.dir}" source="1.5"
+ windowtitle="UNOFFICIAL" failonerror="true" use="true"
+ author="false" version="false"
+ packagenames="${javadoc.packagenames}">
+ <header><![CDATA[<strong>Unofficial Javadoc</strong> generated from developer sources for preview purposes only]]></header>
+ <arg line="${javadoc.options}"/>
+ <bootclasspath>
+ <path location="${bootstrap.jdk}/jre/lib/rt.jar"/>
+ <path location="${classes.dir}"/>
+ </bootclasspath>
+ <sourcepath>
+ <pathelement location="${share.src.dir}"/>
+ <pathelement location="${platform.src.dir}"/>
+ <pathelement location="${root}/src/closed/share/classes"/>
+ <pathelement location="${root}/src/share/doc/stub"/>
+ </sourcepath>
+ <!-- XXX just <fileset> (restricted further to **/*.java) and no <packageset> -->
+ <!-- means that {@link some.package} will not work, which is no good. -->
+ <!-- (It correctly skips excluded single classes, but not if packageset is also included, -->
+ <!-- which also causes duplicates in the class index for included files.) -->
+ <packageset dir="${share.src.dir}" includes="${includes}" excludes="${excludes}">
+ <or>
+ <filename name="java/"/>
+ <filename name="javax/"/>
+ <filename name="org/ietf/jgss/"/>
+ <filename name="org/omg/"/>
+ <filename name="org/w3c/"/>
+ <filename name="org/xml/sax/"/>
+ </or>
+ </packageset>
+ </javadoc>
+ </target>
+ <target name="javadoc-nb" depends="javadoc" if="netbeans.home">
+ <nbbrowse file="${javadoc.dir}/index.html"/>
+ </target>
+
+</project>
diff --git a/jdk/make/netbeans/common/standard-actions.ent b/jdk/make/netbeans/common/standard-actions.ent
new file mode 100644
index 0000000..471dac4
--- /dev/null
+++ b/jdk/make/netbeans/common/standard-actions.ent
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<ide-action name="build"/>
+<ide-action name="rebuild"/>
+<ide-action name="clean"/>
+<ide-action name="javadoc"/>
+<separator/>
+<ide-action name="test"/>
diff --git a/jdk/make/netbeans/common/standard-bindings.ent b/jdk/make/netbeans/common/standard-bindings.ent
new file mode 100644
index 0000000..680373a
--- /dev/null
+++ b/jdk/make/netbeans/common/standard-bindings.ent
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<action name="build">
+ <target>build</target>
+</action>
+<action name="clean">
+ <target>clean</target>
+</action>
+<action name="rebuild">
+ <target>clean</target>
+ <target>build</target>
+</action>
+<action name="compile.single">
+ <target>compile-single</target>
+ <property name="srcdir">${root}/src/share/classes</property>
+ <context>
+ <property>includes</property>
+ <folder>${root}/src/share/classes</folder>
+ <pattern>\.java$</pattern>
+ <format>relative-path</format>
+ <arity>
+ <separated-files>,</separated-files>
+ </arity>
+ </context>
+</action>
+<action name="compile.single">
+ <target>compile-single</target>
+ <property name="srcdir">${root}/src/solaris/classes</property>
+ <context>
+ <property>includes</property>
+ <folder>${root}/src/solaris/classes</folder>
+ <pattern>\.java$</pattern>
+ <format>relative-path</format>
+ <arity>
+ <separated-files>,</separated-files>
+ </arity>
+ </context>
+</action>
+<action name="compile.single">
+ <target>compile-single</target>
+ <property name="srcdir">${root}/src/windows/classes</property>
+ <context>
+ <property>includes</property>
+ <folder>${root}/src/windows/classes</folder>
+ <pattern>\.java$</pattern>
+ <format>relative-path</format>
+ <arity>
+ <separated-files>,</separated-files>
+ </arity>
+ </context>
+</action>
+<action name="compile.single">
+ <target>compile-single</target>
+ <property name="srcdir">${root}/src/closed/share/classes</property>
+ <context>
+ <property>includes</property>
+ <folder>${root}/src/closed/share/classes</folder>
+ <pattern>\.java$</pattern>
+ <format>relative-path</format>
+ <arity>
+ <separated-files>,</separated-files>
+ </arity>
+ </context>
+</action>
+<action name="test">
+ <target>jtreg-nb</target>
+</action>
+<action name="run.single">
+ <target>jtreg-nb</target>
+ <context>
+ <property>jtreg.tests</property>
+ <folder>${root}/test</folder>
+ <pattern>\.(java|sh)$</pattern>
+ <format>relative-path</format>
+ <arity>
+ <separated-files>,</separated-files>
+ </arity>
+ </context>
+</action>
+<action name="debug.single">
+ <target>jtreg-debug-nb</target>
+ <context>
+ <property>jtreg.tests</property>
+ <folder>${root}/test</folder>
+ <pattern>\.(java|sh)$</pattern>
+ <format>relative-path</format>
+ <arity>
+ <one-file-only/>
+ </arity>
+ </context>
+</action>
+<action name="debug.fix">
+ <target>debug-fix</target>
+ <property name="srcdir">${root}/src/share/classes</property>
+ <context>
+ <property>class</property>
+ <folder>${root}/src/share/classes</folder>
+ <pattern>\.java$</pattern>
+ <format>relative-path-noext</format>
+ <arity>
+ <one-file-only/>
+ </arity>
+ </context>
+</action>
+<action name="debug.fix">
+ <target>debug-fix</target>
+ <property name="srcdir">${root}/src/solaris/classes</property>
+ <context>
+ <property>class</property>
+ <folder>${root}/src/solaris/classes</folder>
+ <pattern>\.java$</pattern>
+ <format>relative-path-noext</format>
+ <arity>
+ <one-file-only/>
+ </arity>
+ </context>
+</action>
+<action name="debug.fix">
+ <target>debug-fix</target>
+ <property name="srcdir">${root}/src/windows/classes</property>
+ <context>
+ <property>class</property>
+ <folder>${root}/src/windows/classes</folder>
+ <pattern>\.java$</pattern>
+ <format>relative-path-noext</format>
+ <arity>
+ <one-file-only/>
+ </arity>
+ </context>
+</action>
+<action name="debug.fix">
+ <target>debug-fix</target>
+ <property name="srcdir">${root}/src/closed/share/classes</property>
+ <context>
+ <property>class</property>
+ <folder>${root}/src/closed/share/classes</folder>
+ <pattern>\.java$</pattern>
+ <format>relative-path-noext</format>
+ <arity>
+ <one-file-only/>
+ </arity>
+ </context>
+</action>
+<action name="javadoc">
+ <target>javadoc-nb</target>
+</action>
diff --git a/jdk/make/netbeans/common/unix-sources.ent b/jdk/make/netbeans/common/unix-sources.ent
new file mode 100644
index 0000000..271b564
--- /dev/null
+++ b/jdk/make/netbeans/common/unix-sources.ent
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!--
+ UNIX is a registered trademark in the United States and other countries,
+ exclusively licensed through X/Open Company, Ltd.
+-->
+<source-folder>
+ <label>Sources for Unix® Platform</label>
+ <type>java</type>
+ <location>${root}/src/solaris/classes</location>
+ <includes>${includes}</includes>
+ <excludes>${excludes}</excludes>
+</source-folder>
+<source-folder>
+ <label>Sources for Unix® Platform</label>
+ <location>${root}/src/solaris/classes</location>
+</source-folder>
diff --git a/jdk/make/netbeans/common/unix-view.ent b/jdk/make/netbeans/common/unix-view.ent
new file mode 100644
index 0000000..319f5c8
--- /dev/null
+++ b/jdk/make/netbeans/common/unix-view.ent
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!--
+ UNIX is a registered trademark in the United States and other countries,
+ exclusively licensed through X/Open Company, Ltd.
+-->
+<source-folder style="packages">
+ <label>Sources for Unix® Platform</label>
+ <location>${root}/src/solaris/classes</location>
+ <includes>${includes}</includes>
+ <excludes>${excludes}</excludes>
+</source-folder>
diff --git a/jdk/make/netbeans/common/windows-sources.ent b/jdk/make/netbeans/common/windows-sources.ent
new file mode 100644
index 0000000..ba469bd
--- /dev/null
+++ b/jdk/make/netbeans/common/windows-sources.ent
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-folder>
+ <label>Sources for Windows Platform</label>
+ <type>java</type>
+ <location>${root}/src/windows/classes</location>
+ <includes>${includes}</includes>
+ <excludes>${excludes}</excludes>
+</source-folder>
+<source-folder>
+ <label>Sources for Windows Platform</label>
+ <location>${root}/src/windows/classes</location>
+</source-folder>
diff --git a/jdk/make/netbeans/common/windows-view.ent b/jdk/make/netbeans/common/windows-view.ent
new file mode 100644
index 0000000..b04ca5f
--- /dev/null
+++ b/jdk/make/netbeans/common/windows-view.ent
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-folder style="packages">
+ <label>Sources for Windows Platform</label>
+ <location>${root}/src/windows/classes</location>
+ <includes>${includes}</includes>
+ <excludes>${excludes}</excludes>
+</source-folder>
diff --git a/jdk/make/netbeans/j2se/README b/jdk/make/netbeans/j2se/README
new file mode 100644
index 0000000..8def695
--- /dev/null
+++ b/jdk/make/netbeans/j2se/README
@@ -0,0 +1,13 @@
+Building the entire JavaSE source base
+
+This project exists for building the entire JavaSE source base which is in the
+jdk directory. Rather than using this project for editing Java code, please
+use one of the other projects which will narrow the scope of the sources to a
+more manageable size.
+
+Given that it can take a rather long time to build all of the JavaSE code, you
+might prefer to build this project from the command line using ant.
+
+The results of building this project are all in the directory
+<install-dir>/jdk/build/<platform>-<arch>. The other subprojects, with the
+exception of the "world" project, place their results in same build directory.
diff --git a/jdk/make/netbeans/j2se/build.properties b/jdk/make/netbeans/j2se/build.properties
new file mode 100644
index 0000000..cfdd644
--- /dev/null
+++ b/jdk/make/netbeans/j2se/build.properties
@@ -0,0 +1,35 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+includes=\
+ **
+use.make=true
+javadoc.options=-J-Xmx256m
diff --git a/jdk/make/netbeans/j2se/build.xml b/jdk/make/netbeans/j2se/build.xml
new file mode 100644
index 0000000..bc1d90c
--- /dev/null
+++ b/jdk/make/netbeans/j2se/build.xml
@@ -0,0 +1,47 @@
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<project name="jdk" default="build" basedir=".">
+ <description>
+ jdk ant build file
+ </description>
+
+ <import file="../common/shared.xml"/>
+
+ <target name="-build-make" depends="-make.init" if="use.make">
+ <make-run target="all" dir="${make.dir}"/>
+ </target>
+
+ <target name="-clean-make" depends="-make.init" if="use.make">
+ <make-run target="clean" dir="${make.dir}"/>
+ </target>
+
+</project>
diff --git a/jdk/make/netbeans/j2se/nbproject/project.xml b/jdk/make/netbeans/j2se/nbproject/project.xml
new file mode 100644
index 0000000..e849d49
--- /dev/null
+++ b/jdk/make/netbeans/j2se/nbproject/project.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!DOCTYPE project [
+ <!ENTITY properties SYSTEM "../../common/properties.ent">
+ <!ENTITY share-sources SYSTEM "../../common/share-sources.ent">
+ <!ENTITY unix-sources SYSTEM "../../common/unix-sources.ent">
+ <!ENTITY windows-sources SYSTEM "../../common/windows-sources.ent">
+ <!ENTITY build-folder SYSTEM "../../common/build-folder.ent">
+ <!ENTITY standard-bindings SYSTEM "../../common/standard-bindings.ent">
+ <!ENTITY share-view SYSTEM "../../common/share-view.ent">
+ <!ENTITY unix-view SYSTEM "../../common/unix-view.ent">
+ <!ENTITY windows-view SYSTEM "../../common/windows-view.ent">
+ <!ENTITY file-view SYSTEM "../../common/file-view.ent">
+ <!ENTITY standard-actions SYSTEM "../../common/standard-actions.ent">
+ <!ENTITY java-data-native SYSTEM "../../common/java-data-native.ent">
+]>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/2">
+ <name>JDK</name> <!-- Customized -->
+ <properties>
+ <property name="name">jdk</property> <!-- Customized -->
+ &properties;
+ </properties>
+ <folders>
+ &share-sources;
+ &unix-sources;
+ &windows-sources;
+ &build-folder;
+ </folders>
+ <ide-actions>
+ <action name="build">
+ <target>build</target>
+ </action>
+ <action name="rebuild">
+ <target>clean</target>
+ <target>build</target>
+ </action>
+ <action name="clean">
+ <target>clean</target>
+ </action>
+ <!--
+ <action name="javadoc">
+ <target>javadoc-nb</target>
+ </action>
+ -->
+ </ide-actions>
+ <view>
+ <items>
+ &share-view;
+ &unix-view;
+ &windows-view;
+ &file-view;
+ </items>
+ <context-menu>
+ <ide-action name="build"/>
+ <ide-action name="rebuild"/>
+ <ide-action name="clean"/>
+ <!--
+ <ide-action name="javadoc"/>
+ -->
+ </context-menu>
+ </view>
+ </general-data>
+ &java-data-native;
+ </configuration>
+</project>
diff --git a/jdk/make/netbeans/jarzip/README b/jdk/make/netbeans/jarzip/README
new file mode 100644
index 0000000..b757213
--- /dev/null
+++ b/jdk/make/netbeans/jarzip/README
@@ -0,0 +1,38 @@
+Working on Jar and Zip code using the NetBeans IDE
+
+This note is specific to working on jar and zip; much more information about
+working with this project and others is in ../README.
+
+This project allows developers to work on the Jar and Zip in java.util.jar and
+java.util.zip, as well as the jar tool itself in sun.tools.jar. The NetBeans
+project supports editing, building, testing, and debugging of this code. This
+is a make-based project, and involves compilation of native code. Some of
+this native code is provided by the JDK community, but the base zip library is
+from http://www.zlib.net.
+
+Please note: The most recent zlib is version 1.2.3. We are providing zlib
+version 1.1.3, modified to include security fixes that have been added since
+that release.
+
+Source code layout
+
+The jar tool depends on the jar library, which in turn depends on the zip
+library. This in turn depends on some native code, which in turn depends on
+the zlib library:
+
+sun.tools.jar depends on
+ java.util.jar, which depends on
+ java.util.zip, which depends on
+ src/share/native/java/util/zip, which depends on
+ src/share/native/java/util/zip/zlib-1.1.3.
+
+The project is set up to invoke make on the zip code first. This make target
+compile the native zip code, as well as the Java sources in java.util.zip.
+Subsequent invocations of make build java.util.jar, and then sun.tools.jar.
+
+Insofar as NetBeans use is concerned with Java code, most things you are used
+to. You can build the project. There are several regression tests included,
+run either as a group via Test Project or individually via Run File.
+Debugging is also supported, try Debug File. Since the jar tool needs command
+line parameters in order to do anything interesting, it is not hooked up to
+Run Project in NetBeans.
diff --git a/jdk/make/netbeans/jarzip/build.properties b/jdk/make/netbeans/jarzip/build.properties
new file mode 100644
index 0000000..c0afb21
--- /dev/null
+++ b/jdk/make/netbeans/jarzip/build.properties
@@ -0,0 +1,46 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+includes=\
+ java/util/jar/ \
+ java/util/zip/ \
+ sun/tools/jar/ \
+ com/sun/java/util/jar/pack/
+excludes=\
+ sun/tools/jar/resources/
+jtreg.tests=\
+ tools/jar/ \
+ java/util/jar/ \
+ java/util/zip/
+javadoc.packagenames=\
+ sun.tools.jar.*
+javadoc.options=-J-Xmx256m
+use.make=true
diff --git a/jdk/make/netbeans/jarzip/build.xml b/jdk/make/netbeans/jarzip/build.xml
new file mode 100644
index 0000000..0319861
--- /dev/null
+++ b/jdk/make/netbeans/jarzip/build.xml
@@ -0,0 +1,48 @@
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<project name="jarzip" default="build" basedir=".">
+
+ <import file="../common/shared.xml"/>
+
+ <target name="-build-make" depends="-make.init" if="use.make">
+ <make-run target="all" dir="${make.dir}/java/zip"/>
+ <make-run target="all" dir="${make.dir}/java/jar"/>
+ <make-run target="all" dir="${make.dir}/sun/jar"/>
+ </target>
+
+ <target name="-clean-make" depends="-make.init,-clean-docs-tests" if="use.make">
+ <make-run target="clean" dir="${make.dir}/java/zip"/>
+ <make-run target="clean" dir="${make.dir}/java/jar"/>
+ <make-run target="clean" dir="${make.dir}/sun/jar"/>
+ </target>
+
+</project>
diff --git a/jdk/make/netbeans/jarzip/nbproject/project.xml b/jdk/make/netbeans/jarzip/nbproject/project.xml
new file mode 100644
index 0000000..89ca1eb
--- /dev/null
+++ b/jdk/make/netbeans/jarzip/nbproject/project.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!DOCTYPE project [
+ <!ENTITY properties SYSTEM "../../common/properties.ent">
+ <!ENTITY share-sources SYSTEM "../../common/share-sources.ent">
+ <!ENTITY jtreg-sources SYSTEM "../../common/jtreg-sources.ent">
+ <!ENTITY build-folder SYSTEM "../../common/build-folder.ent">
+ <!ENTITY standard-bindings SYSTEM "../../common/standard-bindings.ent">
+ <!ENTITY share-view SYSTEM "../../common/share-view.ent">
+ <!ENTITY jtreg-view SYSTEM "../../common/jtreg-view.ent">
+ <!ENTITY file-view SYSTEM "../../common/file-view.ent">
+ <!ENTITY standard-actions SYSTEM "../../common/standard-actions.ent">
+ <!ENTITY java-data-no-native SYSTEM "../../common/java-data-no-native.ent">
+]>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/2">
+ <name>Jar & Zip</name> <!-- Customized -->
+ <properties>
+ <property name="name">jarzip</property> <!-- Customized -->
+ &properties;
+ </properties>
+ <folders>
+ &share-sources;
+ &jtreg-sources;
+ &build-folder;
+ </folders>
+ <ide-actions>
+ &standard-bindings;
+ </ide-actions>
+ <view>
+ <items>
+ &share-view;
+ &jtreg-view;
+ &file-view;
+ </items>
+ <context-menu>
+ &standard-actions;
+ </context-menu>
+ </view>
+ </general-data>
+ &java-data-no-native;
+ </configuration>
+</project>
diff --git a/jdk/make/netbeans/jconsole/README b/jdk/make/netbeans/jconsole/README
new file mode 100644
index 0000000..f06f703
--- /dev/null
+++ b/jdk/make/netbeans/jconsole/README
@@ -0,0 +1,67 @@
+Working on JConsole Using the NetBeans IDE
+
+This JConsole NetBeans project allows a developer interested in making changes
+to and/or fixing bugs in the jconsole tool to modify, build, run and test
+jconsole in a standalone manner as well as generating the javadoc for the
+JConsole plugin API.
+
+README FIRST
+
+ make/netbeans/README to get started with NetBeans IDE and OpenJDK, and
+ working with the OpenJDK NetBeans projects.
+
+WORKING WITH JCONSOLE
+
+JConsole doesn't contain native code. It's a pure java tool. You don't need to
+have all the Java SE sources to work on JConsole but just the following subset:
+
+ make/netbeans/
+ src/share/classes/com/sun/tools/jconsole/
+ src/share/classes/sun/tools/jconsole/
+ test/TEST.ROOT
+ test/sun/tools/jconsole/
+
+The set of actions supported by this project are:
+
+* Build Project:
+
+ - Compiles JConsole's source files and puts the class files under
+ build/${platform}-${arch}/classes.
+
+ - Generates JConsole's jar file under dist/lib/jconsole.jar
+
+ This new jar file could be used to patch an existing JDK installation
+ by replacing the jar file at <jdk-home>/lib/jconsole.jar, then calling
+ <jdk-home>/bin/jconsole will make use of the new jar file.
+
+* Generate Javadoc for Project
+
+ - Generates the javadoc for the JConsole Plugin API source files,
+ i.e. the ones under src/share/classes/com/sun/tools/jconsole.
+
+ - The javadoc is generated under build/${platform}-${arch}/javadoc/jconsole.
+
+* Test Project
+
+ - Runs the JConsole jtreg unit tests located under test/sun/tools/jconsole.
+
+ - The test results are written under
+
+ build/${platform}-${arch}/jtreg/jconsole
+
+ and the HTML test report can be found at
+
+ build/${platform}-${arch}/jtreg/jconsole/JTreport/report.html
+
+* Run Project
+
+ - Runs the newly built JConsole tool.
+
+* Clean Project
+
+ - Cleans the files created by this projet under build and dist.
+
+IMPORTANT NOTE
+
+ Please make sure to follow carefully the governance rules documented at
+ http://openjdk.dev.java.net/
diff --git a/jdk/make/netbeans/jconsole/build.properties b/jdk/make/netbeans/jconsole/build.properties
new file mode 100644
index 0000000..ab2a0a1
--- /dev/null
+++ b/jdk/make/netbeans/jconsole/build.properties
@@ -0,0 +1,46 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+includes=\
+ com/sun/tools/jconsole/ \
+ sun/tools/jconsole/
+excludes=\
+ sun/tools/jconsole/Version-template.java
+jtreg.tests=\
+ sun/tools/jconsole/
+javadoc.packagenames=\
+ com.sun.tools.jconsole.*
+javadoc.options=-J-Xmx256m
+
+build.jdk.version = 1.7.0
+build.release = ${build.jdk.version}-opensource
+build.number = b00
+jconsole.version = ${build.release}-${user.name}-${build.number}
diff --git a/jdk/make/netbeans/jconsole/build.xml b/jdk/make/netbeans/jconsole/build.xml
new file mode 100644
index 0000000..0f51d1c
--- /dev/null
+++ b/jdk/make/netbeans/jconsole/build.xml
@@ -0,0 +1,72 @@
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<project name="jconsole" default="build" basedir=".">
+
+ <import file="../common/shared.xml"/>
+
+ <target name="-pre-compile">
+ <copy
+ file="${root}/src/share/classes/sun/tools/jconsole/Version-template.java"
+ tofile="${gensrc.dir}/sun/tools/jconsole/Version.java"/>
+ <replace
+ file="${gensrc.dir}/sun/tools/jconsole/Version.java"
+ token="@@jconsole_version@@"
+ value="${jconsole.version}"/>
+ </target>
+
+ <target name="-post-compile">
+ <mkdir dir="${dist.dir}/lib"/>
+ <jar destfile="${dist.dir}/lib/jconsole.jar"
+ manifest="${classes.dir}/sun/tools/jconsole/manifest">
+ <fileset dir="${classes.dir}">
+ <include name="sun/tools/jconsole/**/*.class"/>
+ <include name="com/sun/tools/jconsole/**/*.class"/>
+ <include name="sun/tools/jconsole/resources/*.gif"/>
+ <include name="sun/tools/jconsole/resources/*.png"/>
+ </fileset>
+ </jar>
+ </target>
+
+ <target name="run" depends="-init,build">
+ <property name="jvm.args" value=""/>
+ <java classname="sun.tools.jconsole.JConsole"
+ fork="true"
+ classpath="${classes.dir}:${bootstrap.jdk}/lib/tools.jar">
+ <jvmarg line="${jvm.args}"/>
+ </java>
+ </target>
+
+ <target name="clean" depends="-init,shared.clean">
+ <delete file="${dist.dir}/lib/jconsole.jar"/>
+ </target>
+
+</project>
diff --git a/jdk/make/netbeans/jconsole/nbproject/project.xml b/jdk/make/netbeans/jconsole/nbproject/project.xml
new file mode 100644
index 0000000..5bc4fef
--- /dev/null
+++ b/jdk/make/netbeans/jconsole/nbproject/project.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!DOCTYPE project [
+ <!ENTITY properties SYSTEM "../../common/properties.ent">
+ <!ENTITY share-sources SYSTEM "../../common/share-sources.ent">
+ <!ENTITY jtreg-sources SYSTEM "../../common/jtreg-sources.ent">
+ <!ENTITY build-folder SYSTEM "../../common/build-folder.ent">
+ <!ENTITY standard-bindings SYSTEM "../../common/standard-bindings.ent">
+ <!ENTITY share-view SYSTEM "../../common/share-view.ent">
+ <!ENTITY jtreg-view SYSTEM "../../common/jtreg-view.ent">
+ <!ENTITY file-view SYSTEM "../../common/file-view.ent">
+ <!ENTITY standard-actions SYSTEM "../../common/standard-actions.ent">
+ <!ENTITY java-data-no-native SYSTEM "../../common/java-data-no-native.ent">
+]>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/2">
+ <name>JConsole</name> <!-- Customized -->
+ <properties>
+ <property name="name">jconsole</property> <!-- Customized -->
+ &properties;
+ </properties>
+ <folders>
+ &share-sources;
+ &jtreg-sources;
+ &build-folder;
+ </folders>
+ <ide-actions>
+ &standard-bindings;
+ <action name="run">
+ <target>run</target>
+ </action>
+ <action name="debug">
+ <target>debug</target>
+ </action>
+ </ide-actions>
+ <view>
+ <items>
+ &share-view;
+ &jtreg-view;
+ &file-view;
+ </items>
+ <context-menu>
+ &standard-actions;
+ <ide-action name="run"/>
+ <ide-action name="debug"/>
+ </context-menu>
+ </view>
+ </general-data>
+ &java-data-no-native;
+ </configuration>
+</project>
diff --git a/jdk/make/netbeans/jmx/README b/jdk/make/netbeans/jmx/README
new file mode 100644
index 0000000..4e6c0e1
--- /dev/null
+++ b/jdk/make/netbeans/jmx/README
@@ -0,0 +1,90 @@
+Working On Java[TM] Management Extensions (JMX[TM)) Using NetBeans IDE
+
+README FIRST
+
+ make/netbeans/README for getting started with NetBeans IDE and OpenJDK,
+ and workings with OpenJDK NetBeans projects.
+
+This README focusses on working on the OpenJDK JMX API using NetBeans IDE.
+
+ This NetBeans project for OpenJDK JMX allows you to modify, build, and test
+ the JMX API in a standalone manner. It can also be used to generate
+ the JMX API documentation for preview.
+
+ The JMX API does not contain native code. It is a pure java library.
+ You do not need to install all the Java SE sources to work on JMX,
+ you only need the following subset:
+
+ make/netbeans/
+ src/share/classes/com/sun/jmx/
+ src/share/classes/javax/management/
+ test/TEST.ROOT
+ test/com/sun/management/
+ test/java/lang/management/
+ test/javax/management/
+
+ If you don't want to build the whole JDK, you will also need a
+ pre-built version of OpenJDK (or JDK 7). Edit your
+
+ $HOME/.openjdk/build.properties
+
+ file (create it if you don't have one yet) and set the bootstrap.jdk variable
+ point to that JDK:
+
+ bootstrap.jdk=<JDK_7_HOME>
+
+ Then from within NetBeans IDE open the JMX project, and invoke the
+ "Build Project" and "Test Project" target. Note that running all the
+ tests for JMX takes a while. The build may also fail if it doesn't
+ find a directory named src/${platform}. This may happen if you haven't
+ installed all OpenJDK sources. In this case, you can simply
+ create an empty directory with the name expected by the build mechanism.
+
+ Which tests are run are defined by the jtreg.test variable declared
+ in make/netbeans/jmx/build.properties. Note that JMX tests are all
+ placed under test/javax/management/. test/java/lang/management/
+ and test/com/sun/management/ contain some tests that happen to
+ use JMX and we therefore recommend to run these tests too.
+
+ If you are working on a JMX fix, don't forget to create a
+ corresponding jtreg unit test under test/javax/management/.
+ You can look at existing tests to see how this is done.
+
+The set of actions defined in this project are:
+
+* Build Project:
+
+ - Compiles JMX API source files and puts the class files under
+ build/${platform}-${arch}/classes.
+
+ - Generates a JMX jar file under dist/lib/jmx.jar. To use your modified
+ JMX classes instead of the built-in JDK classes you will need
+ to put this jar file in front of the bootclasspath:
+
+ java -Xbootclasspath/p:dist/lib/jmx.jar mytestapp.MyAppMainClass
+
+* Generate Javadoc for Project
+
+ - Generates the JMX API Documentation under
+
+ build/${platform}-${arch}/javadoc/jmx.
+
+* Test Project
+
+ - Runs the JMX and Management and Monitoring jtreg unit tests.
+
+ - The results are written under build/${platform}-${arch}/jtreg/jmx
+ and the HTML test report can be found at
+ build/${platform}-${arch}/jtreg/jmx/JTreport/report.html.
+
+* Clean Project
+
+ - Cleans the files created by this projet under build/
+ Some files may remain.
+
+
+IMPORTANT NOTE
+
+ Please make sure to follow carefully the governance rules documented at
+ http://openjdk.dev.java.net/
+
diff --git a/jdk/make/netbeans/jmx/build.properties b/jdk/make/netbeans/jmx/build.properties
new file mode 100644
index 0000000..6c4f336
--- /dev/null
+++ b/jdk/make/netbeans/jmx/build.properties
@@ -0,0 +1,55 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+includes=\
+ com/sun/jmx/ \
+ javax/management/ \
+ org/omg/stub/javax/management/
+
+excludes=\
+ com/sun/jmx/snmp/
+
+jtreg.tests=\
+ com/sun/management/ \
+ java/lang/management/ \
+ javax/management/
+
+project.spec.version = JMX API 2.0
+
+jar.jmx.name = jmx.jar
+jar.jmx.sealed = true
+jar.jmx.spec.title = JSR 003, 160, 255 - JMX API
+jar.jmx.spec.version = ${project.spec.version}
+jar.jmx.spec.vendor = Sun Microsystems, Inc.
+jar.jmx.impl.title = JSR 003, 160, 255 - OpenJDK 7 JMX API
+jar.jmx.impl.vendor = Project OpenJDK
+
+javadoc.options=-J-Xmx256m
diff --git a/jdk/make/netbeans/jmx/build.xml b/jdk/make/netbeans/jmx/build.xml
new file mode 100644
index 0000000..6e2696e
--- /dev/null
+++ b/jdk/make/netbeans/jmx/build.xml
@@ -0,0 +1,157 @@
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<project name="jmx" default="build" basedir=".">
+
+ <import file="../common/shared.xml"/>
+
+ <target name="-pre-init">
+ <!-- Set the values for build date and time -->
+ <tstamp>
+ <format property="BUILD_DATE" pattern="yyyy.MM.dd_HH:mm:ss_z" />
+ <format property="BUILD_DATE_SIMPLE" pattern="dd_MMM_yyyy" />
+ </tstamp>
+
+ <!-- These properties are set here instead of in the build.properties file, -->
+ <!-- because they depend on the values of BUILD_DATE and BUILD_DATE_SIMPLE -->
+ <!-- At this time, ./build.properties has not been loaded yet. -->
+ <property name="project.build.name" value="openjdk-bXX"/>
+ <property name="project.build.fulltag"
+ value="${ant.project.name}-${project.build.name}-${BUILD_DATE}" />
+
+ <!-- unchecked warnings will be fixed in JMX 2.0 as part of the work
+ being done on JSR 255 new features -->
+ <property name="javac.options"
+ value="-Xlint -Xlint:-unchecked -Xlint:-deprecation"/>
+ </target>
+
+
+ <target name="-pre-compile" depends="-init">
+ <!-- Dir to keep generated stub source -->
+ <mkdir dir="${gensrc.dir}" />
+ </target>
+
+
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!-- Call rmic-jmx subtargets -->
+
+ <target name="-rmic-jmx" depends="-init,-rmic-jmx-jrmp,-rmic-jmx-iiop"
+ description="Calls -init,-rmic-jmx-jrmp,-rmic-jmx-iiop"
+ />
+
+
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!-- Generate RMI JRMP stub class files for remote objects -->
+ <!-- Generated java files are kept in a separate directory -->
+
+ <target name="-rmic-jmx-jrmp" depends="-init"
+ description="Generate RMI JRMP stub class files for remote objects. Keep generated java files in separate dir." >
+
+ <!-- Dir to keep generated stub source -->
+ <mkdir dir="${gensrc.dir}" />
+
+ <rmic base="${classes.dir}/javax/management"
+ sourcebase="${gensrc.dir}"
+ includeAntRuntime="no"
+ includeJavaRuntime="no"
+ stubversion="1.2"
+ >
+ <include name="javax/management/remote/rmi/RMIConnectionImpl.class" />
+ <include name="javax/management/remote/rmi/RMIServerImpl.class" />
+ </rmic>
+
+ </target>
+
+
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!-- Generate RMI IIOP stub class files for remote objects -->
+
+ <target name="-rmic-jmx-iiop" depends="-init,-check-jmx-iiop-uptodate" unless="jmx-iiop-uptodate"
+ description="Generate RMI IIOP stub class files for remote objects. Do not keep generated java files." >
+
+ <rmic base="${classes.dir}"
+ includeAntRuntime="no"
+ includeJavaRuntime="no"
+ stubversion="1.2"
+ iiop="yes"
+ >
+ <include name="javax/management/remote/rmi/RMIConnectionImpl.class" />
+ <include name="javax/management/remote/rmi/RMIServerImpl.class" />
+ </rmic>
+
+ </target>
+
+
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!-- Check if jmx rmic generated IIOP stub and tie class files are up to date -->
+
+ <target name="-check-jmx-iiop-uptodate" depends="-init">
+
+ <uptodate property="jmx-iiop-uptodate"
+ srcfile="${classes.dir}/javax/management/remote/rmi/RMIConnectionImpl.class"
+ targetfile="${classes.dir}/org/omg/stub/javax/management/remote/rmi/_RMIConnectionImpl_Tie.class"
+ />
+ <uptodate property="jmx-iiop-uptodate"
+ srcfile="${classes.dir}/javax/management/remote/rmi/RMIServerImpl.class"
+ targetfile="${classes.dir}/org/omg/stub/javax/management/remote/rmi/_RMIServerImpl_Tie.class"
+ />
+
+ <echo message="jmx-iiop-uptodate=${jmx-iiop-uptodate}" />
+
+ </target>
+
+ <target name="-post-compile" depends="-init,-rmic-jmx"
+ description="Jar JMX class files (including RMI stubs)" >
+ <mkdir dir="${dist.dir}/lib"/>
+ <jar jarfile="${dist.dir}/lib/${jar.jmx.name}"
+ update="true"
+ index="false"
+ duplicate="fail">
+ <fileset dir="${classes.dir}" excludes="**/*.java"/>
+ <manifest >
+ <attribute name="Built-By" value="${user.name}" />
+ <section name="common">
+ <attribute name="Sealed" value="${jar.jmx.sealed}" />
+ <attribute name="Specification-Title" value="${jar.jmx.spec.title}" />
+ <attribute name="Specification-Version" value="${jar.jmx.spec.version}" />
+ <attribute name="Specification-Vendor" value="${jar.jmx.spec.vendor}" />
+ <attribute name="Implementation-Title" value="${jar.jmx.impl.title}" />
+ <attribute name="Implementation-Version" value="${project.build.fulltag}" />
+ <attribute name="Implementation-Vendor" value="${jar.jmx.impl.vendor}" />
+ </section>
+ </manifest>
+ </jar>
+ </target>
+
+ <target name="clean" depends="-init,shared.clean">
+ <delete file="${dist.dir}/lib/${jar.jmx.name}"/>
+ </target>
+</project>
diff --git a/jdk/make/netbeans/jmx/nbproject/project.xml b/jdk/make/netbeans/jmx/nbproject/project.xml
new file mode 100644
index 0000000..517576c
--- /dev/null
+++ b/jdk/make/netbeans/jmx/nbproject/project.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!DOCTYPE project [
+ <!ENTITY properties SYSTEM "../../common/properties.ent">
+ <!ENTITY share-sources SYSTEM "../../common/share-sources.ent">
+ <!ENTITY sample-sources SYSTEM "../../common/sample-sources.ent">
+ <!ENTITY jtreg-sources SYSTEM "../../common/jtreg-sources.ent">
+ <!ENTITY build-folder SYSTEM "../../common/build-folder.ent">
+ <!ENTITY standard-bindings SYSTEM "../../common/standard-bindings.ent">
+ <!ENTITY share-view SYSTEM "../../common/share-view.ent">
+ <!ENTITY jtreg-view SYSTEM "../../common/jtreg-view.ent">
+ <!ENTITY file-view SYSTEM "../../common/file-view.ent">
+ <!ENTITY standard-actions SYSTEM "../../common/standard-actions.ent">
+ <!ENTITY java-data-no-native SYSTEM "../../common/java-data-no-native.ent">
+]>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/2">
+ <name>JMX™</name> <!-- Customized -->
+ <properties>
+ <property name="name">jmx</property> <!-- Customized -->
+ &properties;
+ </properties>
+ <folders>
+ &share-sources;
+ &jtreg-sources;
+ &build-folder;
+ </folders>
+ <ide-actions>
+ &standard-bindings;
+ </ide-actions>
+ <view>
+ <items>
+ &share-view;
+ &jtreg-view;
+ &file-view;
+ </items>
+ <context-menu>
+ &standard-actions;
+ </context-menu>
+ </view>
+ </general-data>
+ &java-data-no-native;
+ </configuration>
+</project>
diff --git a/jdk/make/netbeans/swing/README b/jdk/make/netbeans/swing/README
new file mode 100644
index 0000000..2990760
--- /dev/null
+++ b/jdk/make/netbeans/swing/README
@@ -0,0 +1,62 @@
+Working on Swing Using the NetBeans IDE
+
+This Swing NetBeans project allows a developer interested in making changes to
+and/or fixing bugs in swing to modify, build, run and test swing in a
+standalone manner as well as generating the javadoc for the swing classes.
+
+README FIRST
+
+ make/netbeans/README to get started with NetBeans IDE and OpenJDK, and
+ working with the OpenJDK NetBeans projects.
+
+WORKING WITH SWING
+
+Swing doesn't contain native code; it's pure java. You don't need to
+have all the Java SE sources to work on Swing but just the following subset:
+
+ make/netbeans/
+ javax/swing/
+ com/sun/swing/
+ com/sun/java/swing/
+ sun/swing/
+
+The set of actions supported by this project are:
+
+* Build Project:
+
+ - Compiles Swing's source files and puts the class files under
+ build/${platform}-${arch}/classes.
+
+ - Generates swing.jar file under dist/lib/swing.jar
+
+ This new jar file could be used to patch an existing JDK installation
+ by using -Xbootclasspath/p:$MYSRC/dist/lib/swing.jar
+
+* Generate Javadoc for Project
+
+ - Generates the javadoc for the Swing source files,
+
+ - The javadoc is generated under build/${platform}-${arch}/javadoc/swing.
+
+* Run Project
+
+ - Builds and runs the SampleTree demo.
+
+* Debug Project
+
+ - Builds and then runs the debugger on the SampleTree demo.
+
+* Clean Project
+
+ - Cleans the files created by this project under build, dist, and demo.
+
+IMPORTANT NOTE
+
+ Please make sure to follow carefully the governance rules documented at
+ http://openjdk.dev.java.net/
+
+KNOWN ISSUES
+
+ When debugging the project, breakpoints set in SampleTree's code will be
+ stopped at, but the editor display will not update correctly. Breakpoints
+ outside of the constructor work as expected.
diff --git a/jdk/make/netbeans/swing/build.properties b/jdk/make/netbeans/swing/build.properties
new file mode 100644
index 0000000..2bc6dfc
--- /dev/null
+++ b/jdk/make/netbeans/swing/build.properties
@@ -0,0 +1,40 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+includes=\
+ javax/swing/ \
+ com/sun/swing/ \
+ com/sun/java/swing/ \
+ sun/swing/
+demos=\
+ jfc/SampleTree/
+javadoc.options=-J-Xmx256m
+javac.options=-Xlint -J-Xms80m -J-Xmx256m
diff --git a/jdk/make/netbeans/swing/build.xml b/jdk/make/netbeans/swing/build.xml
new file mode 100644
index 0000000..6157a06
--- /dev/null
+++ b/jdk/make/netbeans/swing/build.xml
@@ -0,0 +1,116 @@
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<project name="swing" default="build" basedir=".">
+
+ <import file="../common/shared.xml"/>
+
+ <target name="-pre-init" depends="-check-swing.windows" if="swing.windows">
+ <property name="excludes" value="com/sun/java/swing/plaf/gtk/"/>
+ </target>
+
+ <target name="-check-swing.windows">
+ <condition property="swing.windows">
+ <os family="windows"/>
+ </condition>
+ </target>
+
+ <target name="-post-compile">
+ <mkdir dir="${dist.dir}/lib"/>
+ <jar destfile="${dist.dir}/lib/swing.jar">
+ <fileset dir="${classes.dir}">
+ <include name="javax/swing/**/*.class"/>
+ <include name="com/sun/swing/**/*.class"/>
+ <include name="com/sun/java/swing/**/*.class"/>
+ <include name="sun/swing/**/*.class"/>
+ </fileset>
+ <fileset dir="${share.src.dir}">
+ <include name="javax/swing/**/*.bdtd"/>
+ <include name="javax/swing/**/*.css"/>
+ <include name="javax/swing/**/*.dtd"/>
+ <include name="javax/swing/**/*.gif"/>
+ <include name="javax/swing/**/*.html"/>
+ <include name="javax/swing/**/*.jpg"/>
+ <include name="javax/swing/**/*.png"/>
+ <include name="javax/swing/**/*.txt"/>
+ <include name="javax/swing/**/*.wav"/>
+
+ <include name="com/sun/swing/**/*.properties"/>
+
+ <include name="com/sun/java/swing/**/*.gif"/>
+ <include name="com/sun/java/swing/**/*.png"/>
+ <include name="com/sun/java/swing/**/*.properties"/>
+ <include name="com/sun/java/swing/**/*.xml"/>
+ </fileset>
+ </jar>
+ </target>
+
+ <target name="-demo-init" depends="-demo-init.unix,-demo-init.windows">
+ <property name="swing.demo.src" value="${root}/src/share/demo/jfc/SampleTree"/>
+ <property name="swing.demo.classes" value="${build.dir}/demo/jfc/SampleTree"/>
+ </target>
+
+ <target name="-demo-init.unix" if="osfamily.unix">
+ <property name="demo.bootclasspath"
+ value="-Xbootclasspath/p:${dist.dir}/lib/swing.jar:${classes.dir}"/>
+ </target>
+
+ <target name="-demo-init.windows" if="os.windows">
+ <property name="demo.bootclasspath"
+ value="-Xbootclasspath/p:${dist.dir}/lib/swing.jar;${classes.dir}"/>
+ </target>
+
+ <target name="run" depends="-init,-demo-init">
+ <mkdir dir="${swing.demo.classes}"/>
+ <property name="jvm.args" value=""/>
+ <javac srcdir="${swing.demo.src}" destdir="${swing.demo.classes}"
+ fork="true" failonerror="true"
+ classpath="${dist.dir}/lib/swing.jar:${classes.dir}"
+ debug="${javac.debug}" debuglevel="${javac.debuglevel}">
+ <compilerarg line="${javac.options}"/>
+ </javac>
+ <copy todir="${swing.demo.classes}">
+ <fileset dir="${swing.demo.src}" includes="resources/**/*.gif"/>
+ </copy>
+ <java classname="SampleTree" classpath="${swing.demo.classes}"
+ fork="true" failonerror="true"
+ jvm="${bootstrap.jdk}/bin/java">
+ <jvmarg line="${demo.bootclasspath}"/>
+ <arg line="${jvm.args}"/>
+ </java>
+ </target>
+
+ <target name="clean" depends="-init,-demo-init,shared.clean">
+ <delete file="${dist.dir}/lib/swing.jar"/>
+ <delete dir="${swing.demo.classes}"/>
+ </target>
+
+</project>
diff --git a/jdk/make/netbeans/swing/nbproject/project.xml b/jdk/make/netbeans/swing/nbproject/project.xml
new file mode 100644
index 0000000..f7cbf3f
--- /dev/null
+++ b/jdk/make/netbeans/swing/nbproject/project.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!DOCTYPE project [
+ <!ENTITY properties SYSTEM "../../common/properties.ent">
+ <!ENTITY share-sources SYSTEM "../../common/share-sources.ent">
+ <!ENTITY demo-sources SYSTEM "../../common/demo-sources.ent">
+ <!ENTITY build-folder SYSTEM "../../common/build-folder.ent">
+ <!ENTITY standard-bindings SYSTEM "../../common/standard-bindings.ent">
+ <!ENTITY share-view SYSTEM "../../common/share-view.ent">
+ <!ENTITY demo-view SYSTEM "../../common/demo-view.ent">
+ <!ENTITY file-view SYSTEM "../../common/file-view.ent">
+ <!ENTITY standard-actions SYSTEM "../../common/standard-actions.ent">
+ <!ENTITY java-data-no-native SYSTEM "../../common/java-data-no-native.ent">
+]>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/2">
+ <name>Swing</name> <!-- Customized -->
+ <properties>
+ <property name="name">swing</property> <!-- Customized -->
+ &properties;
+ </properties>
+ <folders>
+ &share-sources;
+ &demo-sources;
+ &build-folder;
+ </folders>
+ <ide-actions>
+ &standard-bindings;
+ <action name="run">
+ <target>run</target>
+ </action>
+ <action name="debug">
+ <target>debug</target>
+ </action>
+ </ide-actions>
+ <view>
+ <items>
+ &share-view;
+ &demo-view;
+ &file-view;
+ </items>
+ <context-menu>
+ &standard-actions;
+ <ide-action name="run"/>
+ <ide-action name="debug"/>
+ </context-menu>
+ </view>
+ </general-data>
+ &java-data-no-native;
+ </configuration>
+</project>
diff --git a/jdk/make/netbeans/world/README b/jdk/make/netbeans/world/README
new file mode 100644
index 0000000..72c21a9
--- /dev/null
+++ b/jdk/make/netbeans/world/README
@@ -0,0 +1,15 @@
+Building the entire Open JDK source code
+
+This project exists solely for building the entire Open JDK source code,
+i.e. both the Hotspot VM and the JDK.
+
+Building this project takes considerable time and disk space. Expect several
+hours and over 3GB. Given that it takes a long time to build all of this
+project code, you might prefer to build it from the command line using ant.
+
+Please note: the results of building this project are *not* put in the place
+used by other projects. In this case, the results are place in
+
+ <install-dir>/control/build/<platform>-<arch>
+and
+ <install-dir>/control/build/<platform>-<arch>-fastdebug
diff --git a/jdk/make/netbeans/world/build.properties b/jdk/make/netbeans/world/build.properties
new file mode 100644
index 0000000..4f094c4
--- /dev/null
+++ b/jdk/make/netbeans/world/build.properties
@@ -0,0 +1,34 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# - Neither the name of Sun Microsystems nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+includes=\
+ **
+use.make=true
diff --git a/jdk/make/netbeans/world/build.xml b/jdk/make/netbeans/world/build.xml
new file mode 100644
index 0000000..d02c66c
--- /dev/null
+++ b/jdk/make/netbeans/world/build.xml
@@ -0,0 +1,44 @@
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<project name="world" default="build" basedir=".">
+
+ <import file="../common/shared.xml"/>
+
+ <target name="-build-make" depends="-make.init" if="use.make">
+ <make-run target="dev" dir="${root}/../control/make" opts="SKIP_COMPARE_IMAGES=true"/>
+ </target>
+
+ <target name="-clean-make" depends="-make.init" if="use.make">
+ <make-run target="clean" dir="${root}/../control/make"/>
+ </target>
+
+</project>
diff --git a/jdk/make/netbeans/world/nbproject/project.xml b/jdk/make/netbeans/world/nbproject/project.xml
new file mode 100644
index 0000000..3c58f0f
--- /dev/null
+++ b/jdk/make/netbeans/world/nbproject/project.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!DOCTYPE project [
+ <!ENTITY properties SYSTEM "../../common/properties.ent">
+ <!ENTITY share-sources SYSTEM "../../common/share-sources.ent">
+ <!ENTITY unix-sources SYSTEM "../../common/unix-sources.ent">
+ <!ENTITY windows-sources SYSTEM "../../common/windows-sources.ent">
+ <!ENTITY build-folder SYSTEM "../../common/build-folder.ent">
+ <!ENTITY standard-bindings SYSTEM "../../common/standard-bindings.ent">
+ <!ENTITY share-view SYSTEM "../../common/share-view.ent">
+ <!ENTITY unix-view SYSTEM "../../common/unix-view.ent">
+ <!ENTITY windows-view SYSTEM "../../common/windows-view.ent">
+ <!ENTITY file-view SYSTEM "../../common/file-view.ent">
+ <!ENTITY standard-actions SYSTEM "../../common/standard-actions.ent">
+ <!ENTITY java-data-native SYSTEM "../../common/java-data-native.ent">
+]>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/2">
+ <name>World</name> <!-- Customized -->
+ <properties>
+ <property name="name">world</property> <!-- Customized -->
+ &properties;
+ </properties>
+ <folders>
+ &share-sources;
+ &unix-sources;
+ &windows-sources;
+ &build-folder;
+ </folders>
+ <ide-actions>
+ &standard-bindings;
+ </ide-actions>
+ <view>
+ <items>
+ &share-view;
+ &unix-view;
+ &windows-view;
+ &file-view;
+ </items>
+ <context-menu>
+ &standard-actions;
+ </context-menu>
+ </view>
+ </general-data>
+ &java-data-native;
+ </configuration>
+</project>
diff --git a/jdk/make/org/Makefile b/jdk/make/org/Makefile
new file mode 100644
index 0000000..0b66445
--- /dev/null
+++ b/jdk/make/org/Makefile
@@ -0,0 +1,37 @@
+#
+# Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all of java
+#
+
+BUILDDIR = ..
+PRODUCT = org
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = ietf jcp
+
+all build clean clobber::
+ $(SUBDIRS-loop)
diff --git a/jdk/make/org/ietf/Makefile b/jdk/make/org/ietf/Makefile
new file mode 100644
index 0000000..9c46187
--- /dev/null
+++ b/jdk/make/org/ietf/Makefile
@@ -0,0 +1,36 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building Java GSS-API API classes
+#
+
+BUILDDIR = ../..
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = jgss
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/org/ietf/jgss/FILES_java.gmk b/jdk/make/org/ietf/jgss/FILES_java.gmk
new file mode 100644
index 0000000..725f9cd
--- /dev/null
+++ b/jdk/make/org/ietf/jgss/FILES_java.gmk
@@ -0,0 +1,34 @@
+#
+# Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_java = \
+ org/ietf/jgss/Oid.java \
+ org/ietf/jgss/GSSName.java \
+ org/ietf/jgss/GSSManager.java \
+ org/ietf/jgss/ChannelBinding.java \
+ org/ietf/jgss/GSSException.java \
+ org/ietf/jgss/MessageProp.java \
+ org/ietf/jgss/GSSContext.java \
+ org/ietf/jgss/GSSCredential.java
diff --git a/jdk/make/org/ietf/jgss/Makefile b/jdk/make/org/ietf/jgss/Makefile
new file mode 100644
index 0000000..c72d527
--- /dev/null
+++ b/jdk/make/org/ietf/jgss/Makefile
@@ -0,0 +1,39 @@
+#
+# Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = org.ietf.jgss
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+include FILES_java.gmk
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/org/jcp/Makefile b/jdk/make/org/jcp/Makefile
new file mode 100644
index 0000000..1a0983b
--- /dev/null
+++ b/jdk/make/org/jcp/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building packages under org.jcp
+#
+
+BUILDDIR = ../..
+PACKAGE = org.jcp
+PRODUCT = jcp
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = org/jcp
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/sun/Makefile b/jdk/make/sun/Makefile
new file mode 100644
index 0000000..588957b
--- /dev/null
+++ b/jdk/make/sun/Makefile
@@ -0,0 +1,70 @@
+#
+# Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all of sun tools
+#
+
+BUILDDIR = ..
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+# Rhino/Mozilla java sources
+ORG_EXISTS := $(call DirExists,$(CLOSED_SRC)/share/classes/sun/org,,)
+ifneq ("$(ORG_EXISTS)", "")
+ ORG_SUBDIR = org
+endif
+
+# Non windows subdirs
+ifneq ($(PLATFORM), windows)
+ ifndef OPENJDK
+ ifeq ($(PLATFORM), solaris)
+ ifneq ($(ARCH), amd64)
+ DGA_SUBDIR = jdga
+ endif
+ endif
+ endif
+ HEADLESS_SUBDIR = headless
+ XAWT_SUBDIR = xawt
+endif
+
+ifndef OPENJDK
+ JDBC_SUBDIR = jdbc
+endif
+ifdef OPENJDK
+ RENDER_SUBDIR = pisces
+else
+ RENDER_SUBDIR = dcpr
+endif
+SUBDIRS = jar security javazic misc net audio $(RENDER_SUBDIR) image \
+ awt splashscreen $(XAWT_SUBDIR) \
+ $(HEADLESS_SUBDIR) $(DGA_SUBDIR) \
+ font jpeg cmm applet rmi beans $(JDBC_SUBDIR) \
+ jawt text nio launcher management $(ORG_SUBDIR) \
+ native2ascii serialver tools jconsole
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/sun/applet/Makefile b/jdk/make/sun/applet/Makefile
new file mode 100644
index 0000000..a9a51f6
--- /dev/null
+++ b/jdk/make/sun/applet/Makefile
@@ -0,0 +1,50 @@
+#
+# Copyright 1995-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for appletviewer classes, wrappers, and resources.
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.applet
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile.
+#
+AUTO_FILES_JAVA_DIRS = sun/applet
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+RESOURCE_BUNDLES_JAVA = sun/applet/resources/MsgAppletViewer.java
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/sun/audio/Makefile b/jdk/make/sun/audio/Makefile
new file mode 100644
index 0000000..5953a24
--- /dev/null
+++ b/jdk/make/sun/audio/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 1995-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building sun.audio
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.audio
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = sun/audio
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/sun/awt/CondenseRules.awk b/jdk/make/sun/awt/CondenseRules.awk
new file mode 100644
index 0000000..89cfd68
--- /dev/null
+++ b/jdk/make/sun/awt/CondenseRules.awk
@@ -0,0 +1,21 @@
+BEGIN {
+ previous="";
+ prefix="";
+ ORS="";
+ OFS="";
+}
+{
+ if ($1 != previous) {
+ if (previous != "") {
+ print "\n\n";
+ }
+ previous = $1;
+ print $1;
+ prefix="\t";
+ }
+ print prefix $2;
+ prefix=" ";
+}
+END {
+ print "\n";
+}
diff --git a/jdk/make/sun/awt/Depend.mak b/jdk/make/sun/awt/Depend.mak
new file mode 100644
index 0000000..0472042
--- /dev/null
+++ b/jdk/make/sun/awt/Depend.mak
@@ -0,0 +1,147 @@
+#
+# This makefile must be executed on a system with makedepend, such as Solaris.
+# In my copious amount of spare time, I hope to write a Java-based makedepend
+# to eliminate this dependency (no pun intended). TB
+
+BUILD_DIR = ../..
+TOPDIR = ../../..
+
+STUBDIR = WindowsSystemHeaderStubs
+BUILDSTUBDIR = BuildStubs
+
+SHARE_SRC = $(TOPDIR)/src/share
+SUN_SRC = $(SHARE_SRC)/native/sun
+COMP_SRC = $(SUN_SRC)/awt/alphacomposite
+DEBUG_SRC = $(SUN_SRC)/awt/debug
+IMG_SRC = $(SUN_SRC)/awt/image
+MEDIA_SRC = $(SUN_SRC)/awt/medialib
+J2D_SRC = $(SUN_SRC)/java2d
+J2D_FONT_SRC = $(SUN_SRC)/font
+J2D_WINDOWS_SRC = $(WINDOWS_SRC)/native/sun/java2d
+LOOP_SRC = $(SUN_SRC)/java2d/loops
+PIPE_SRC = $(SUN_SRC)/java2d/pipe
+WINDOWS_SRC = $(TOPDIR)/src/windows
+SRC = $(WINDOWS_SRC)/native/sun/windows
+
+SRCDIRS = \
+ $(COMP_SRC) \
+ $(DEBUG_SRC) \
+ $(IMG_SRC) \
+ $(IMG_SRC)/cvutils \
+ $(IMG_SRC)/gif \
+ $(MEDIA_SRC) \
+ $(J2D_SRC) \
+ $(J2D_FONT_SRC) \
+ $(J2D_SRC)/opengl \
+ $(J2D_WINDOWS_SRC)/windows \
+ $(J2D_WINDOWS_SRC)/d3d \
+ $(J2D_WINDOWS_SRC)/opengl \
+ $(LOOP_SRC) \
+ $(PIPE_SRC) \
+ $(SRC)
+
+INCLUDES = \
+ -I$(STUBDIR) \
+ -I$(BUILDSTUBDIR) \
+ -I$(SHARE_SRC)/javavm/export \
+ -I$(WINDOWS_SRC)/javavm/export \
+ -I$(SHARE_SRC)/native/common \
+ -I$(WINDOWS_SRC)/native/common \
+ -I$(SUN_SRC)/dc/doe \
+ -I$(SUN_SRC)/dc/path \
+ -I$(COMP_SRC) \
+ -I$(DEBUG_SRC) \
+ -I$(IMG_SRC) \
+ -I$(IMG_SRC)/cvutils \
+ -I$(MEDIA_SRC) \
+ -I$(J2D_SRC) \
+ -I$(J2D_FONT_SRC) \
+ -I$(J2D_SRC)/opengl \
+ -I$(J2D_WINDOWS_SRC) \
+ -I$(J2D_WINDOWS_SRC)/windows \
+ -I$(J2D_WINDOWS_SRC)/d3d \
+ -I$(J2D_WINDOWS_SRC)/opengl \
+ -I$(LOOP_SRC) \
+ -I$(PIPE_SRC) \
+ -I$(SRC)
+
+STUBFILES = \
+ $(STUBDIR)/ddraw.h \
+ $(STUBDIR)/d3d.h \
+ $(STUBDIR)/Ole2.h \
+ $(STUBDIR)/Zmouse.h \
+ $(STUBDIR)/cderr.h \
+ $(STUBDIR)/commdlg.h \
+ $(STUBDIR)/direct.h \
+ $(STUBDIR)/d3dcom.h \
+ $(STUBDIR)/imm.h \
+ $(STUBDIR)/ime.h \
+ $(STUBDIR)/io.h \
+ $(STUBDIR)/mmsystem.h \
+ $(STUBDIR)/new.h \
+ $(STUBDIR)/ole2.h \
+ $(STUBDIR)/richole.h \
+ $(STUBDIR)/richedit.h \
+ $(STUBDIR)/shellapi.h \
+ $(STUBDIR)/shlobj.h \
+ $(STUBDIR)/tchar.h \
+ $(STUBDIR)/winbase.h \
+ $(STUBDIR)/windef.h \
+ $(STUBDIR)/windows.h \
+ $(STUBDIR)/Windows.h \
+ $(STUBDIR)/windowsx.h \
+ $(STUBDIR)/winspool.h \
+ $(STUBDIR)/winuser.h \
+ $(STUBDIR)/wtypes.h \
+ $(STUBDIR)/zmouse.h \
+
+EXTRAFILES_c = \
+ img_colors.c
+
+default: dependencies
+
+include FILES_c_windows.gmk
+
+dependencies:
+ rm -rf make.depend
+ rm -rf make.tmp make.tmp2 make.tmp.bak
+ rm -rf $(STUBDIR) $(BUILDSTUBDIR) depend.filelist
+ for file in $(FILES_c) $(FILES_cpp) $(EXTRAFILES_c); do \
+ for dir in $(SRCDIRS); do \
+ if [ -f $$dir/$$file ]; then \
+ echo $$dir/$$file >>depend.filelist; \
+ fi; \
+ if [ -f $$dir/$${file}pp ]; then \
+ echo $$dir/$${file}pp >>depend.filelist; \
+ fi; \
+ done; \
+ done
+ touch make.tmp
+ mkdir $(STUBDIR)
+ touch $(STUBFILES)
+ mkdir $(BUILDSTUBDIR)
+ gnumake -f Depend.mak classhdrstubs
+ touch $(BUILDSTUBDIR)/awt_colors.h
+ cat depend.filelist | xargs -n 100 makedepend \
+ -DWIN32 -D_X86X -Dx86 -DDEBUG -D_MSC_VER -DMLIB_NO_LIBSUNMATH \
+ -DUNICODE -D_UNICODE \
+ -a -f make.tmp -o.obj $(INCLUDES)
+ fgrep .obj make.tmp | sed -f Depend.sed | sort -f -u | nawk -f CondenseRules.awk > make.depend
+ rm -rf make.tmp make.tmp2 make.tmp.bak
+ rm -rf $(STUBDIR) $(BUILDSTUBDIR) depend.filelist
+
+
+include FILES_export_windows.gmk
+
+EXTRAFILES_java = \
+ java/lang/Integer.java
+
+FILES_java = $(FILES_export) $(FILES_export2) $(FILES_export3) \
+ $(EXTRAFILES_java)
+
+classhdrstubs:
+ for file in `echo $(FILES_java) | \
+ tr ' ' '\n' | \
+ sed -e 'y/\//_/' -e 's/\.java/.h/'`; do \
+ echo "#include <jni.h>" > $(BUILDSTUBDIR)/$$file; \
+ done
diff --git a/jdk/make/sun/awt/Depend.sed b/jdk/make/sun/awt/Depend.sed
new file mode 100644
index 0000000..00a4bdd
--- /dev/null
+++ b/jdk/make/sun/awt/Depend.sed
@@ -0,0 +1,32 @@
+# Unqualify std headers
+# remove headers with no extension as well (e.g. C++ 94 STL headers) - robi
+# s/ \/usr\/include[^ ]*\.h//g
+s/ \/usr\/include[^ ]*//g
+
+# Unqualify std Windows headers
+# remove headers with no extension as well (e.g. C++ 94 STL headers) - robi
+# s/ WindowsSystemHeaderStubs[^ ]*\.h//g
+s/ WindowsSystemHeaderStubs[^ ]*//g
+
+# ####################################
+# Rules to allow for generation of dependencies on an unbuilt tree...
+#
+# BuildStubs is populated with stubs for include files that are
+# generated by the build and then dependencies are adjusted here
+#
+# Adjust awt_colors.h
+# Change BuildStubs to .
+s/ BuildStubs\/awt_colors.h/ $(OBJDIR)\/awt_colors.h/g
+#
+# Adjust CClassHeaders
+# Change BuildStubs to CClassHeaders
+s/ BuildStubs/ $(CLASSHDRDIR)/g
+#
+# End of unbuilt tree adjustments
+# ####################################
+
+# Remove any empty rules
+/:[ ]*$/d
+
+# Change .obj path from src to proper awt/obj or awt/obj_g directory
+s/^.*\/\(.*:\)/$(OBJDIR)\/\1:/
diff --git a/jdk/make/sun/awt/FILES_c_unix.gmk b/jdk/make/sun/awt/FILES_c_unix.gmk
new file mode 100644
index 0000000..c7ea985
--- /dev/null
+++ b/jdk/make/sun/awt/FILES_c_unix.gmk
@@ -0,0 +1,230 @@
+#
+# Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# The debug_* files included here aren't for 2D specifically but they
+# have no X dependency.
+
+FILES_2D_vis = \
+ vis_FuncArray.c \
+ java2d_Mlib.c \
+ mlib_ImageCreate.c \
+ mlib_ImageZoom_NN.c \
+ mlib_ImageCopy_Bit.c \
+ mlib_sys.c \
+ mlib_v_ImageClear.c \
+ mlib_v_ImageClear_f.c \
+ mlib_v_ImageConstXor.c \
+ mlib_v_ImageCopy.c \
+ mlib_v_ImageCopy_f.c \
+ mlib_v_ImageXor.c \
+ mlib_v_ImageZoom_NN_f.c \
+ vis_Interp.c \
+ vis_AlphaMacros.c \
+ vis_AlphaMaskBlit.c \
+ vis_AlphaMaskFill.c \
+ vis_ByteGray.c \
+ vis_ByteGray_FromRgb.c \
+ vis_ByteGray_Mask.c \
+ vis_ByteIndexed.c \
+ vis_DrawLine.c \
+ vis_FourByteAbgr.c \
+ vis_IntArgb.c \
+ vis_IntArgbPre.c \
+ vis_IntArgbPre_Mask.c \
+ vis_IntBgr.c \
+ vis_IntRgb.c \
+ vis_IntRgbx.c \
+ vis_SrcMaskFill.c \
+ vis_SrcOverMaskBlit.c \
+ vis_SrcOverMaskFill.c \
+ vis_FourByteAbgrPre.c \
+ vis_GlyphList.c \
+ vis_GlyphListXor.c \
+ vis_IntArgbBm.c \
+ vis_ThreeByteBgr.c \
+ vis_UshortGray.c \
+ vis_UshortGray_FromRgb.c \
+ vis_XorBlit.c
+
+FILES_2D_c = \
+ gifdecoder.c \
+ imageInitIDs.c \
+ img_colors.c \
+ img_globals.c \
+ SurfaceData.c \
+ Region.c \
+ BufImgSurfaceData.c \
+ Disposer.c \
+ Trace.c \
+ GraphicsPrimitiveMgr.c \
+ Blit.c \
+ BlitBg.c \
+ ScaledBlit.c \
+ FillRect.c \
+ FillSpans.c \
+ DrawLine.c \
+ DrawRect.c \
+ DrawPolygons.c \
+ DrawPath.c \
+ FillPath.c \
+ ProcessPath.c \
+ MaskBlit.c \
+ MaskFill.c \
+ TransformHelper.c \
+ AlphaMath.c \
+ AlphaMacros.c \
+ AnyByte.c \
+ ByteBinary1Bit.c \
+ ByteBinary2Bit.c \
+ ByteBinary4Bit.c \
+ ByteIndexed.c \
+ ByteGray.c \
+ Index8Gray.c \
+ Index12Gray.c \
+ AnyShort.c \
+ Ushort555Rgb.c \
+ Ushort565Rgb.c \
+ Ushort4444Argb.c \
+ Ushort555Rgbx.c \
+ UshortGray.c \
+ UshortIndexed.c \
+ Any3Byte.c \
+ ThreeByteBgr.c \
+ AnyInt.c \
+ IntArgb.c \
+ IntArgbPre.c \
+ IntArgbBm.c \
+ IntRgb.c \
+ IntBgr.c \
+ IntRgbx.c \
+ Any4Byte.c \
+ FourByteAbgr.c \
+ FourByteAbgrPre.c \
+ BufferedMaskBlit.c \
+ BufferedRenderPipe.c \
+ RenderBuffer.c \
+ ShapeSpanIterator.c \
+ SpanClipRenderer.c \
+ awt_ImageRep.c \
+ awt_ImagingLib.c \
+ awt_Mlib.c \
+ awt_parseImage.c \
+ DataBufferNative.c \
+ dither.c \
+ debug_assert.c \
+ debug_mem.c \
+ debug_trace.c \
+ debug_util.c
+
+# These files rely on motif to be built, and should not be included
+# in a headless build.
+
+FILES_MOTIF_c = \
+ awt_AWTEvent.c \
+ awt_Button.c \
+ awt_Canvas.c \
+ awt_Checkbox.c \
+ awt_Component.c \
+ awt_Cursor.c \
+ awt_DataTransferer.c \
+ awt_DrawingSurface.c \
+ awt_Event.c \
+ awt_FileDialog.c \
+ awt_GlobalCursorManager.c \
+ awt_GraphicsEnv.c \
+ awt_InputMethod.c \
+ awt_Insets.c \
+ awt_KeyboardFocusManager.c \
+ awt_Label.c \
+ awt_List.c \
+ awt_Menu.c \
+ awt_MenuBar.c \
+ awt_MenuComponent.c \
+ awt_MenuItem.c \
+ awt_motif.c \
+ awt_Plugin.c \
+ awt_PopupMenu.c \
+ awt_Robot.c \
+ awt_Scrollbar.c \
+ awt_ScrollPane.c \
+ awt_Selection.c \
+ awt_UNIXToolkit.c \
+ awt_TextArea.c \
+ awt_TextField.c \
+ awt_TopLevel.c \
+ awt_mgrsel.c \
+ awt_util.c \
+ awt_wm.c \
+ awt_XmDnD.c \
+ awt_dnd.c \
+ awt_dnd_ds.c \
+ awt_dnd_dt.c \
+ canvas.c \
+ cursor.c \
+ multi_font.c \
+ robot_common.c \
+ list.c \
+ multiVis.c \
+ XDrawingArea.c \
+ MouseInfo.c \
+ awt_xembed.c \
+ awt_xembed_server.c \
+ gtk2_interface.c \
+ swing_GTKEngine.c \
+ swing_GTKStyle.c
+
+
+# These files are required to be built, with or without motif. Some of
+# these are only dependent on X11, and some contain native source that
+# is required, even in a headless build.
+
+FILES_NO_MOTIF_c = \
+ awt_Font.c \
+ awt_MToolkit.c \
+ fontpath.c \
+ VDrawingArea.c \
+ X11Color.c \
+ X11Renderer.c \
+ X11PMBlitLoops.c \
+ X11SurfaceData.c \
+ X11FontScaler_md.c \
+ X11TextRenderer_md.c \
+ OGLBlitLoops.c \
+ OGLBufImgOps.c \
+ OGLContext.c \
+ OGLFuncs.c \
+ OGLMaskBlit.c \
+ OGLMaskFill.c \
+ OGLPaints.c \
+ OGLRenderQueue.c \
+ OGLRenderer.c \
+ OGLSurfaceData.c \
+ OGLTextRenderer.c \
+ OGLVertexCache.c \
+ GLXGraphicsConfig.c \
+ GLXSurfaceData.c \
+ AccelGlyphCache.c \
+ CUPSfuncs.c
diff --git a/jdk/make/sun/awt/FILES_c_windows.gmk b/jdk/make/sun/awt/FILES_c_windows.gmk
new file mode 100644
index 0000000..d01e5e8
--- /dev/null
+++ b/jdk/make/sun/awt/FILES_c_windows.gmk
@@ -0,0 +1,208 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ GraphicsPrimitiveMgr.c \
+ Blit.c \
+ BlitBg.c \
+ ScaledBlit.c \
+ FillRect.c \
+ FillSpans.c \
+ DrawLine.c \
+ DrawRect.c \
+ DrawPolygons.c \
+ DrawPath.c \
+ FillPath.c \
+ ProcessPath.c \
+ MaskBlit.c \
+ MaskFill.c \
+ TransformHelper.c \
+ AlphaMath.c \
+ AlphaMacros.c \
+ AnyByte.c \
+ ByteBinary1Bit.c \
+ ByteBinary2Bit.c \
+ ByteBinary4Bit.c \
+ ByteIndexed.c \
+ ByteGray.c \
+ Index8Gray.c \
+ Index12Gray.c \
+ AnyShort.c \
+ Ushort555Rgb.c \
+ Ushort565Rgb.c \
+ Ushort4444Argb.c \
+ Ushort555Rgbx.c \
+ UshortGray.c \
+ UshortIndexed.c \
+ Any3Byte.c \
+ ThreeByteBgr.c \
+ AnyInt.c \
+ IntArgb.c \
+ IntArgbPre.c \
+ IntArgbBm.c \
+ IntRgb.c \
+ IntBgr.c \
+ IntRgbx.c \
+ Any4Byte.c \
+ FourByteAbgr.c \
+ FourByteAbgrPre.c \
+ BufferedMaskBlit.c \
+ BufferedRenderPipe.c \
+ RenderBuffer.c \
+ ShapeSpanIterator.c \
+ SpanClipRenderer.c \
+ SurfaceData.c \
+ Region.c \
+ DataBufferNative.c \
+ BufImgSurfaceData.c \
+ Disposer.c \
+ Trace.c \
+ img_globals.c \
+ gifdecoder.c \
+ awt_parseImage.c \
+ awt_ImageRep.c \
+ awt_ImagingLib.c \
+ dither.c \
+ imageInitIDs.c \
+ debug_assert.c \
+ debug_mem.c \
+ debug_trace.c \
+ debug_util.c \
+ OGLBlitLoops.c \
+ OGLBufImgOps.c \
+ OGLContext.c \
+ OGLFuncs.c \
+ OGLMaskBlit.c \
+ OGLMaskFill.c \
+ OGLPaints.c \
+ OGLRenderQueue.c \
+ OGLRenderer.c \
+ OGLSurfaceData.c \
+ OGLTextRenderer.c \
+ OGLVertexCache.c \
+ WGLGraphicsConfig.c \
+ WGLSurfaceData.c \
+ AccelGlyphCache.c
+
+FILES_cpp = \
+ CmdIDList.cpp \
+ Hashtable.cpp \
+ GDIHashtable.cpp \
+ Devices.cpp \
+ ObjectList.cpp \
+ DDBlitLoops.cpp \
+ DDRenderer.cpp \
+ GDIBlitLoops.cpp \
+ GDIRenderer.cpp \
+ Win32OffScreenSurfaceData.cpp \
+ Win32SurfaceData.cpp \
+ WinBackBufferSurfaceData.cpp \
+ WindowsFlags.cpp \
+ WBufferStrategy.cpp \
+ WPrinterJob.cpp \
+ ddrawUtils.cpp \
+ dxCapabilities.cpp \
+ dxInit.cpp \
+ RegistryKey.cpp \
+ D3DBlitLoops.cpp \
+ D3DContext.cpp \
+ D3DMaskFill.cpp \
+ D3DRenderer.cpp \
+ D3DRuntimeTest.cpp \
+ D3DSurfaceData.cpp \
+ D3DTextRenderer_md.cpp \
+ D3DUtils.cpp \
+ ddrawObject.cpp \
+ awt_AWTEvent.cpp \
+ awt_BitmapUtil.cpp \
+ awt_Brush.cpp \
+ awt_Button.cpp \
+ awt_Canvas.cpp \
+ awt_Checkbox.cpp \
+ awt_Choice.cpp \
+ awt_Clipboard.cpp \
+ awt_Color.cpp \
+ awt_Component.cpp \
+ awt_Container.cpp \
+ awt_Cursor.cpp \
+ awt_DataTransferer.cpp \
+ awt_Debug.cpp \
+ awt_Dimension.cpp \
+ awt_Desktop.cpp \
+ awt_DesktopProperties.cpp \
+ awt_Dialog.cpp \
+ awt_DrawingSurface.cpp \
+ awt_FileDialog.cpp \
+ awt_Event.cpp \
+ awt_Font.cpp \
+ awt_Frame.cpp \
+ awt_GDIObject.cpp \
+ awt_IconCursor.cpp \
+ awt_InputEvent.cpp \
+ awt_InputMethod.cpp \
+ awt_InputTextInfor.cpp \
+ awt_Insets.cpp \
+ awt_KeyEvent.cpp \
+ awt_KeyboardFocusManager.cpp \
+ awt_Label.cpp \
+ awt_List.cpp \
+ awt_Menu.cpp \
+ awt_MenuBar.cpp \
+ awt_MenuItem.cpp \
+ awt_MMStub.cpp \
+ awt_MouseEvent.cpp \
+ awt_Object.cpp \
+ awt_Palette.cpp \
+ awt_Panel.cpp \
+ awt_PopupMenu.cpp \
+ awt_Pen.cpp \
+ awt_PrintControl.cpp \
+ awt_PrintDialog.cpp \
+ awt_PrintJob.cpp \
+ awt_Rectangle.cpp \
+ awt_Robot.cpp \
+ awt_Scrollbar.cpp \
+ awt_ScrollPane.cpp \
+ awt_TextArea.cpp \
+ awt_TextComponent.cpp \
+ awt_TextField.cpp \
+ awt_Toolkit.cpp \
+ awt_Unicode.cpp \
+ awt_Window.cpp \
+ awt_Win32GraphicsEnv.cpp \
+ awt_Win32GraphicsDevice.cpp \
+ awt_Win32GraphicsConfig.cpp \
+ awt_DnDDT.cpp \
+ awt_DnDDS.cpp \
+ awt_Mlib.cpp \
+ awt_new.cpp \
+ awt_TrayIcon.cpp \
+ ShellFolder2.cpp \
+ ThemeReader.cpp \
+ ComCtl32Util.cpp \
+ initIDs.cpp \
+ awt_dlls.cpp \
+ UnicowsLoader.cpp \
+ MouseInfo.cpp
diff --git a/jdk/make/sun/awt/FILES_export_unix.gmk b/jdk/make/sun/awt/FILES_export_unix.gmk
new file mode 100644
index 0000000..fba920b
--- /dev/null
+++ b/jdk/make/sun/awt/FILES_export_unix.gmk
@@ -0,0 +1,221 @@
+#
+# Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# FILES_export definitions for Solaris and Linux
+
+FILES_export = \
+ sun/font/FontManager.java \
+ sun/awt/image/ImageRepresentation.java \
+ sun/awt/image/GifImageDecoder.java \
+ sun/awt/image/NativeLibLoader.java \
+ sun/java2d/loops/Blit.java \
+ sun/java2d/loops/BlitBg.java \
+ sun/java2d/loops/ScaledBlit.java \
+ sun/java2d/loops/TransformBlit.java \
+ sun/java2d/loops/FillRect.java \
+ sun/java2d/loops/FillSpans.java \
+ sun/java2d/loops/DrawGlyphList.java \
+ sun/java2d/loops/DrawGlyphListAA.java \
+ sun/java2d/loops/DrawGlyphListLCD.java \
+ sun/java2d/loops/DrawLine.java \
+ sun/java2d/loops/DrawRect.java \
+ sun/java2d/loops/DrawPolygons.java \
+ sun/java2d/loops/DrawPath.java \
+ sun/java2d/loops/FillPath.java \
+ sun/java2d/loops/MaskBlit.java \
+ sun/java2d/loops/MaskFill.java \
+ sun/java2d/loops/TransformHelper.java \
+ sun/java2d/loops/GraphicsPrimitiveMgr.java \
+ sun/java2d/loops/GraphicsPrimitive.java \
+ sun/awt/image/ImagingLib.java \
+ sun/java2d/SurfaceData.java \
+ sun/java2d/SunGraphics2D.java \
+ sun/awt/KeyboardFocusManagerPeerImpl.java \
+ sun/awt/image/BufImgSurfaceData.java \
+ sun/awt/image/DataBufferNative.java \
+ \
+ sun/awt/motif/X11FontMetrics.java \
+ sun/awt/motif/X11Clipboard.java \
+ sun/awt/motif/X11Selection.java \
+ sun/awt/motif/X11SelectionHolder.java \
+ sun/awt/X11InputMethod.java \
+ sun/awt/motif/MInputMethod.java \
+ sun/awt/motif/MInputMethodControl.java \
+ sun/awt/motif/MCustomCursor.java \
+ sun/awt/motif/MFontConfiguration.java \
+ sun/awt/motif/MFontPeer.java \
+ sun/awt/motif/MToolkit.java \
+ sun/awt/motif/MComponentPeer.java \
+ sun/awt/motif/MButtonPeer.java \
+ sun/awt/motif/MCanvasPeer.java \
+ sun/awt/motif/MCheckboxPeer.java \
+ sun/awt/motif/MFileDialogPeer.java \
+ sun/awt/motif/MGlobalCursorManager.java \
+ sun/awt/motif/MTextFieldPeer.java \
+ sun/awt/motif/MLabelPeer.java \
+ sun/awt/motif/MListPeer.java \
+ sun/awt/motif/MWindowPeer.java \
+ sun/awt/motif/MMenuBarPeer.java \
+ sun/awt/motif/MMenuPeer.java \
+ sun/awt/motif/MPopupMenuPeer.java \
+ sun/awt/motif/MDialogPeer.java \
+ sun/awt/motif/MMenuItemPeer.java \
+ sun/awt/motif/MCheckboxMenuItemPeer.java \
+ sun/awt/motif/MChoicePeer.java \
+ sun/awt/motif/MTextAreaPeer.java \
+ sun/awt/motif/MScrollbarPeer.java \
+ sun/awt/motif/MScrollPanePeer.java \
+ sun/awt/motif/MFramePeer.java \
+ sun/awt/DebugSettings.java \
+ sun/awt/EmbeddedFrame.java \
+ sun/awt/motif/MEmbeddedFramePeer.java \
+ sun/awt/PlatformFont.java \
+ sun/awt/FontDescriptor.java \
+ sun/awt/NativeLibLoader.java \
+ sun/awt/motif/MDropTargetContextPeer.java \
+ sun/awt/motif/MDragSourceContextPeer.java \
+ sun/awt/motif/MRobotPeer.java \
+ sun/awt/motif/X11DragSourceContextPeer.java \
+ sun/awt/motif/X11DropTargetContextPeer.java \
+ sun/awt/X11GraphicsEnvironment.java \
+ sun/awt/X11GraphicsDevice.java \
+ sun/awt/X11GraphicsConfig.java \
+ sun/awt/CharsetString.java \
+ sun/awt/UNIXToolkit.java \
+ sun/java2d/pipe/BufferedContext.java \
+ sun/java2d/pipe/BufferedMaskBlit.java \
+ sun/java2d/pipe/BufferedOpCodes.java \
+ sun/java2d/pipe/BufferedPaints.java \
+ sun/java2d/pipe/BufferedRenderPipe.java \
+ sun/java2d/pipe/BufferedTextPipe.java \
+ sun/java2d/pipe/RenderBuffer.java \
+ sun/java2d/pipe/ShapeSpanIterator.java \
+ sun/java2d/pipe/SpanClipRenderer.java \
+ sun/java2d/pipe/RegionIterator.java \
+ sun/awt/image/IntegerComponentRaster.java \
+ sun/java2d/cmm/CMSManager.java \
+ sun/java2d/cmm/PCMM.java \
+ sun/java2d/cmm/ColorTransform.java \
+ sun/awt/datatransfer/DataTransferer.java \
+ sun/awt/dnd/SunDragSourceContextPeer.java \
+ sun/awt/motif/MDataTransferer.java \
+ sun/awt/motif/MToolkitThreadBlockedHandler.java \
+ sun/java2d/opengl/OGLBlitLoops.java \
+ sun/java2d/opengl/OGLContext.java \
+ sun/java2d/opengl/OGLMaskFill.java \
+ sun/java2d/opengl/OGLPaints.java \
+ sun/java2d/opengl/OGLRenderer.java \
+ sun/java2d/opengl/OGLRenderQueue.java \
+ sun/java2d/opengl/OGLSurfaceData.java \
+ sun/java2d/opengl/OGLTextRenderer.java \
+ sun/java2d/opengl/GLXGraphicsConfig.java \
+ sun/java2d/opengl/GLXSurfaceData.java \
+ sun/java2d/x11/X11PMBlitLoops.java \
+ sun/java2d/x11/X11PMBlitBgLoops.java \
+ sun/java2d/x11/X11Renderer.java \
+ sun/java2d/x11/X11SurfaceData.java \
+ com/sun/java/swing/plaf/gtk/GTKEngine.java \
+ com/sun/java/swing/plaf/gtk/GTKStyle.java
+
+
+FILES_export2 = \
+ java/awt/AlphaComposite.java \
+ java/awt/MouseInfo.java \
+ java/awt/Cursor.java \
+ java/awt/Graphics.java \
+ java/awt/Color.java \
+ java/awt/Image.java \
+ java/awt/Rectangle.java \
+ java/awt/Event.java \
+ java/awt/Font.java \
+ java/awt/Insets.java \
+ java/awt/Point.java \
+ java/awt/FontMetrics.java \
+ java/awt/Toolkit.java \
+ java/awt/Component.java \
+ java/awt/Container.java \
+ java/awt/Canvas.java \
+ java/awt/Button.java \
+ java/awt/List.java \
+ java/awt/Adjustable.java \
+ java/awt/Scrollbar.java \
+ java/awt/ScrollPane.java \
+ java/awt/ScrollPaneAdjustable.java \
+ java/awt/Window.java \
+ java/awt/TextField.java \
+ java/awt/Label.java \
+ java/awt/Choice.java \
+ java/awt/TextArea.java \
+ java/awt/MenuBar.java \
+ java/awt/Menu.java \
+ java/awt/MenuComponent.java \
+ java/awt/PopupMenu.java \
+ java/awt/Dialog.java \
+ java/awt/FileDialog.java \
+ java/awt/MenuItem.java \
+ java/awt/Checkbox.java \
+ java/awt/CheckboxMenuItem.java \
+ java/awt/CheckboxGroup.java \
+ java/awt/Frame.java \
+ java/awt/Transparency.java \
+ java/awt/AWTException.java \
+ java/awt/AWTEvent.java \
+ java/awt/AWTKeyStroke.java \
+ java/awt/KeyboardFocusManager.java \
+ java/awt/Dimension.java \
+ java/awt/SystemColor.java \
+ java/awt/TrayIcon.java \
+ java/awt/DisplayMode.java \
+ java/awt/color/ColorSpace.java \
+ java/awt/color/ICC_Profile.java \
+ java/awt/geom/PathIterator.java \
+ java/awt/image/AffineTransformOp.java \
+ java/awt/image/ImageConsumer.java \
+ java/awt/image/ImageObserver.java \
+ java/awt/image/BufferedImage.java \
+ java/awt/image/ColorModel.java \
+ java/awt/image/ConvolveOp.java \
+ java/awt/image/DirectColorModel.java \
+ java/awt/image/IndexColorModel.java \
+ java/awt/image/DataBuffer.java \
+ java/awt/datatransfer/Transferable.java \
+ java/awt/datatransfer/DataFlavor.java \
+ java/awt/datatransfer/UnsupportedFlavorException.java \
+ java/awt/datatransfer/Clipboard.java \
+ java/awt/datatransfer/ClipboardOwner.java \
+ java/awt/datatransfer/StringSelection.java \
+ java/awt/event/AdjustmentEvent.java \
+ java/awt/event/KeyEvent.java \
+ java/awt/event/MouseEvent.java \
+ java/awt/event/MouseWheelEvent.java \
+ java/awt/event/FocusEvent.java \
+ java/awt/event/InputEvent.java \
+ java/awt/event/WindowEvent.java \
+ java/awt/event/NativeLibLoader.java \
+ java/awt/peer/ComponentPeer.java \
+ java/awt/dnd/DnDConstants.java \
+ sun/awt/CausedFocusEvent.java \
+ sun/awt/motif/MEmbedCanvasPeer.java
+
diff --git a/jdk/make/sun/awt/FILES_export_windows.gmk b/jdk/make/sun/awt/FILES_export_windows.gmk
new file mode 100644
index 0000000..418e896
--- /dev/null
+++ b/jdk/make/sun/awt/FILES_export_windows.gmk
@@ -0,0 +1,248 @@
+#
+# Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# FILES_export definitions for Win32
+
+FILES_export = \
+ java/awt/AlphaComposite.java \
+ java/awt/MouseInfo.java \
+ java/awt/Graphics.java \
+ java/awt/Color.java \
+ java/awt/Image.java \
+ java/awt/Rectangle.java \
+ java/awt/Event.java \
+ java/awt/Font.java \
+ java/awt/FontMetrics.java \
+ java/awt/Toolkit.java \
+ java/awt/Component.java \
+ java/awt/Container.java \
+ java/awt/Canvas.java \
+ java/awt/Button.java \
+ java/awt/List.java \
+ java/awt/Adjustable.java \
+ java/awt/Scrollbar.java \
+ java/awt/ScrollPane.java \
+ java/awt/ScrollPaneAdjustable.java \
+ java/awt/Transparency.java \
+ java/awt/Window.java \
+ java/awt/TextField.java \
+ java/awt/Label.java \
+ java/awt/Choice.java \
+ java/awt/TextComponent.java \
+ java/awt/TextArea.java \
+ java/awt/MenuBar.java \
+ java/awt/Menu.java \
+ java/awt/Dialog.java \
+ java/awt/FileDialog.java \
+ java/awt/MenuItem.java \
+ java/awt/MenuComponent.java \
+ java/awt/Checkbox.java \
+ java/awt/CheckboxGroup.java \
+ java/awt/CheckboxMenuItem.java \
+ java/awt/Frame.java \
+ java/awt/Insets.java \
+ java/awt/Cursor.java \
+ java/awt/Dimension.java \
+ java/awt/PopupMenu.java \
+ java/awt/AWTEvent.java \
+ java/awt/AWTException.java \
+ java/awt/AWTKeyStroke.java \
+ java/awt/KeyboardFocusManager.java \
+ java/awt/DisplayMode.java \
+ java/awt/TrayIcon.java \
+ java/awt/datatransfer/StringSelection.java \
+ java/awt/datatransfer/Transferable.java \
+ java/awt/dnd/DnDConstants.java \
+ java/awt/event/ActionEvent.java \
+ java/awt/event/AdjustmentEvent.java \
+ java/awt/event/ComponentEvent.java \
+ java/awt/event/FocusEvent.java \
+ java/awt/event/ItemEvent.java \
+ java/awt/event/InputEvent.java \
+ java/awt/event/InvocationEvent.java \
+ java/awt/event/KeyEvent.java \
+ java/awt/event/MouseEvent.java \
+ java/awt/event/MouseWheelEvent.java \
+ java/awt/event/WindowEvent.java \
+ java/awt/event/InputMethodEvent.java \
+ java/awt/im/InputMethodHighlight.java \
+ java/awt/im/spi/InputMethod.java \
+ java/awt/font/TextHitInfo.java \
+ java/text/AttributedCharacterIterator.java \
+ java/text/AttributedString.java \
+ java/awt/geom/PathIterator.java \
+ java/awt/image/AffineTransformOp.java \
+ java/awt/image/ImageConsumer.java \
+ java/awt/image/ImageObserver.java \
+ java/awt/image/BufferedImage.java \
+ java/awt/image/ColorModel.java \
+ java/awt/image/ConvolveOp.java \
+ java/awt/image/DirectColorModel.java \
+ java/awt/image/IndexColorModel.java \
+ java/awt/image/Raster.java \
+ java/awt/color/ColorSpace.java \
+ java/awt/color/ICC_Profile.java \
+ java/awt/peer/ComponentPeer.java \
+ java/awt/peer/MenuComponentPeer.java \
+ java/io/InputStream.java
+
+FILES_export2 = \
+ sun/awt/im/InputMethodContext.java \
+ sun/awt/EmbeddedFrame.java \
+ sun/awt/KeyboardFocusManagerPeerImpl.java \
+ sun/awt/windows/WEmbeddedFrame.java \
+ sun/awt/windows/WEmbeddedFramePeer.java \
+ sun/awt/Win32GraphicsEnvironment.java \
+ sun/awt/Win32GraphicsDevice.java \
+ sun/awt/Win32GraphicsConfig.java \
+ sun/java2d/SunGraphicsEnvironment.java \
+ sun/java2d/SunGraphics2D.java \
+ sun/java2d/SurfaceData.java \
+ sun/awt/image/IntegerComponentRaster.java \
+ sun/awt/image/ImagingLib.java \
+ sun/awt/image/BufImgSurfaceData.java \
+ sun/awt/image/DataBufferNative.java \
+ sun/awt/shell/Win32ShellFolder2.java \
+ sun/java2d/windows/DDBlitLoops.java \
+ sun/java2d/windows/DDRenderer.java \
+ sun/java2d/windows/DDScaleLoops.java \
+ sun/java2d/windows/GDIBlitLoops.java \
+ sun/java2d/windows/GDIRenderer.java \
+ sun/java2d/windows/Win32OffScreenSurfaceData.java \
+ sun/java2d/windows/Win32SurfaceData.java \
+ sun/java2d/windows/WinBackBufferSurfaceData.java \
+ sun/java2d/windows/WindowsFlags.java \
+ sun/java2d/loops/Blit.java \
+ sun/java2d/loops/BlitBg.java \
+ sun/java2d/loops/ScaledBlit.java \
+ sun/java2d/loops/FillRect.java \
+ sun/java2d/loops/FillSpans.java \
+ sun/java2d/loops/DrawGlyphList.java \
+ sun/java2d/loops/DrawGlyphListAA.java \
+ sun/java2d/loops/DrawGlyphListLCD.java \
+ sun/java2d/loops/DrawLine.java \
+ sun/java2d/loops/DrawRect.java \
+ sun/java2d/loops/DrawPolygons.java \
+ sun/java2d/loops/DrawPath.java \
+ sun/java2d/loops/FillPath.java \
+ sun/java2d/loops/MaskBlit.java \
+ sun/java2d/loops/MaskFill.java \
+ sun/java2d/loops/TransformHelper.java \
+ sun/java2d/loops/GraphicsPrimitiveMgr.java \
+ sun/java2d/loops/GraphicsPrimitive.java \
+ sun/java2d/cmm/CMSManager.java \
+ sun/java2d/cmm/PCMM.java \
+ sun/java2d/cmm/ColorTransform.java \
+ sun/awt/ScrollPaneWheelScroller.java \
+ sun/awt/datatransfer/DataTransferer.java \
+ sun/awt/datatransfer/SunClipboard.java \
+ sun/awt/dnd/SunDragSourceContextPeer.java \
+ sun/awt/windows/WToolkitThreadBlockedHandler.java
+
+FILES_export3 = \
+ java/awt/CheckboxMenuItem.java \
+ java/awt/Menu.java \
+ java/awt/MenuBar.java \
+ java/awt/MenuComponent.java \
+ java/awt/MenuItem.java \
+ sun/awt/PlatformFont.java \
+ sun/awt/FontDescriptor.java \
+ sun/awt/CharsetString.java \
+ java/awt/image/DataBuffer.java \
+ sun/awt/image/GifImageDecoder.java \
+ sun/awt/image/ImageRepresentation.java \
+ sun/awt/windows/WCustomCursor.java \
+ sun/awt/windows/WDefaultFontCharset.java \
+ sun/awt/windows/WButtonPeer.java \
+ sun/awt/windows/WCanvasPeer.java \
+ sun/awt/windows/WCheckboxPeer.java \
+ sun/awt/windows/WCheckboxMenuItemPeer.java \
+ sun/awt/windows/WChoicePeer.java \
+ sun/awt/windows/WClipboard.java \
+ sun/awt/windows/WColor.java \
+ sun/awt/windows/WDataTransferer.java \
+ sun/awt/windows/WDesktopPeer.java \
+ sun/awt/windows/WDesktopProperties.java \
+ sun/awt/windows/WDialogPeer.java \
+ sun/awt/windows/WDragSourceContextPeer.java \
+ sun/awt/windows/WDropTargetContextPeer.java \
+ sun/awt/windows/WFileDialogPeer.java \
+ sun/awt/windows/WFontPeer.java \
+ sun/awt/windows/WFontMetrics.java \
+ sun/awt/windows/WFramePeer.java \
+ sun/awt/windows/WGlobalCursorManager.java \
+ sun/awt/windows/WInputMethod.java \
+ sun/awt/windows/WInputMethodDescriptor.java \
+ sun/awt/windows/WComponentPeer.java \
+ sun/awt/windows/WLabelPeer.java \
+ sun/awt/windows/WListPeer.java \
+ sun/awt/windows/WMenuBarPeer.java \
+ sun/awt/windows/WMenuItemPeer.java \
+ sun/awt/windows/WMenuPeer.java \
+ sun/awt/windows/WObjectPeer.java \
+ sun/awt/windows/WPopupMenuPeer.java \
+ sun/awt/windows/WPrintDialog.java \
+ sun/awt/windows/WPrintDialogPeer.java \
+ sun/awt/windows/WPrinterJob.java \
+ sun/awt/windows/WRobotPeer.java \
+ sun/awt/windows/WScrollbarPeer.java \
+ sun/awt/windows/WScrollPanePeer.java \
+ sun/awt/windows/WTextAreaPeer.java \
+ sun/awt/windows/WTextComponentPeer.java \
+ sun/awt/windows/WTextFieldPeer.java \
+ sun/awt/windows/WPanelPeer.java \
+ sun/awt/windows/WToolkit.java \
+ sun/awt/windows/WWindowPeer.java \
+ sun/awt/windows/ThemeReader.java \
+ sun/awt/windows/WBufferStrategy.java \
+ sun/awt/windows/WTrayIconPeer.java \
+ sun/awt/image/ImagingLib.java \
+ sun/java2d/pipe/BufferedContext.java \
+ sun/java2d/pipe/BufferedMaskBlit.java \
+ sun/java2d/pipe/BufferedOpCodes.java \
+ sun/java2d/pipe/BufferedPaints.java \
+ sun/java2d/pipe/BufferedRenderPipe.java \
+ sun/java2d/pipe/BufferedTextPipe.java \
+ sun/java2d/pipe/RenderBuffer.java \
+ sun/java2d/pipe/ShapeSpanIterator.java \
+ sun/java2d/pipe/SpanClipRenderer.java \
+ sun/java2d/pipe/RegionIterator.java \
+ sun/java2d/d3d/D3DBlitLoops.java \
+ sun/java2d/d3d/D3DMaskFill.java \
+ sun/java2d/d3d/D3DRenderer.java \
+ sun/java2d/d3d/D3DContext.java \
+ sun/java2d/d3d/D3DSurfaceData.java \
+ sun/java2d/d3d/D3DBackBufferSurfaceData.java \
+ sun/java2d/d3d/D3DTextRenderer.java \
+ sun/java2d/opengl/OGLBlitLoops.java \
+ sun/java2d/opengl/OGLContext.java \
+ sun/java2d/opengl/OGLMaskFill.java \
+ sun/java2d/opengl/OGLPaints.java \
+ sun/java2d/opengl/OGLRenderQueue.java \
+ sun/java2d/opengl/OGLRenderer.java \
+ sun/java2d/opengl/OGLSurfaceData.java \
+ sun/java2d/opengl/OGLTextRenderer.java \
+ sun/java2d/opengl/WGLGraphicsConfig.java \
+ sun/java2d/opengl/WGLSurfaceData.java
diff --git a/jdk/make/sun/awt/Makefile b/jdk/make/sun/awt/Makefile
new file mode 100644
index 0000000..53db7b5
--- /dev/null
+++ b/jdk/make/sun/awt/Makefile
@@ -0,0 +1,520 @@
+#
+# Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.awt
+LIBRARY = awt
+PRODUCT = sun
+
+#
+# Tell Defs.gmk that VIS is needed
+#
+VIS_NEEDED=true
+
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Use highest optimization level
+#
+_OPT = $(CC_HIGHEST_OPT)
+
+OTHER_CFLAGS += -D__MEDIALIB_OLD_NAMES -D__USE_J2D_NAMES
+
+#
+# Files
+#
+
+#
+# Include all Java source files in sun/awt and sun/java2d, except for:
+# sun/awt/resources handled by java/awt/Makefile
+# sun/java2d/pisces handled by sun/pisces/Makefile
+#
+AUTO_FILES_JAVA_DIRS = sun/awt sun/java2d
+AUTO_JAVA_PRUNE = resources pisces
+
+ifeq ($(PLATFORM), windows)
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv WINDOWS
+
+#
+# Files
+#
+include FILES_c_windows.gmk
+include FILES_export_windows.gmk
+
+#
+# Prune files that are currently unused on Windows (but still used on
+# Solaris/Linux).
+#
+AUTO_JAVA_PRUNE += RemoteOffScreenImage.java
+
+OTHER_CXXFLAGS += -DD3D_OVERLOADS
+OTHER_CFLAGS += $(GX_OPTION) -DMLIB_NO_LIBSUNMATH -DUNICODE -D_UNICODE
+OTHER_CXXFLAGS += $(GX_OPTION) -DUNICODE -D_UNICODE
+
+ifeq ($(ARCH_DATA_MODEL), 64)
+ OTHER_CFLAGS += -DMLIB_OS64BIT
+endif
+
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ WINDOWS
+endif # PLATFORM
+
+ifneq ($(PLATFORM), windows)
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv SOLARIS/LINUX
+
+#
+# Files
+#
+include FILES_c_unix.gmk
+include FILES_export_unix.gmk
+#
+# Prune the sun/awt/X11 subdirectory, which is handled by sun/xawt/Makefile.
+# Also prune files that are currently unused on Solaris/Linux (but still
+# used on Windows).
+#
+AUTO_JAVA_PRUNE += X11 AWTCharset.java
+
+ifeq ($(PLATFORM), solaris)
+FILES_c = $(FILES_2D_c)
+FILES_c += awt_LoadLibrary.c
+OTHER_LDLIBS = $(JVMLIB) $(LIBM) -ldl
+ifeq ($(CC_VER), 5.8)
+ ifndef REMOVE_ALL_WORKAROUNDS
+ ifeq ($(ARCH_FAMILY), i586)
+ # If on Solaris 11 (or dlfcn.h has unknown_control_flow pragmas in it)
+ # we trigger a SS11 bug that causes the compiler to crash (bug 6343678)
+ # Here we check to see if we need this workaround and change the opt
+ # settings for this one file.
+ USE_WORKAROUND:=$(shell $(GREP) unknown_control_flow /usr/include/dlfcn.h)
+ ifneq ($(USE_WORKAROUND),)
+ ifeq ($(FASTDEBUG), true)
+ CFLAGS_DBG/awt_Mlib.o = -xO0 \
+ $(warning "WARNING: Using workaround for SS11 bug 6343678, on $@")
+ endif
+ # Compiler bug 6343678 need to prevent a SEGV in the compiler
+ CFLAGS_OPT/awt_Mlib.o = -g \
+ $(warning "WARNING: Using workaround for SS11 bug 6343678, on $@")
+ endif
+ endif
+ endif
+endif
+endif
+
+ifeq ($(PLATFORM), linux)
+FILES_c = $(FILES_2D_c)
+FILES_c += awt_LoadLibrary.c
+OTHER_CFLAGS += -DMLIB_NO_LIBSUNMATH
+OTHER_LDLIBS = $(JVMLIB) $(LIBM) -ldl
+endif
+
+FILES_c += initIDs.c
+
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SOLARIS/LINUX
+endif # PLATFORM
+
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv SOLARIS-SPARC
+# solaris-sparc and solaris-sparcv9 both build 'vis'
+ifeq ("$(PLATFORM)-$(ARCH_FAMILY)", "solaris-sparc")
+ FILES_c += $(FILES_2D_vis)
+ ASFLAGS += -P
+ FILES_s += mlib_v_ImageCopy_blk.s
+ INLINE_VIS = $(PLATFORM_SRC)/native/sun/awt/medialib/vis_$(ARCH_DATA_MODEL).il
+ CFLAGS_sparcv9 = -DMLIB_OS64BIT
+
+ CFLAGS += $(CFLAGS_$(ARCH)) -DMLIB_ADD_SUFF $(INLINE_VIS) \
+ -I$(SHARE_SRC)/native/sun/awt/medialib \
+ -I$(PLATFORM_SRC)/native/sun/awt/medialib \
+ -I$(PLATFORM_SRC)/native/sun/java2d/loops
+
+vpath %.c $(PLATFORM_SRC)/native/sun/java2d/loops
+vpath %.c $(SHARE_SRC)/native/sun/awt/medialib
+vpath %.c $(PLATFORM_SRC)/native/sun/awt/medialib
+vpath %.s $(PLATFORM_SRC)/native/sun/awt/medialib
+
+else
+ FILES_c += MapAccelFunc.c
+endif
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SOLARIS-SPARC
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+ifeq ($(PLATFORM), windows)
+ RESOURCE_BUNDLES_COMPILED_PROPERTIES += \
+ sun/awt/windows/awtLocalization.properties
+endif
+
+#
+# Rules
+#
+ifeq ($(PLATFORM), linux)
+ FILES_m = mapfile-vers-linux
+ # libawt.so on Linux is statically linked with Motif and contains all the
+ # Xm symbols. Mapfile is disabled so the symbols will remain public.
+ LDNOMAP=true
+endif
+
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+build: fontconfigs
+
+
+ifeq ($(PLATFORM), windows)
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv WINDOWS
+#
+# Additional dependencies.
+#
+# If make.depend is not working correctly, then it can be omitted
+# if you always build from a clean workspace.
+
+include make.depend
+
+# required additional rules:
+
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ WINDOWS
+endif # PLATFORM
+
+ifneq ($(PLATFORM), windows)
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv SOLARIS/LINUX
+
+ifndef OPENJDK
+build: dgalibs
+endif
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SOLARIS/LINUX
+endif # PLATFORM
+
+clobber clean:: java2d.clean fontconfigs.clean
+
+ifndef OPENJDK
+clobber clean:: dgalib.clean
+endif
+
+java2d.clean:
+ $(RM) -r $(CLASSBINDIR)/sun/java2d .classes.*
+
+#
+# Add to the ambient vpath to pick up files in subdirectories
+#
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/image
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/image/gif
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/image/cvutils
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/shell
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/medialib
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/debug
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/../java2d
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/../java2d/loops
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/../java2d/pipe
+vpath %.cpp $(SHARE_SRC)/native/$(PKGDIR)/image
+ifeq ($(PLATFORM), windows)
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv WINDOWS
+vpath %.cpp $(PLATFORM_SRC)/native/sun/windows
+vpath %.cpp $(PLATFORM_SRC)/native/$(PKGDIR)
+vpath %.cpp $(PLATFORM_SRC)/native/$(PKGDIR)/../java2d/windows
+vpath %.cpp $(PLATFORM_SRC)/native/$(PKGDIR)/../java2d/d3d
+vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)/../java2d/opengl
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/../java2d/opengl
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/../font
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ WINDOWS
+endif # PLATFORM
+
+ifeq ($(PLATFORM), linux)
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv LINUX
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/../java2d/opengl
+vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)/../java2d/opengl
+vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)/../java2d/x11
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/../font
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ LINUX
+endif # PLATFORM
+
+ifeq ($(PLATFORM), windows)
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv WINDOWS
+OTHER_LDLIBS = kernel32.lib user32.lib gdi32.lib winspool.lib \
+ imm32.lib ole32.lib uuid.lib $(JVMLIB) \
+ shell32.lib
+
+clean:: awt.clean
+
+awt.clean:
+ $(RM) $(TEMPDIR)/awt.ico
+ $(RM) $(TEMPDIR)/awt.res
+ $(RM) $(TEMPDIR)/hand.cur
+ $(RM) $(TEMPDIR)/check.bmp
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ WINDOWS
+endif # PLATFORM
+
+ifneq ($(PLATFORM), windows)
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv SOLARIS/LINUX
+
+LIBXTST = -lXtst
+
+# Use -lXmu for EditRes support
+LIBXMU_DBG = -lXmu
+LIBXMU_OPT =
+LIBXMU = $(LIBXMU_$(VARIANT))
+
+#
+# Extra C flags.
+#
+
+
+ifndef OPENJDK
+
+#
+# Solaris X11 Direct Graphics Access library
+#
+
+_DGALIBS_sparc = \
+ libxinerama.so \
+ libjdgaSUNWcg6.so \
+ libjdgaSUNWffb.so \
+ libjdgaSUNWm64.so \
+ libjdgaSUNWafb.so
+
+_DGALIBS_sparcv9 = \
+ libxinerama.so \
+ libjdgaSUNWcg6.so \
+ libjdgaSUNWffb.so \
+ libjdgaSUNWm64.so \
+ libjdgaSUNWafb.so
+
+_DGALIBS_i586 = # no i586 library yet
+
+_DGALIBS_amd64 = # no amd64 library yet
+
+DGALIBS = $(_DGALIBS_$(ARCH):%=$(LIBDIR)/$(LIBARCH)/%)
+
+dgalibs: $(DGALIBS)
+
+$(LIBDIR)/$(LIBARCH)/libxinerama.so: $(CLOSED_SRC)/solaris/lib/$(ARCH)/libxinerama.so
+ $(install-file)
+ $(CHMOD) a+x $@
+
+$(LIBDIR)/$(LIBARCH)/libjdgaSUNW%.so: $(CLOSED_SRC)/solaris/lib/$(ARCH)/libjdgaSUNW%.so
+ $(install-file)
+ $(CHMOD) a+x $@
+
+$(LIBDIR)/$(LIBARCH)/libjdgaSUNWafb.so: $(LIBDIR)/$(LIBARCH)/libjdgaSUNWffb.so
+ $(prep-target)
+ $(LN) -s libjdgaSUNWffb.so $(LIBDIR)/$(LIBARCH)/libjdgaSUNWafb.so
+
+clean:: dgalib.clean
+
+dgalib.clean:
+ $(RM) $(LIBDIR)/$(LIBARCH)/libjdgaSUNW* $(LIBDIR)/$(LIBARCH)/libxinerama.so
+endif
+
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SOLARIS/LINUX
+endif # PLATFORM
+
+#
+# Font configs
+#
+
+ifeq ($(PLATFORM), windows)
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv WINDOWS
+
+FONTCONFIGS_SRC = $(PLATFORM_SRC)/classes/sun/awt/windows
+_FONTCONFIGS = \
+ fontconfig.properties \
+ fontconfig.98.properties
+
+FONTCONFIGS_SRC_PREFIX =
+
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ WINDOWS
+endif # PLATFORM
+
+ifeq ($(PLATFORM), linux)
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv LINUX
+ifdef OPENJDK
+
+FONTCONFIGS_SRC = $(PLATFORM_SRC)/classes/sun/awt/fontconfigs
+_FONTCONFIGS = \
+ fontconfig.properties \
+ fontconfig.SuSE.properties \
+ fontconfig.Ubuntu.properties \
+ fontconfig.Fedora.properties
+else
+
+FONTCONFIGS_SRC = $(CLOSED_SRC)/solaris/classes/sun/awt/fontconfigs
+_FONTCONFIGS = \
+ fontconfig.properties \
+ fontconfig.RedHat.properties \
+ fontconfig.RedHat.2.1.properties \
+ fontconfig.RedHat.3.properties \
+ fontconfig.RedHat.4.properties \
+ fontconfig.Sun.properties \
+ fontconfig.Turbo.properties \
+ fontconfig.SuSE.properties
+endif
+
+FONTCONFIGS_SRC_PREFIX = $(PLATFORM).
+
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ LINUX
+endif # PLATFORM
+
+ifeq ($(PLATFORM), solaris)
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv SOLARIS
+
+FONTCONFIGS_SRC = $(PLATFORM_SRC)/classes/sun/awt/fontconfigs
+_FONTCONFIGS = \
+ fontconfig.properties \
+ fontconfig.5.9.properties \
+ fontconfig.5.8.properties
+
+FONTCONFIGS_SRC_PREFIX = $(PLATFORM).
+
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SOLARIS
+endif # PLATFORM
+
+FONTCONFIGS = $(_FONTCONFIGS:%=$(LIBDIR)/%.src)
+BINARYFONTCONFIGS = $(_FONTCONFIGS:%.properties=$(LIBDIR)/%.bfc)
+
+fontconfigs: $(FONTCONFIGS) $(BINARYFONTCONFIGS)
+
+$(LIBDIR)/%.src: $(FONTCONFIGS_SRC)/$(FONTCONFIGS_SRC_PREFIX)%
+ $(install-file)
+
+COMPILEFONTCONFIG_JARFILE = $(BUILDTOOLJARDIR)/compilefontconfig.jar
+
+$(LIBDIR)/%.bfc: $(FONTCONFIGS_SRC)/$(FONTCONFIGS_SRC_PREFIX)%.properties \
+ $(COMPILEFONTCONFIG_JARFILE)
+ $(prep-target)
+ $(BOOT_JAVA_CMD) -jar $(COMPILEFONTCONFIG_JARFILE) $< $@
+ $(CHMOD) 444 $(@)
+ @$(java-vm-cleanup)
+
+fontconfigs.clean :
+ $(RM) $(FONTCONFIGS)
+ $(RM) $(BINARYFONTCONFIGS)
+
+ifeq ($(PLATFORM), windows)
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv WINDOWS
+OTHER_CFLAGS += $(GX_OPTION) -DUNICODE -D_UNICODE
+
+ifeq ($(MILESTONE), internal)
+ CPPFLAGS += -DINTERNAL_BUILD
+endif
+
+#
+# Useful variables that name parts of the src tree.
+#
+WINAWT_native = $(PLATFORM_SRC)/native/sun/windows
+WINAWT_COMMON_native = $(PLATFORM_SRC)/native/sun/awt_common
+
+# FIXME: awt shouldn't have to see the VM's private headers.
+# FIXME: if you re-order this list, the build breaks, possibly because
+# of filename collision. Such a collision, if present, is pure
+# evil. Need to investigate this.
+
+OTHER_INCLUDES += -I$(CLASSHDRDIR)/../../java/jvm \
+ -I$(OBJDIR) \
+ -I$(SHARE_SRC)/native/common \
+ -I$(WINAWT_native) \
+ -I$(DXSDK_INCLUDE_PATH) \
+ -I$(SHARE_SRC)/native/sun/awt/image/cvutils \
+ -I$(SHARE_SRC)/native/sun/awt/image \
+ -I$(SHARE_SRC)/native/sun/java2d/loops \
+ -I$(SHARE_SRC)/native/sun/java2d \
+ -I$(PLATFORM_SRC)/native/sun/java2d \
+ -I$(SHARE_SRC)/native/sun/java2d/opengl \
+ -I$(PLATFORM_SRC)/native/sun/java2d/d3d \
+ -I$(PLATFORM_SRC)/native/sun/java2d/opengl \
+ -I$(PLATFORM_SRC)/native/sun/java2d/windows \
+ -I$(SHARE_SRC)/native/sun/font \
+ -I$(SHARE_SRC)/native/sun/java2d/pipe \
+ -I$(SHARE_SRC)/native/sun/dc/path \
+ -I$(SHARE_SRC)/native/sun/dc/doe \
+ -I$(SHARE_SRC)/native/sun/awt/debug \
+ -I$(PLATFORM_SRC)/native/sun/awt \
+# -I$(WINAWT_COMMON_native)
+
+# this is only required for compiling )/native/sun/awt/medialib/*.c files
+#
+OTHER_INCLUDES += -I$(SHARE_SRC)/native/sun/awt/medialib
+
+#
+# .res file construction.
+#
+
+ifdef OPENJDK
+ RC_FLAGS += -i "$(PLATFORM_SRC)/resource/icons"
+else
+ RC_FLAGS += -i "$(CLOSED_SRC)/windows/native/sun/windows"
+endif
+VERSIONINFO_RESOURCE = $(WINAWT_native)/awt.rc
+
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ WINDOWS
+endif # PLATFORM
+
+ifneq ($(PLATFORM), windows)
+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv SOLARIS/LINUX
+
+#
+# Other extra flags needed for compiling.
+#
+
+ifeq ($(PLATFORM), linux)
+CPPFLAGS += -I$(OPENWIN_HOME)/include \
+ -I$(OPENWIN_HOME)/include/X11/extensions \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/font
+endif
+CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/debug \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../font \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/../font \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/image \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/image/cvutils \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/shell \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/medialib \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/medialib \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../java2d \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/../java2d \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../java2d/loops \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../java2d/pipe \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../java2d/opengl \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/../java2d/opengl \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/../java2d/x11 \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../dc/doe \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../dc/path \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/../jdga \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR) \
+ $(EVENT_MODEL)
+
+ifeq ($(PLATFORM), linux)
+LDFLAGS += -L$(OPENWIN_LIB)
+endif
+
+LDFLAGS += -L$(LIBDIR)/$(LIBARCH)/$(TSOBJDIR) \
+ $(AWT_RUNPATH)
+
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SOLARIS/LINUX
+endif # PLATFORM
+
+CLASSES.export += java.io.InputStream \
+ java.lang.Integer \
+ java.lang.ThreadGroup
+
+.PHONY: dgalibs dgalib.clean fontconfigs fontconfigs.clean
+
diff --git a/jdk/make/sun/awt/README b/jdk/make/sun/awt/README
new file mode 100644
index 0000000..5246150
--- /dev/null
+++ b/jdk/make/sun/awt/README
@@ -0,0 +1,28 @@
+README:
+
+This directory builds the new version of the Windows AWT. It's been built
+successfully with Visual C++ 4.1, but since it uses very little of VC++'s
+runtime, it will probably work with other versions of that compiler.
+
+Included in this project is a generated file, make.depend, which lists
+all interdependencies of the source files. This file is generated *on
+Solaris* with the following commands:
+
+ % sccs edit make.depend
+ % gnumake -f Depend.mak
+ % sccs delget make.depend
+
+This step only needs to be run when new files are added to the project,
+or include statements are changed.
+
+Also, if new CClassHeader dependencies are added for Java class files
+that are not built from a Java source file listed in java_awt.jmk or
+windows_awt.jmk then you need to update the FILES_java list in the
+"else" part of the "ifdef JFILES" branch in Depend.mak.
+At some point we should look at a way to share the explicit list of
+exported files between Depend.mak and GNUmakefile.
+
+****NOTE****
+ In order to run this command, the executable
+/usr/openwin/bin/makedepend is required to be in your $PATH.
+****NOTE****
diff --git a/jdk/make/sun/awt/make.depend b/jdk/make/sun/awt/make.depend
new file mode 100644
index 0000000..dc05d77
--- /dev/null
+++ b/jdk/make/sun/awt/make.depend
@@ -0,0 +1,469 @@
+$(OBJDIR)/AccelGlyphCache.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h
+
+$(OBJDIR)/AlphaMacros.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/AlphaMath.obj:: ../../../src/share/native/sun/java2d/loops/AlphaMath.h
+
+$(OBJDIR)/Any3Byte.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/Any3Byte.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/Any4Byte.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/Any4Byte.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/AnyByte.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByte.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/AnyInt.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/AnyShort.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/awt_AWTEvent.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_BitmapUtil.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_BitmapUtil.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Brush.obj:: $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Button.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Button.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WButtonPeer.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Button.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Canvas.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsConfig.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Checkbox.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Checkbox.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WCheckboxPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Checkbox.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Choice.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Choice.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Toolkit.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WChoicePeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Choice.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Clipboard.obj:: $(CLASSHDRDIR)/sun_awt_windows_WClipboard.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Clipboard.h ../../../src/windows/native/sun/windows/awt_DataTransferer.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Color.obj:: $(CLASSHDRDIR)/sun_awt_windows_WColor.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Color.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Component.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Color.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_InputMethodEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_MouseWheelEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Insets.h $(CLASSHDRDIR)/java_awt_KeyboardFocusManager.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Toolkit.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WInputMethod.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPanelPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jawt.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Cursor.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_InputEvent.h ../../../src/windows/native/sun/windows/awt_InputTextInfor.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_KeyEvent.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_MouseEvent.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Container.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Cursor.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Cursor.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WCustomCursor.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WGlobalCursorManager.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Cursor.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_IconCursor.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_DataTransferer.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_TextComponent.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_datatransfer_DataTransferer.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDataTransferer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/locale_str.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_DataTransferer.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_TextComponent.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Debug.obj:: $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Desktop.obj:: ../../../src/share/javavm/export/jni.h ../../../src/windows/javavm/export/jni_md.h
+
+$(OBJDIR)/awt_DesktopProperties.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDesktopProperties.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DesktopProperties.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Dialog.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Dimension.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_dlls.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_DnDDS.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_dnd_DnDConstants.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_dnd_SunDragSourceContextPeer.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDragSourceContextPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Cursor.h ../../../src/windows/native/sun/windows/awt_DataTransferer.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DnDDS.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_DnDDT.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_dnd_DnDConstants.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDropTargetContextPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_DataTransferer.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_DnDDS.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_DrawingSurface.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jawt.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jawt_md.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DrawingSurface.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Event.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Event.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_FileDialog.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Font.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDefaultFontCharset.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFontPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/Disposer.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Frame.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/java_lang_Integer.h $(CLASSHDRDIR)/sun_awt_EmbeddedFrame.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WEmbeddedFrame.h $(CLASSHDRDIR)/sun_awt_windows_WEmbeddedFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_IconCursor.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_GDIObject.obj:: $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_IconCursor.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_IconCursor.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_ImageRep.obj:: $(CLASSHDRDIR)/sun_awt_image_ImageRepresentation.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/image/awt_parseImage.h ../../../src/share/native/sun/awt/image/imageInitIDs.h ../../../src/windows/javavm/export/jni_md.h
+
+$(OBJDIR)/awt_ImagingLib.obj:: $(CLASSHDRDIR)/java_awt_color_ColorSpace.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_image_BufferedImage.h $(CLASSHDRDIR)/java_awt_image_ConvolveOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_image_ImagingLib.h $(CLASSHDRDIR)/sun_awt_image_IntegerComponentRaster.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/image/awt_parseImage.h ../../../src/share/native/sun/awt/image/imageInitIDs.h ../../../src/share/native/sun/awt/medialib/awt_ImagingLib.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_types.h ../../../src/share/native/sun/awt/medialib/safe_alloc.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/awt_Mlib.h
+
+$(OBJDIR)/awt_InputEvent.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_InputEvent.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_InputMethod.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputMethodEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WInputMethod.h $(CLASSHDRDIR)/sun_awt_windows_WInputMethodDescriptor.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/common/locale_str.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_InputTextInfor.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_InputTextInfor.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Insets.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_KeyboardFocusManager.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_KeyboardFocusManager.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_KeyEvent.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_KeyEvent.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Label.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Label.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WLabelPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Label.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_List.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_List.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WListPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_List.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Menu.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_MenuBar.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_MenuItem.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_CheckboxMenuItem.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Toolkit.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCheckboxMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DesktopProperties.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Mlib.obj:: $(CLASSHDRDIR)/java_awt_image_BufferedImage.h ../../../src/share/javavm/export/jni.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/sun/windows/awt_Mlib.h
+
+$(OBJDIR)/awt_MMStub.obj:: ../../../src/windows/native/sun/windows/awt_MMStub.h
+
+$(OBJDIR)/awt_MouseEvent.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MouseEvent.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_new.obj:: $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_new.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Object.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Palette.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_CustomPaletteDef.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/img_util_md.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Panel.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Panel.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_parseImage.obj:: $(CLASSHDRDIR)/java_awt_color_ColorSpace.h $(CLASSHDRDIR)/java_awt_image_BufferedImage.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_image_ImagingLib.h $(CLASSHDRDIR)/sun_awt_image_IntegerComponentRaster.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/image/awt_parseImage.h ../../../src/share/native/sun/awt/image/imageInitIDs.h ../../../src/share/native/sun/awt/medialib/safe_alloc.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/awt_Mlib.h
+
+$(OBJDIR)/awt_Pen.obj:: $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_PopupMenu.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_PopupMenu.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPopupMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Event.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PopupMenu.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_PrintControl.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintControl.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_PrintDialog.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPrintDialog.h $(CLASSHDRDIR)/sun_awt_windows_WPrintDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintControl.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_PrintJob.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPrinterJob.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintControl.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Rectangle.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Rectangle.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Robot.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WRobotPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Robot.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Scrollbar.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Scrollbar.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WScrollbarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Scrollbar.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_ScrollPane.obj:: $(CLASSHDRDIR)/java_awt_Adjustable.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_AdjustmentEvent.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Insets.h $(CLASSHDRDIR)/java_awt_Scrollbar.h $(CLASSHDRDIR)/java_awt_ScrollPane.h $(CLASSHDRDIR)/java_awt_ScrollPaneAdjustable.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WScrollbarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WScrollPanePeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Panel.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Scrollbar.h ../../../src/windows/native/sun/windows/awt_ScrollPane.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_TextArea.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_TextArea.h $(CLASSHDRDIR)/java_awt_TextComponent.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextAreaPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_TextArea.h ../../../src/windows/native/sun/windows/awt_TextComponent.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_TextComponent.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_TextComponent.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_TextComponent.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_TextField.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_TextComponent.h $(CLASSHDRDIR)/java_awt_TextField.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextFieldPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_TextComponent.h ../../../src/windows/native/sun/windows/awt_TextField.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Toolkit.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputMethodEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_List.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_ComponentPeer.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_PopupMenu.h $(CLASSHDRDIR)/java_awt_Toolkit.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WListPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPopupMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jawt.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jawt_md.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Clipboard.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Cursor.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DesktopProperties.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_DnDDS.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_DrawingSurface.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_InputEvent.h ../../../src/windows/native/sun/windows/awt_KeyEvent.h ../../../src/windows/native/sun/windows/awt_List.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_new.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PopupMenu.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/CmdIDList.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_TrayIcon.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_ActionEvent.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_TrayIcon.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WTrayIconPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_TrayIcon.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Unicode.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Win32GraphicsConfig.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_image_DataBuffer.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_Win32GraphicsConfig.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsConfig.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Win32GraphicsDevice.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_color_ColorSpace.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_image_DataBuffer.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_Win32GraphicsDevice.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/awt/image/dither.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/img_util_md.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Win32GraphicsEnv.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_Win32GraphicsEnvironment.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/dxInit.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/awt_Window.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Container.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_ComponentEvent.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Insets.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_BitmapUtil.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_IconCursor.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Panel.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/Blit.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_Blit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/BlitBg.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_BlitBg.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/BufferedRenderPipe.obj:: $(CLASSHDRDIR)/sun_java2d_pipe_BufferedOpCodes.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
+
+$(OBJDIR)/BufImgSurfaceData.obj:: $(CLASSHDRDIR)/sun_awt_image_BufImgSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/image/BufImgSurfaceData.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/img_util_md.h
+
+$(OBJDIR)/ByteBinary1Bit.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByteBinary.h ../../../src/share/native/sun/java2d/loops/ByteBinary1Bit.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/ByteBinary2Bit.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByteBinary.h ../../../src/share/native/sun/java2d/loops/ByteBinary2Bit.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/ByteBinary4Bit.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByteBinary.h ../../../src/share/native/sun/java2d/loops/ByteBinary4Bit.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/ByteGray.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/Index8Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/ByteIndexed.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/CmdIDList.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/CmdIDList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/ComCtl32Util.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/D3DBlitLoops.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DBlitLoops.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DUtils.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/D3DContext.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DRuntimeTest.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DUtils.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/D3DMaskFill.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DMaskFill.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DUtils.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/D3DRenderer.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DRenderer.h $(CLASSHDRDIR)/sun_java2d_windows_DDRenderer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DUtils.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/D3DRuntimeTest.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DRuntimeTest.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTestRaster.h ../../../src/windows/native/sun/java2d/d3d/D3DUtils.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/dxInit.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/D3DSurfaceData.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DBackBufferSurfaceData.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/D3DTextRenderer_md.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DTextRenderer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DUtils.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/D3DUtils.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DUtils.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/DataBufferNative.obj:: $(CLASSHDRDIR)/sun_awt_image_DataBufferNative.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h
+
+$(OBJDIR)/DDBlitLoops.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_DDBlitLoops.h $(CLASSHDRDIR)/sun_java2d_windows_DDScaleLoops.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/ddrawObject.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_DisplayMode.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/ddrawUtils.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/dxInit.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/DDRenderer.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_DDRenderer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/debug_assert.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h
+
+$(OBJDIR)/debug_mem.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h
+
+$(OBJDIR)/debug_trace.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h
+
+$(OBJDIR)/debug_util.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h
+
+$(OBJDIR)/Devices.obj:: $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/Disposer.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/Disposer.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
+
+$(OBJDIR)/dither.obj:: ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/awt/image/dither.h ../../../src/windows/native/sun/windows/colordata.h
+
+$(OBJDIR)/DrawLine.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_DrawLine.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/DrawPath.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_DrawPath.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/DrawPath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/ProcessPath.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/DrawPolygons.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_DrawPolygons.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/DrawRect.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_DrawRect.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/dxCapabilities.obj:: ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h
+
+$(OBJDIR)/dxInit.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DRuntimeTest.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/dxInit.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/FillPath.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_FillPath.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/DrawPath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/ProcessPath.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/FillRect.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_FillRect.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/FillSpans.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_FillSpans.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/FourByteAbgr.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/Any4Byte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/FourByteAbgr.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/FourByteAbgrPre.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/Any4Byte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/FourByteAbgrPre.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/GDIBlitLoops.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_GDIBlitLoops.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/GDIHashtable.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/GDIRenderer.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_geom_PathIterator.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_GDIRenderer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/gifdecoder.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h
+
+$(OBJDIR)/GraphicsPrimitiveMgr.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_GraphicsPrimitiveMgr.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/Hashtable.obj:: $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/imageInitIDs.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/image/imageInitIDs.h ../../../src/windows/javavm/export/jni_md.h
+
+$(OBJDIR)/img_colors.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h
+
+$(OBJDIR)/img_globals.obj:: $(CLASSHDRDIR)/java_awt_image_DirectColorModel.h $(CLASSHDRDIR)/java_awt_image_IndexColorModel.h $(CLASSHDRDIR)/java_awt_Transparency.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/windows/javavm/export/jni_md.h
+
+$(OBJDIR)/Index12Gray.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/Index8Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/Index8Gray.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/Index8Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/initIDs.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h
+
+$(OBJDIR)/IntArgb.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/IntArgbBm.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/IntArgbPre.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/IntBgr.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/Index8Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntBgr.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/IntRgb.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/IntRgbx.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/IntRgbx.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/MaskBlit.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_MaskBlit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/MaskFill.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_MaskFill.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/mlib_c_ImageAffineIndex_BC.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageColormap.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageAffineIndex_BL.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageColormap.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageAffine_BC.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageAffine_BC_S16.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageAffine_BC_U16.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageAffine_BL.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageAffine_BL_S16.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageAffine_BL_U16.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageAffine_NN.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageConvClearEdge.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConvEdge.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageConvCopyEdge.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConvEdge.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageConvVersion.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageConv_f.obj:: ../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageCopy.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCopy.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageLookUp.obj:: ../../../src/share/native/sun/awt/medialib/mlib_c_ImageLookUp.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCopy.h ../../../src/share/native/sun/awt/medialib/mlib_ImageLookUp.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageLookUp_f.obj:: ../../../src/share/native/sun/awt/medialib/mlib_c_ImageLookUp.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCopy.h ../../../src/share/native/sun/awt/medialib/mlib_ImageLookUp.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_c_ImageThresh1_U8.obj:: ../../../src/share/native/sun/awt/medialib/mlib_c_ImageThresh1.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageAffine.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_ImageColormap.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageAffineEdge.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageColormap.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageAffine_BC_D64.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageAffine_BC_F32.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageAffine_BC_S32.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageAffine_BL_D64.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageAffine_BL_F32.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageAffine_BL_S32.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageAffine_NN.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageAffine_NN_Bit.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageClipping.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_ImageClipping.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCreate.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageColorTrue2Index.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_ImageColormap.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConv2x2_f.obj:: ../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConvClearEdge_Bit.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConvEdge.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConvClearEdge_Fp.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConvEdge.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConvCopyEdge_Bit.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConvEdge.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConvKernelConvert.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_SysMath.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConvMxN.obj:: ../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_ImageClipping.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConvEdge.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCreate.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConvMxN_ext.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConvMxN_Fp.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_SysMath.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConv_16ext.obj:: ../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConv_16nw.obj:: ../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConv_32nw.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConv_8ext.obj:: ../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConv_8nw.obj:: ../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConv_D64nw.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConv_F32nw.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConv_u16ext.obj:: ../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageConv_u16nw.obj:: ../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageCopy_Bit.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCopy.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageCreate.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCreate.h ../../../src/share/native/sun/awt/medialib/mlib_ImageRowTable.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageDivTables.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageFilters.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageLookUp_64.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCopy.h ../../../src/share/native/sun/awt/medialib/mlib_ImageLookUp.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageLookUp_Bit.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCopy.h ../../../src/share/native/sun/awt/medialib/mlib_ImageLookUp.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageScanPoly.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_SysMath.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_ImageUtils.obj:: ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/mlib_sys.obj:: ../../../src/share/native/sun/awt/medialib/mlib_SysMath.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
+
+$(OBJDIR)/MouseInfo.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/ObjectList.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/OGLBlitLoops.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLBlitLoops.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLBlitLoops.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+
+$(OBJDIR)/OGLBufImgOps.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLBufImgOps.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+
+$(OBJDIR)/OGLContext.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+
+$(OBJDIR)/OGLFuncs.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+
+$(OBJDIR)/OGLMaskBlit.obj:: $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskBlit.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+
+$(OBJDIR)/OGLMaskFill.obj:: $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLMaskFill.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskFill.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+
+$(OBJDIR)/OGLPaints.obj:: $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedPaints.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+
+$(OBJDIR)/OGLRenderer.obj:: $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLRenderer.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+
+$(OBJDIR)/OGLRenderQueue.obj:: $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLBlitLoops.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedOpCodes.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLBlitLoops.h ../../../src/share/native/sun/java2d/opengl/OGLBufImgOps.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskBlit.h ../../../src/share/native/sun/java2d/opengl/OGLMaskFill.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLTextRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+
+$(OBJDIR)/OGLSurfaceData.obj:: $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+
+$(OBJDIR)/OGLTextRenderer.obj:: $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLTextRenderer.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLTextRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+
+$(OBJDIR)/OGLVertexCache.obj:: $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+
+$(OBJDIR)/ProcessPath.obj:: $(CLASSHDRDIR)/java_awt_geom_PathIterator.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/ProcessPath.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/Region.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h
+
+$(OBJDIR)/RegistryKey.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h
+
+$(OBJDIR)/RenderBuffer.obj:: $(CLASSHDRDIR)/sun_java2d_pipe_RenderBuffer.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
+
+$(OBJDIR)/ScaledBlit.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_ScaledBlit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/ShapeSpanIterator.obj:: $(CLASSHDRDIR)/java_awt_geom_PathIterator.h $(CLASSHDRDIR)/sun_java2d_pipe_ShapeSpanIterator.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/pipe/PathConsumer2D.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/ShellFolder2.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/SpanClipRenderer.obj:: $(CLASSHDRDIR)/sun_java2d_pipe_RegionIterator.h $(CLASSHDRDIR)/sun_java2d_pipe_SpanClipRenderer.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h
+
+$(OBJDIR)/SurfaceData.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/Disposer.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
+
+$(OBJDIR)/ThemeReader.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_ThemeReader.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/ThreeByteBgr.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/Any3Byte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/Trace.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h
+
+$(OBJDIR)/TransformHelper.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_loops_TransformHelper.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/UnicowsLoader.obj:: ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/Ushort4444Argb.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/Ushort4444Argb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/Ushort555Rgb.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/Ushort555Rgb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/Ushort555Rgbx.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/Ushort555Rgbx.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/Ushort565Rgb.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/Ushort4444Argb.h ../../../src/share/native/sun/java2d/loops/Ushort565Rgb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/UshortGray.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/UshortIndexed.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/loops/UshortIndexed.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+
+$(OBJDIR)/WBufferStrategy.obj:: $(CLASSHDRDIR)/sun_awt_windows_WBufferStrategy.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h
+
+$(OBJDIR)/WGLGraphicsConfig.obj:: $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_WGLGraphicsConfig.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h ../../../src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.h ../../../src/windows/native/sun/java2d/opengl/WGLSurfaceData.h
+
+$(OBJDIR)/WGLSurfaceData.obj:: $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_WGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h ../../../src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.h ../../../src/windows/native/sun/java2d/opengl/WGLSurfaceData.h
+
+$(OBJDIR)/Win32OffScreenSurfaceData.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_windows_Win32OffScreenSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/Win32SurfaceData.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_windows_Win32SurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/Disposer.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/WinBackBufferSurfaceData.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_WinBackBufferSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/WindowsFlags.obj:: $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/dxInit.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+
+$(OBJDIR)/WPrinterJob.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintControl.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
diff --git a/jdk/make/sun/awt/mapfile-mawt-vers b/jdk/make/sun/awt/mapfile-mawt-vers
new file mode 100644
index 0000000..9b46be8
--- /dev/null
+++ b/jdk/make/sun/awt/mapfile-mawt-vers
@@ -0,0 +1,518 @@
+#
+# Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# Java_java_awt_KeyboardFocusManager_getGlobalHeavyweightFocusOwner;
+
+# Define public interface.
+# These are the libmawt exports. See mapfile-vers for the libawt exports
+
+SUNWprivate_1.1 {
+ global:
+ JNI_OnLoad;
+
+ Java_sun_awt_motif_MComponentPeer_restoreFocus;
+ Java_sun_awt_DefaultMouseInfoPeer_fillPointWithCoords;
+ Java_sun_awt_DefaultMouseInfoPeer_isWindowUnderMouse;
+ Java_java_awt_AWTEvent_nativeSetSource;
+ Java_java_awt_Checkbox_initIDs;
+ Java_java_awt_Component_initIDs;
+ Java_java_awt_Dialog_initIDs;
+ Java_java_awt_Font_initIDs;
+ Java_java_awt_KeyboardFocusManager_initIDs;
+ Java_java_awt_Menu_initIDs;
+ Java_java_awt_MenuComponent_initIDs;
+ Java_java_awt_MenuItem_initIDs;
+ Java_java_awt_Scrollbar_initIDs;
+ Java_java_awt_ScrollPane_initIDs;
+ Java_java_awt_TextArea_initIDs;
+ Java_sun_awt_FontDescriptor_initIDs;
+ Java_sun_awt_KeyboardFocusManagerPeerImpl_clearNativeGlobalFocusOwner;
+ Java_sun_awt_KeyboardFocusManagerPeerImpl_getNativeFocusOwner;
+ Java_sun_awt_KeyboardFocusManagerPeerImpl_getNativeFocusedWindow;
+ Java_sun_awt_UNIXToolkit_check_1gtk;
+ Java_sun_awt_UNIXToolkit_load_1gtk;
+ Java_sun_awt_UNIXToolkit_unload_1gtk;
+ Java_sun_awt_UNIXToolkit_load_1stock_1icon;
+ Java_sun_awt_UNIXToolkit_load_1gtk_1icon;
+ Java_sun_awt_UNIXToolkit_nativeSync;
+ Java_sun_awt_motif_MButtonPeer_create;
+ Java_sun_awt_motif_MButtonPeer_setLabel;
+ Java_sun_awt_motif_MPanelPeer_pEnsureIndex;
+ Java_sun_awt_motif_MPanelPeer_pRestack;
+ Java_sun_awt_motif_MCanvasPeer_create;
+ Java_sun_awt_motif_MCanvasPeer_initIDs;
+ Java_sun_awt_motif_MCanvasPeer_resetTargetGC;
+ Java_sun_awt_motif_MCheckboxMenuItemPeer_pSetState;
+ Java_sun_awt_motif_MCheckboxPeer_create;
+ Java_sun_awt_motif_MCheckboxPeer_setCheckboxGroup;
+ Java_sun_awt_motif_MCheckboxPeer_setLabel;
+ Java_sun_awt_motif_MCheckboxPeer_pSetState;
+ Java_sun_awt_motif_MCheckboxPeer_pGetState;
+ Java_sun_awt_motif_MChoicePeer_addItem;
+ Java_sun_awt_motif_MChoicePeer_appendItems;
+ Java_sun_awt_motif_MChoicePeer_create;
+ Java_sun_awt_motif_MChoicePeer_pReshape;
+ Java_sun_awt_motif_MChoicePeer_remove;
+ Java_sun_awt_motif_MChoicePeer_removeAll;
+ Java_sun_awt_motif_MChoicePeer_setBackground;
+ Java_sun_awt_motif_MChoicePeer_pSelect;
+ Java_sun_awt_motif_MChoicePeer_setFont;
+ Java_sun_awt_motif_MChoicePeer_setForeground;
+ Java_sun_awt_motif_MComponentPeer_addNativeDropTarget;
+ Java_sun_awt_motif_MComponentPeer_getNativeColor;
+ Java_sun_awt_motif_MComponentPeer_getWindow;
+ Java_sun_awt_motif_MComponentPeer_pDisable;
+ Java_sun_awt_motif_MComponentPeer_pDispose;
+ Java_sun_awt_motif_MComponentPeer_pEnable;
+ Java_sun_awt_motif_MComponentPeer_pGetLocationOnScreen;
+ Java_sun_awt_motif_MComponentPeer_pGetLocationOnScreen2;
+ Java_sun_awt_motif_MComponentPeer_pHide;
+ Java_sun_awt_motif_MComponentPeer_pInitialize;
+ Java_sun_awt_motif_MComponentPeer_pMakeCursorVisible;
+ Java_sun_awt_motif_MComponentPeer_pReshape;
+ Java_sun_awt_motif_MComponentPeer_pShow;
+ Java_sun_awt_motif_MComponentPeer_removeNativeDropTarget;
+ Java_sun_awt_motif_MComponentPeer_pSetBackground;
+ Java_sun_awt_motif_MComponentPeer_pSetFont;
+ Java_sun_awt_motif_MComponentPeer_processSynchronousLightweightTransfer;
+ Java_sun_awt_motif_MComponentPeer__1requestFocus;
+ Java_sun_awt_motif_MComponentPeer_getNativeFocusedWindow;
+ Java_sun_awt_motif_MCheckboxMenuItemPeer_getState;
+ Java_sun_awt_motif_MComponentPeer_pSetForeground;
+ Java_sun_awt_motif_MDragSourceContextPeer_startDrag;
+ Java_sun_awt_motif_MDragSourceContextPeer_setNativeCursor;
+ Java_sun_awt_motif_MDropTargetContextPeer_addTransfer;
+ Java_sun_awt_motif_MDropTargetContextPeer_dropDone;
+ Java_sun_awt_motif_MDropTargetContextPeer_startTransfer;
+ Java_sun_awt_motif_X11DragSourceContextPeer_startDrag;
+ Java_sun_awt_motif_X11DragSourceContextPeer_setNativeCursor;
+ Java_sun_awt_motif_X11DropTargetContextPeer_sendResponse;
+ Java_sun_awt_motif_X11DropTargetContextPeer_dropDone;
+ Java_sun_awt_motif_X11DropTargetContextPeer_getData;
+ Java_sun_awt_motif_MEmbeddedFramePeer_NEFcreate;
+ Java_sun_awt_motif_MEmbeddedFramePeer_pShowImpl;
+ Java_sun_awt_motif_MEmbeddedFramePeer_requestXEmbedFocus;
+ Java_sun_awt_motif_MEmbeddedFramePeer_isXEmbedApplicationActive;
+ Java_sun_awt_motif_MEmbeddedFramePeer_isXEmbedActive;
+ Java_sun_awt_motif_MEmbeddedFramePeer_synthesizeFocusInOut;
+ Java_sun_awt_motif_MEmbeddedFramePeer_pReshapePrivate;
+ Java_sun_awt_motif_MEmbeddedFramePeer_getBoundsPrivate;
+ Java_sun_awt_motif_MEmbeddedFrame_getWidget;
+ Java_sun_awt_motif_MEmbeddedFrame_mapWidget;
+ Java_sun_awt_motif_MEmbedCanvasPeer_forwardEventToEmbedded;
+ Java_sun_awt_motif_MFramePeer_pSetIconImage___3B_3I_3SII;
+ Java_sun_awt_motif_MFileDialogPeer_create;
+ Java_sun_awt_motif_MFileDialogPeer_pDispose;
+ Java_sun_awt_motif_MFileDialogPeer_pHide;
+ Java_sun_awt_motif_MFileDialogPeer_pReshape;
+ Java_sun_awt_motif_MFileDialogPeer_pShow;
+ Java_sun_awt_motif_MFileDialogPeer_setFileEntry;
+ Java_sun_awt_motif_MFileDialogPeer_setFont;
+ Java_sun_awt_motif_MFramePeer_pGetIconSize;
+ Java_sun_awt_motif_MGlobalCursorManager_cacheInit;
+ Java_sun_awt_motif_MGlobalCursorManager_findComponentAt;
+ Java_sun_awt_motif_MGlobalCursorManager_findHeavyweightUnderCursor;
+ Java_sun_awt_motif_MGlobalCursorManager_getCursorPos;
+ Java_sun_awt_motif_MGlobalCursorManager_getLocationOnScreen;
+ Java_sun_awt_motif_MLabelPeer_create;
+ Java_sun_awt_motif_MLabelPeer_setAlignment;
+ Java_sun_awt_motif_MLabelPeer_setText;
+ Java_sun_awt_motif_MListPeer_addItem;
+ Java_sun_awt_motif_MListPeer_create;
+ Java_sun_awt_motif_MListPeer_delItems;
+ Java_sun_awt_motif_MListPeer_deselect;
+ Java_sun_awt_motif_MListPeer_isSelected;
+ Java_sun_awt_motif_MListPeer_makeVisible;
+ Java_sun_awt_motif_MListPeer_nativeHandleMouseWheel;
+ Java_sun_awt_motif_MListPeer_select;
+ Java_sun_awt_motif_MListPeer_setMultipleSelections;
+ Java_sun_awt_motif_MMenuBarPeer_create;
+ Java_sun_awt_motif_MMenuItemPeer_createMenuItem;
+ Java_sun_awt_motif_MMenuItemPeer_pDisable;
+ Java_sun_awt_motif_MMenuItemPeer_pDispose;
+ Java_sun_awt_motif_MMenuItemPeer_pEnable;
+ Java_sun_awt_motif_MMenuItemPeer_pSetLabel;
+ Java_sun_awt_motif_MMenuPeer_createMenu;
+ Java_sun_awt_motif_MMenuPeer_createSubMenu;
+ Java_sun_awt_motif_MMenuPeer_pDispose;
+ Java_sun_awt_motif_MPopupMenuPeer_createMenu;
+ Java_sun_awt_motif_MPopupMenuPeer_pDispose;
+ Java_sun_awt_motif_MPopupMenuPeer_pShow;
+ Java_sun_awt_motif_MRobotPeer_getRGBPixelsImpl;
+ Java_sun_awt_motif_MRobotPeer_keyPressImpl;
+ Java_sun_awt_motif_MRobotPeer_keyReleaseImpl;
+ Java_sun_awt_motif_MRobotPeer_mouseMoveImpl;
+ Java_sun_awt_motif_MRobotPeer_mousePressImpl;
+ Java_sun_awt_motif_MRobotPeer_mouseReleaseImpl;
+ Java_sun_awt_motif_MRobotPeer_mouseWheelImpl;
+ Java_sun_awt_motif_MRobotPeer_setup;
+ Java_sun_awt_motif_MScrollbarPeer_create;
+ Java_sun_awt_motif_MScrollbarPeer_setLineIncrement;
+ Java_sun_awt_motif_MScrollbarPeer_setPageIncrement;
+ Java_sun_awt_motif_MScrollbarPeer_pSetValues;
+ Java_sun_awt_motif_MScrollPanePeer_create;
+ Java_sun_awt_motif_MScrollPanePeer_pGetBlockIncrement;
+ Java_sun_awt_motif_MScrollPanePeer_pGetScrollbarSpace;
+ Java_sun_awt_motif_MScrollPanePeer_pGetShadow;
+ Java_sun_awt_motif_MScrollPanePeer_pInsets;
+ Java_sun_awt_motif_MScrollPanePeer_pSetIncrement;
+ Java_sun_awt_motif_MScrollPanePeer_pSetScrollChild;
+ Java_sun_awt_motif_MScrollPanePeer_setScrollPosition;
+ Java_sun_awt_motif_MScrollPanePeer_setTypedValue;
+ Java_sun_awt_motif_MTextAreaPeer_initIDs;
+ Java_sun_awt_motif_MTextAreaPeer_pCreate;
+ Java_sun_awt_motif_MTextAreaPeer_getCaretPosition;
+ Java_sun_awt_motif_MTextAreaPeer_getExtraHeight;
+ Java_sun_awt_motif_MTextAreaPeer_getExtraWidth;
+ Java_sun_awt_motif_MTextAreaPeer_getSelectionEnd;
+ Java_sun_awt_motif_MTextAreaPeer_getSelectionStart;
+ Java_sun_awt_motif_MTextAreaPeer_getText;
+ Java_sun_awt_motif_MTextAreaPeer_insert;
+ Java_sun_awt_motif_MTextAreaPeer_nativeHandleMouseWheel;
+ Java_sun_awt_motif_MTextAreaPeer_pMakeCursorVisible;
+ Java_sun_awt_motif_MTextAreaPeer_pSetEditable;
+ Java_sun_awt_motif_MTextAreaPeer_pShow2;
+ Java_sun_awt_motif_MTextAreaPeer_replaceRange;
+ Java_sun_awt_motif_MTextAreaPeer_select;
+ Java_sun_awt_motif_MTextAreaPeer_setCaretPosition;
+ Java_sun_awt_motif_MTextAreaPeer_setFont;
+ Java_sun_awt_motif_MTextAreaPeer_setText;
+ Java_sun_awt_motif_MTextAreaPeer_setTextBackground;
+ Java_sun_awt_motif_MTextFieldPeer_initIDs;
+ Java_sun_awt_motif_MTextFieldPeer_pCreate;
+ Java_sun_awt_motif_MTextFieldPeer_getCaretPosition;
+ Java_sun_awt_motif_MTextFieldPeer_getSelectionEnd;
+ Java_sun_awt_motif_MTextFieldPeer_getSelectionStart;
+ Java_sun_awt_motif_MTextFieldPeer_getText;
+ Java_sun_awt_motif_MTextFieldPeer_insertReplaceText;
+ Java_sun_awt_motif_MTextFieldPeer_preDispose;
+ Java_sun_awt_motif_MTextFieldPeer_pSetEditable;
+ Java_sun_awt_motif_MTextFieldPeer_select;
+ Java_sun_awt_motif_MTextFieldPeer_setCaretPosition;
+ Java_sun_awt_motif_MTextFieldPeer_setEchoChar;
+ Java_sun_awt_motif_MTextFieldPeer_setFont;
+ Java_sun_awt_motif_MTextFieldPeer_setText;
+ Java_sun_awt_motif_MToolkit_beep;
+ Java_sun_awt_motif_MToolkit_getLockingKeyStateNative;
+ Java_sun_awt_motif_MToolkit_getMulticlickTime;
+ Java_sun_awt_motif_MToolkit_getNumMouseButtons;
+ Java_sun_awt_motif_MToolkit_loadXSettings;
+ Java_sun_awt_motif_MToolkit_getScreenHeight;
+ Java_sun_awt_motif_MToolkit_getScreenResolution;
+ Java_sun_awt_motif_MToolkit_getScreenWidth;
+ Java_sun_awt_motif_MToolkit_init;
+ Java_sun_awt_motif_MToolkit_isDynamicLayoutSupportedNative;
+ Java_sun_awt_motif_MToolkit_isFrameStateSupported;
+ Java_sun_awt_motif_MToolkit_loadSystemColors;
+ Java_sun_awt_motif_MToolkit_makeColorModel;
+ Java_sun_awt_motif_MToolkit_run;
+ Java_sun_awt_motif_MToolkit_isAlwaysOnTopSupported;
+ Java_sun_awt_motif_MToolkit_getEventNumber;
+ Java_sun_awt_motif_MToolkit_updateSyncSelection;
+ Java_sun_awt_motif_MToolkit_isSyncUpdated;
+ Java_sun_awt_motif_MToolkit_isSyncFailed;
+ Java_sun_awt_motif_MToolkit_nativeUnGrab;
+ Java_sun_awt_motif_MToolkit_nativeGrab;
+ Java_sun_awt_motif_MToolkit_getWMName;
+ Java_sun_awt_motif_MWindowAttributes_initIDs;
+ Java_sun_awt_motif_MWindowPeer_pDispose;
+ Java_sun_awt_motif_MWindowPeer_pHide;
+ Java_sun_awt_motif_MWindowPeer_pReshape;
+ Java_sun_awt_motif_MWindowPeer_pSetTitle;
+ Java_sun_awt_motif_MWindowPeer_pShow;
+ Java_sun_awt_motif_MWindowPeer_setResizable;
+ Java_sun_awt_motif_MWindowPeer_toBack;
+ Java_sun_awt_motif_MWindowPeer_addTextComponentNative;
+ Java_sun_awt_motif_MWindowPeer_getState;
+ Java_sun_awt_motif_MWindowPeer_pSetIMMOption;
+ Java_sun_awt_motif_MWindowPeer_pSetMenuBar;
+ Java_sun_awt_motif_MWindowPeer_pShowModal;
+ Java_sun_awt_motif_MWindowPeer_removeTextComponentNative;
+ Java_sun_awt_motif_MWindowPeer_setSaveUnder;
+ Java_sun_awt_motif_MWindowPeer_setState;
+ Java_sun_awt_motif_MWindowPeer_resetTargetGC;
+ Java_sun_awt_motif_MWindowPeer_registerX11DropTarget;
+ Java_sun_awt_motif_MWindowPeer_unregisterX11DropTarget;
+ Java_sun_awt_motif_MWindowPeer_updateAlwaysOnTop;
+ Java_sun_awt_motif_MWindowPeer_setFocusableWindow;
+ Java_sun_awt_motif_MWindowPeer_pToFront;
+ Java_sun_awt_motif_MCustomCursor_cacheInit;
+ Java_sun_awt_motif_MCustomCursor_createCursor;
+ Java_sun_awt_motif_MCustomCursor_queryBestCursor;
+ Java_sun_awt_motif_X11FontMetrics_bytesWidth;
+ Java_sun_awt_motif_X11FontMetrics_getMFCharsWidth;
+ Java_sun_awt_motif_X11FontMetrics_init;
+ Java_sun_awt_X11InputMethod_disposeXIC;
+ Java_sun_awt_X11InputMethod_isCompositionEnabledNative;
+ Java_sun_awt_X11InputMethod_resetXIC;
+ Java_sun_awt_X11InputMethod_setCompositionEnabledNative;
+ Java_sun_awt_X11InputMethod_turnoffStatusWindow;
+ Java_sun_awt_motif_MInputMethod_openXIMNative;
+ Java_sun_awt_motif_MInputMethod_configureStatusAreaNative;
+ Java_sun_awt_motif_MInputMethod_createXICNative;
+ Java_sun_awt_motif_MInputMethod_reconfigureXICNative;
+ Java_sun_awt_motif_MInputMethod_setXICFocusNative;
+ Java_sun_awt_motif_X11Clipboard_getClipboardData;
+ Java_sun_awt_motif_X11Clipboard_getClipboardFormats;
+ Java_sun_awt_motif_X11Clipboard_registerClipboardViewer;
+ Java_sun_awt_motif_X11Clipboard_unregisterClipboardViewer;
+ Java_sun_awt_motif_X11Selection_init;
+ Java_sun_awt_motif_X11Selection_pGetSelectionOwnership;
+ Java_sun_awt_motif_X11Selection_clearNativeContext;
+ Java_sun_awt_SunToolkit_closeSplashScreen;
+ Java_sun_awt_PlatformFont_initIDs;
+ Java_sun_awt_X11GraphicsConfig_init;
+ Java_sun_awt_X11GraphicsConfig_dispose;
+ Java_sun_awt_X11GraphicsConfig_pGetBounds;
+ Java_sun_awt_X11GraphicsConfig_getNumColors;
+ Java_sun_awt_X11GraphicsConfig_getXResolution;
+ Java_sun_awt_X11GraphicsConfig_getYResolution;
+ Java_sun_awt_X11GraphicsConfig_createBackBuffer;
+ Java_sun_awt_X11GraphicsConfig_destroyBackBuffer;
+ Java_sun_awt_X11GraphicsConfig_swapBuffers;
+ Java_sun_awt_X11GraphicsDevice_isDBESupported;
+ Java_sun_awt_X11GraphicsDevice_getDisplay;
+ Java_sun_awt_X11GraphicsDevice_getDoubleBufferVisuals;
+ Java_sun_awt_X11GraphicsDevice_getNumConfigs;
+ Java_sun_awt_X11GraphicsDevice_initIDs;
+ Java_sun_awt_X11GraphicsDevice_initXrandrExtension;
+ Java_sun_awt_X11GraphicsDevice_enterFullScreenExclusive;
+ Java_sun_awt_X11GraphicsDevice_exitFullScreenExclusive;
+ Java_sun_awt_X11GraphicsDevice_getCurrentDisplayMode;
+ Java_sun_awt_X11GraphicsDevice_enumDisplayModes;
+ Java_sun_awt_X11GraphicsDevice_configDisplayMode;
+ Java_sun_awt_X11GraphicsDevice_resetNativeData;
+ Java_sun_awt_X11GraphicsEnvironment_checkShmExt;
+ Java_sun_awt_X11GraphicsEnvironment_getDefaultScreenNum;
+ Java_sun_awt_X11GraphicsEnvironment_getDisplayString;
+ Java_sun_awt_X11GraphicsEnvironment_getNumScreens;
+ Java_sun_awt_X11GraphicsEnvironment_initDisplay;
+ Java_sun_awt_X11GraphicsEnvironment_initGLX;
+ Java_sun_awt_X11GraphicsEnvironment_pRunningXinerama;
+ Java_sun_awt_X11GraphicsEnvironment_getXineramaCenterPoint;
+ Java_sun_awt_motif_MEmbedCanvasPeer_initXEmbedServer;
+ Java_sun_awt_motif_MEmbedCanvasPeer_destroyXEmbedServer;
+ Java_sun_awt_motif_MEmbedCanvasPeer_isXEmbedActive;
+ Java_sun_awt_motif_MEmbedCanvasPeer_initDispatching;
+ Java_sun_awt_motif_MEmbedCanvasPeer_endDispatching;
+ Java_sun_awt_motif_MEmbedCanvasPeer_embedChild;
+ Java_sun_awt_motif_MEmbedCanvasPeer_childDestroyed;
+ Java_sun_awt_motif_MEmbedCanvasPeer_getEmbedPreferredSize;
+ Java_sun_awt_motif_MEmbedCanvasPeer_getEmbedMinimumSize;
+ Java_sun_awt_motif_MEmbedCanvasPeer_getClientBounds;
+ Java_sun_awt_motif_MEmbedCanvasPeer_notifyChildEmbedded;
+ Java_sun_awt_motif_MEmbedCanvasPeer_detachChild;
+ Java_sun_awt_motif_MEmbedCanvasPeer_forwardKeyEvent;
+ Java_sun_awt_motif_MEmbedCanvasPeer_getAWTKeyCodeForKeySym;
+ Java_sun_awt_motif_MEmbedCanvasPeer_sendMessage__I;
+ Java_sun_awt_motif_MEmbedCanvasPeer_sendMessage__IJJJ;
+ Java_sun_awt_motif_MEmbedCanvasPeer_getWindow;
+ Java_sun_awt_motif_GrabbedKey_initKeySymAndModifiers;
+ Java_sun_awt_motif_MEmbeddedFramePeer_traverseOut;
+ Java_java_awt_AWTEvent_initIDs;
+ Java_java_awt_Button_initIDs;
+ Java_java_awt_Container_initIDs;
+ Java_java_awt_Cursor_finalizeImpl;
+ Java_java_awt_Cursor_initIDs;
+ Java_java_awt_Event_initIDs;
+ Java_java_awt_event_InputEvent_initIDs;
+ Java_java_awt_event_KeyEvent_initIDs;
+ Java_java_awt_FileDialog_initIDs;
+ Java_java_awt_Frame_initIDs;
+ Java_java_awt_Insets_initIDs;
+ Java_java_awt_TextField_initIDs;
+ Java_java_awt_Window_initIDs;
+ Java_sun_awt_motif_MCheckboxPeer_getIndicatorSize;
+ Java_sun_awt_motif_MCheckboxPeer_getSpacing;
+ Java_sun_awt_motif_MChoicePeer_freeNativeData;
+ Java_sun_awt_motif_MComponentPeer_getComponents_1NoClientCode;
+ Java_sun_awt_motif_MComponentPeer_getParent_1NoClientCode;
+ Java_sun_awt_motif_MComponentPeer_initIDs;
+ Java_sun_awt_motif_MComponentPeer_nativeHandleEvent;
+ Java_sun_awt_motif_MComponentPeer_pSetCursor;
+ Java_sun_awt_motif_MComponentPeer_pSetInnerForeground;
+ Java_sun_awt_motif_MComponentPeer_pSetScrollbarBackground;
+ Java_sun_awt_motif_MComponentPeer_setTargetBackground;
+ Java_sun_awt_motif_MDataTransferer_dragQueryFile;
+ Java_sun_awt_motif_MDataTransferer_getAtomForTarget;
+ Java_sun_awt_motif_MDataTransferer_getTargetNameForAtom;
+ Java_sun_awt_motif_MFileDialogPeer_insertReplaceFileDialogText;
+ Java_sun_awt_motif_MFontPeer_initIDs;
+ Java_sun_awt_motif_MListPeer_setBackground;
+ Java_sun_awt_motif_MMenuBarPeer_initIDs;
+ Java_sun_awt_motif_MMenuBarPeer_pDispose;
+ Java_sun_awt_motif_MMenuItemPeer_getParent_1NoClientCode;
+ Java_sun_awt_motif_MMenuItemPeer_initIDs;
+ Java_sun_awt_motif_MMenuItemPeer_pSetShortcut;
+ Java_sun_awt_motif_MPopupMenuPeer_initIDs;
+ Java_sun_awt_motif_MScrollbarPeer_initIDs;
+ Java_sun_awt_motif_MScrollPanePeer_initIDs;
+ Java_sun_awt_motif_MTextAreaPeer_pSetCursor;
+ Java_sun_awt_motif_MToolkit_shutdown;
+ Java_sun_awt_motif_MWindowPeer_initIDs;
+ Java_sun_awt_motif_MWindowPeer_pCreate;
+ Java_sun_awt_motif_MWindowPeer_wrapInSequenced;
+ Java_sun_awt_motif_X11FontMetrics_initIDs;
+ Java_sun_awt_X11InputMethod_initIDs;
+ Java_sun_awt_motif_X11Selection_initIDs;
+ Java_sun_awt_motif_MToolkitThreadBlockedHandler_enter;
+ Java_sun_awt_motif_MToolkitThreadBlockedHandler_exit;
+ Java_sun_awt_X11GraphicsConfig_init;
+ Java_sun_awt_X11GraphicsConfig_initIDs;
+ Java_sun_awt_X11GraphicsConfig_makeColorModel;
+ Java_sun_awt_X11GraphicsDevice_getConfigVisualId;
+ Java_sun_awt_X11GraphicsDevice_getConfigColormap;
+ Java_sun_awt_X11GraphicsDevice_getConfigDepth;
+
+ Java_sun_java2d_x11_X11PMBlitLoops_nativeBlit;
+ Java_sun_java2d_x11_X11PMBlitLoops_updateBitmask;
+ Java_sun_java2d_x11_X11PMBlitBgLoops_nativeBlitBg;
+ Java_sun_java2d_x11_X11Renderer_XFillSpans;
+ Java_sun_java2d_x11_X11Renderer_XDrawArc;
+ Java_sun_java2d_x11_X11Renderer_XDrawLine;
+ Java_sun_java2d_x11_X11Renderer_XDrawOval;
+ Java_sun_java2d_x11_X11Renderer_XDrawPoly;
+ Java_sun_java2d_x11_X11Renderer_XDrawRect;
+ Java_sun_java2d_x11_X11Renderer_XDrawRoundRect;
+ Java_sun_java2d_x11_X11Renderer_XDoPath;
+ Java_sun_java2d_x11_X11Renderer_XFillArc;
+ Java_sun_java2d_x11_X11Renderer_XFillOval;
+ Java_sun_java2d_x11_X11Renderer_XFillPoly;
+ Java_sun_java2d_x11_X11Renderer_XFillRect;
+ Java_sun_java2d_x11_X11Renderer_XFillRoundRect;
+ Java_sun_java2d_x11_X11Renderer_devCopyArea;
+ Java_sun_java2d_x11_X11SurfaceData_initIDs;
+ Java_sun_java2d_x11_X11SurfaceData_initOps;
+ Java_sun_java2d_x11_X11SurfaceData_initSurface;
+ Java_sun_java2d_x11_X11SurfaceData_isDrawableValid;
+ Java_sun_java2d_x11_X11SurfaceData_isDgaAvailable;
+ Java_sun_java2d_x11_X11SurfaceData_setInvalid;
+ Java_sun_java2d_x11_X11SurfaceData_flushNativeSurface;
+ Java_sun_java2d_x11_X11SurfaceData_XCreateGC;
+ Java_sun_java2d_x11_X11SurfaceData_XResetClip;
+ Java_sun_java2d_x11_X11SurfaceData_XSetClip;
+ Java_sun_java2d_x11_X11SurfaceData_XSetCopyMode;
+ Java_sun_java2d_x11_X11SurfaceData_XSetXorMode;
+ Java_sun_java2d_x11_X11SurfaceData_XSetForeground;
+ Java_sun_java2d_x11_X11SurfaceData_XSetGraphicsExposures;
+
+ Java_sun_java2d_opengl_OGLMaskFill_maskFill;
+ Java_sun_java2d_opengl_OGLRenderer_drawPoly;
+ Java_sun_java2d_opengl_OGLRenderQueue_flushBuffer;
+ Java_sun_java2d_opengl_OGLSurfaceData_initTexture;
+ Java_sun_java2d_opengl_OGLSurfaceData_initFBObject;
+ Java_sun_java2d_opengl_OGLSurfaceData_initFlipBackbuffer;
+ Java_sun_java2d_opengl_OGLSurfaceData_getTextureTarget;
+ Java_sun_java2d_opengl_OGLTextRenderer_drawGlyphList;
+ Java_sun_java2d_opengl_GLXGraphicsConfig_getGLXConfigInfo;
+ Java_sun_java2d_opengl_GLXGraphicsConfig_initConfig;
+ Java_sun_java2d_opengl_GLXGraphicsConfig_getOGLCapabilities;
+ Java_sun_java2d_opengl_GLXSurfaceData_initOps;
+ Java_sun_java2d_opengl_GLXSurfaceData_initPbuffer;
+
+ Java_sun_print_CUPSPrinter_initIDs;
+ Java_sun_print_CUPSPrinter_getCupsServer;
+ Java_sun_print_CUPSPrinter_getCupsPort;
+ Java_sun_print_CUPSPrinter_canConnect;
+ Java_sun_print_CUPSPrinter_getMedia;
+ Java_sun_print_CUPSPrinter_getPageSizes;
+
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1arrow;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1box;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1box_1gap;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1check;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1expander;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1extension;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1flat_1box;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1focus;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1handle;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1hline;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1option;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1shadow;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1slider;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1vline;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1background;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_nativeStartPainting;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_nativeFinishPainting;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1switch_1theme;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1get_1gtk_1setting;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_nativeSetRangeValue;
+ Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetXThickness;
+ Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetYThickness;
+ Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetColorForState;
+ Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetClassValue;
+ Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetPangoFontName;
+
+ awt_display;
+ awt_Lock;
+ awt_Unlock;
+ awt_GetDrawingSurface;
+ awt_FreeDrawingSurface;
+ awt_GetComponent;
+
+ X11SurfaceData_GetOps;
+ getDefaultConfig;
+ Java_sun_font_FontManager_getFontConfig;
+ Java_sun_font_FontManager_getFontConfigAASettings;
+ Java_sun_font_FontManager_getFontPath;
+ Java_sun_font_FontManager_setNativeFontPath;
+ Java_sun_font_FontManager_populateFontFileNameMap;
+
+ # CDE private entry point
+ Java_sun_awt_motif_XsessionWMcommand;
+ Java_sun_awt_motif_XsessionWMcommand_New;
+
+ # Java Plugin
+ getAwtLockFunctions;
+ getAwtData;
+ getAwtDisplay;
+
+ # libfontmanager entry points
+ AWTIsHeadless;
+ AWTCountFonts;
+ AWTLoadFont;
+ AWTFreeFont;
+ AWTFontAscent;
+ AWTFontDescent;
+ AWTFontMinByte1;
+ AWTFontMaxByte1;
+ AWTFontMinCharOrByte2;
+ AWTFontMaxCharOrByte2;
+ AWTFontDefaultChar;
+ AWTFontPerChar;
+ AWTFontMaxBounds;
+ AWTFontTextExtents16;
+ AWTFreeChar;
+ AWTFontGenerateImage;
+ AWTCharAdvance;
+ AWTCharLBearing;
+ AWTCharRBearing;
+ AWTCharAscent;
+ AWTCharDescent;
+ AWTDrawGlyphList;
+
+ local:
+ *;
+};
+
diff --git a/jdk/make/sun/awt/mapfile-vers b/jdk/make/sun/awt/mapfile-vers
new file mode 100644
index 0000000..db3f525
--- /dev/null
+++ b/jdk/make/sun/awt/mapfile-vers
@@ -0,0 +1,196 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+# These are the libawt exports, mapfile-mawt-vers contains the libmawt exports.
+
+SUNWprivate_1.1 {
+ global:
+ JNI_OnLoad;
+
+ Java_java_awt_CheckboxMenuItem_initIDs;
+ Java_java_awt_Color_initIDs;
+ Java_java_awt_FontMetrics_initIDs;
+ Java_java_awt_image_BufferedImage_initIDs;
+ Java_sun_awt_image_DataBufferNative_getElem;
+ Java_sun_awt_image_DataBufferNative_setElem;
+ Java_java_awt_image_ColorModel_initIDs;
+ Java_java_awt_image_ComponentSampleModel_initIDs;
+ Java_java_awt_image_IndexColorModel_initIDs;
+ Java_java_awt_image_Kernel_initIDs;
+ Java_java_awt_image_Raster_initIDs;
+ Java_java_awt_image_SampleModel_initIDs;
+ Java_java_awt_Label_initIDs;
+ Java_java_awt_MenuBar_initIDs;
+ Java_java_awt_ScrollPaneAdjustable_initIDs;
+ Java_java_awt_Toolkit_initIDs;
+ Java_sun_awt_DebugSettings_setCTracingOn__Z;
+ Java_sun_awt_DebugSettings_setCTracingOn__ZLjava_lang_String_2;
+ Java_sun_awt_DebugSettings_setCTracingOn__ZLjava_lang_String_2I;
+ Java_sun_awt_image_ByteComponentRaster_initIDs;
+ Java_sun_awt_image_GifImageDecoder_initIDs;
+ Java_sun_awt_image_GifImageDecoder_parseImage;
+ Java_sun_awt_image_ImageRepresentation_initIDs;
+ Java_sun_awt_image_ImageRepresentation_setBytePixels;
+ Java_sun_awt_image_ImageRepresentation_setDiffICM;
+ Java_sun_awt_image_ImageRepresentation_setICMpixels;
+ Java_sun_awt_image_ImagingLib_convolveBI;
+ Java_sun_awt_image_ImagingLib_convolveRaster;
+ Java_sun_awt_image_ImagingLib_init;
+ Java_sun_awt_image_ImagingLib_transformBI;
+ Java_sun_awt_image_ImagingLib_transformRaster;
+ Java_sun_awt_image_IntegerComponentRaster_initIDs;
+ Java_sun_awt_image_ShortComponentRaster_initIDs;
+ Java_sun_java2d_pipe_BufferedMaskBlit_enqueueTile;
+ Java_sun_java2d_pipe_BufferedRenderPipe_fillSpans;
+ Java_sun_java2d_pipe_RenderBuffer_copyFromArray;
+ Java_sun_java2d_pipe_SpanClipRenderer_eraseTile;
+ Java_sun_java2d_pipe_SpanClipRenderer_fillTile;
+ Java_sun_java2d_pipe_ShapeSpanIterator_addSegment;
+ Java_sun_java2d_pipe_ShapeSpanIterator_moveTo;
+ Java_sun_java2d_pipe_ShapeSpanIterator_lineTo;
+ Java_sun_java2d_pipe_ShapeSpanIterator_quadTo;
+ Java_sun_java2d_pipe_ShapeSpanIterator_curveTo;
+ Java_sun_java2d_pipe_ShapeSpanIterator_closePath;
+ Java_sun_java2d_pipe_ShapeSpanIterator_pathDone;
+ Java_sun_java2d_pipe_ShapeSpanIterator_getNativeConsumer;
+ Java_sun_java2d_pipe_ShapeSpanIterator_appendPoly;
+ Java_sun_java2d_pipe_ShapeSpanIterator_dispose;
+ Java_sun_java2d_pipe_ShapeSpanIterator_getNativeIterator;
+ Java_sun_java2d_pipe_ShapeSpanIterator_getPathBox;
+ Java_sun_java2d_pipe_ShapeSpanIterator_initIDs;
+ Java_sun_java2d_pipe_ShapeSpanIterator_intersectClipBox;
+ Java_sun_java2d_pipe_ShapeSpanIterator_nextSpan;
+ Java_sun_java2d_pipe_ShapeSpanIterator_setNormalize;
+ Java_sun_java2d_pipe_ShapeSpanIterator_setOutputAreaXYXY;
+ Java_sun_java2d_pipe_ShapeSpanIterator_setRule;
+ Java_sun_java2d_pipe_ShapeSpanIterator_skipDownTo;
+
+ Java_java_awt_Dimension_initIDs;
+ Java_java_awt_event_MouseEvent_initIDs;
+ Java_java_awt_image_DataBufferInt_initIDs;
+ Java_java_awt_image_SinglePixelPackedSampleModel_initIDs;
+ Java_java_awt_Rectangle_initIDs;
+ Java_sun_awt_image_BufImgSurfaceData_initIDs;
+ Java_sun_awt_image_BufImgSurfaceData_initRaster;
+ Java_sun_awt_image_BufImgSurfaceData_freeNativeICMData;
+ Java_sun_awt_image_BytePackedRaster_initIDs;
+ Java_sun_awt_image_ImagingLib_lookupByteBI;
+ Java_sun_awt_image_ImagingLib_lookupByteRaster;
+ Java_sun_java2d_SurfaceData_initIDs;
+ Java_sun_java2d_SurfaceData_isOpaqueGray;
+ Java_sun_java2d_Disposer_initIDs;
+ Java_sun_java2d_DefaultDisposerRecord_invokeNativeDispose;
+ Java_sun_java2d_loops_BlitBg_BlitBg;
+ Java_sun_java2d_loops_Blit_Blit;
+ Java_sun_java2d_loops_ScaledBlit_Scale;
+ Java_sun_java2d_loops_DrawLine_DrawLine;
+ Java_sun_java2d_loops_DrawPolygons_DrawPolygons;
+ Java_sun_java2d_loops_DrawPath_DrawPath;
+ Java_sun_java2d_loops_FillPath_FillPath;
+
+ Java_sun_java2d_loops_DrawRect_DrawRect;
+ Java_sun_java2d_loops_FillRect_FillRect;
+ Java_sun_java2d_loops_FillSpans_FillSpans;
+ Java_sun_java2d_loops_GraphicsPrimitiveMgr_initIDs;
+ Java_sun_java2d_loops_GraphicsPrimitiveMgr_registerNativeLoops;
+ Java_sun_java2d_loops_MaskBlit_MaskBlit;
+ Java_sun_java2d_loops_MaskFill_MaskFill;
+ Java_sun_java2d_loops_TransformHelper_Transform;
+ Java_sun_java2d_pipe_Region_initIDs;
+ Java_sun_java2d_pipe_SpanClipRenderer_initIDs;
+ sun_awt_image_GifImageDecoder_initIDs;
+
+ # libmawt entry points
+ SurfaceData_InitOps;
+ SurfaceData_ThrowInvalidPipeException;
+ SurfaceData_IntersectBlitBounds;
+ SurfaceData_IntersectBoundsXYXY;
+ Region_GetBounds;
+ Region_GetInfo;
+ Region_StartIteration;
+ Region_CountIterationRects;
+ Region_NextIteration;
+ Region_EndIteration;
+ RegionToYXBandedRectangles;
+ GrPrim_CompGetXorInfo;
+ GrPrim_CompGetAlphaInfo;
+ GrPrim_ColorGetRGB;
+ J2dTraceImpl;
+ J2dTraceInit;
+ img_makePalette;
+ initInverseGrayLut;
+ make_dither_arrays;
+ make_uns_ordered_dither_array;
+
+ # variables exported to libmawt
+ std_img_oda_red;
+ std_img_oda_blue;
+ std_img_oda_green;
+ std_odas_computed;
+ g_CMpDataID;
+ colorValueID;
+ mul8table;
+ jvm;
+
+ # ProcessPath entry points and data
+ doDrawPath;
+ doFillPath;
+ path2DNumTypesID;
+ path2DTypesID;
+ path2DWindingRuleID;
+ path2DFloatCoordsID;
+ sg2dStrokeHintID;
+ sunHints_INTVAL_STROKE_PURE;
+
+ # CDE private entry points
+ # These are in awt_LoadLibrary.c and falls through to libmawt.
+ # Evidently CDE needs this for backward compatability.
+ Java_sun_awt_motif_XsessionWMcommand;
+ Java_sun_awt_motif_XsessionWMcommand_New;
+
+ # Java Plugin
+ # This is in awt_LoadLibrary.c and falls through to libmawt.
+ # Evidently plugin needs this for backward compatability.
+ getAwtLockFunctions;
+ getAwtData;
+ getAwtDisplay;
+
+ # libfontmanager entry points
+ AWTIsHeadless;
+ GrPrim_Sg2dGetCompInfo;
+ GrPrim_Sg2dGetClip;
+ GetNativePrim;
+ SurfaceData_IntersectBounds;
+ SurfaceData_GetOps;
+ Disposer_AddRecord;
+ GrPrim_Sg2dGetEaRGB;
+ GrPrim_Sg2dGetPixel;
+ GrPrim_Sg2dGetLCDTextContrast;
+
+ local:
+ *;
+};
+
diff --git a/jdk/make/sun/awt/mapfile-vers-linux b/jdk/make/sun/awt/mapfile-vers-linux
new file mode 100644
index 0000000..ccea692
--- /dev/null
+++ b/jdk/make/sun/awt/mapfile-vers-linux
@@ -0,0 +1,575 @@
+#
+# Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface for libawt.so on Linux.
+# Linux port does not use mawt, all public symbols are in libawt.so
+
+SUNWprivate_1.1 {
+ global:
+ JNI_OnLoad;
+
+ Java_java_awt_CheckboxMenuItem_initIDs;
+ Java_java_awt_Color_initIDs;
+ Java_java_awt_FontMetrics_initIDs;
+ Java_java_awt_image_BufferedImage_initIDs;
+ Java_sun_awt_image_DataBufferNative_getElem;
+ Java_sun_awt_image_DataBufferNative_setElem;
+ Java_java_awt_image_ColorModel_initIDs;
+ Java_java_awt_image_ComponentSampleModel_initIDs;
+ Java_java_awt_image_IndexColorModel_initIDs;
+ Java_java_awt_image_Kernel_initIDs;
+ Java_java_awt_image_Raster_initIDs;
+ Java_java_awt_image_SampleModel_initIDs;
+ Java_java_awt_Label_initIDs;
+ Java_java_awt_MenuBar_initIDs;
+ Java_java_awt_ScrollPaneAdjustable_initIDs;
+ Java_java_awt_Toolkit_initIDs;
+ Java_java_awt_TrayIcon_initIDs;
+ Java_sun_awt_DebugSettings_setCTracingOn__Z;
+ Java_sun_awt_DebugSettings_setCTracingOn__ZLjava_lang_String_2;
+ Java_sun_awt_DebugSettings_setCTracingOn__ZLjava_lang_String_2I;
+ Java_sun_awt_image_ByteComponentRaster_initIDs;
+ Java_sun_awt_image_GifImageDecoder_initIDs;
+ Java_sun_awt_image_GifImageDecoder_parseImage;
+ Java_sun_awt_image_Image_initIDs;
+ Java_sun_awt_image_ImageRepresentation_initIDs;
+ Java_sun_awt_image_ImageRepresentation_setBytePixels;
+ Java_sun_awt_image_ImageRepresentation_setDiffICM;
+ Java_sun_awt_image_ImageRepresentation_setICMpixels;
+ Java_sun_awt_image_ImagingLib_convolveBI;
+ Java_sun_awt_image_ImagingLib_convolveRaster;
+ Java_sun_awt_image_ImagingLib_init;
+ Java_sun_awt_image_ImagingLib_transformBI;
+ Java_sun_awt_image_ImagingLib_transformRaster;
+ Java_sun_awt_image_IntegerComponentRaster_initIDs;
+ Java_sun_awt_image_ShortComponentRaster_initIDs;
+ Java_sun_java2d_pipe_SpanClipRenderer_eraseTile;
+ Java_sun_java2d_pipe_SpanClipRenderer_fillTile;
+ Java_sun_java2d_pipe_ShapeSpanIterator_addSegment;
+ Java_sun_java2d_pipe_ShapeSpanIterator_moveTo;
+ Java_sun_java2d_pipe_ShapeSpanIterator_lineTo;
+ Java_sun_java2d_pipe_ShapeSpanIterator_quadTo;
+ Java_sun_java2d_pipe_ShapeSpanIterator_curveTo;
+ Java_sun_java2d_pipe_ShapeSpanIterator_closePath;
+ Java_sun_java2d_pipe_ShapeSpanIterator_pathDone;
+ Java_sun_java2d_pipe_ShapeSpanIterator_getNativeConsumer;
+ Java_sun_java2d_pipe_ShapeSpanIterator_appendPoly;
+ Java_sun_java2d_pipe_ShapeSpanIterator_dispose;
+ Java_sun_java2d_pipe_ShapeSpanIterator_getNativeIterator;
+ Java_sun_java2d_pipe_ShapeSpanIterator_getPathBox;
+ Java_sun_java2d_pipe_ShapeSpanIterator_initIDs;
+ Java_sun_java2d_pipe_ShapeSpanIterator_intersectClipBox;
+ Java_sun_java2d_pipe_ShapeSpanIterator_nextSpan;
+ Java_sun_java2d_pipe_ShapeSpanIterator_setNormalize;
+ Java_sun_java2d_pipe_ShapeSpanIterator_setOutputAreaXYXY;
+ Java_sun_java2d_pipe_ShapeSpanIterator_setRule;
+ Java_sun_java2d_pipe_ShapeSpanIterator_skipDownTo;
+
+ Java_java_awt_Dimension_initIDs;
+ Java_java_awt_event_MouseEvent_initIDs;
+ Java_java_awt_image_DataBufferInt_initIDs;
+ Java_java_awt_image_SinglePixelPackedSampleModel_initIDs;
+ Java_java_awt_Rectangle_initIDs;
+ Java_sun_awt_image_BufImgSurfaceData_getSurfaceData;
+ Java_sun_awt_image_BufImgSurfaceData_initIDs;
+ Java_sun_awt_image_BufImgSurfaceData_initRaster;
+ Java_sun_awt_image_BufImgSurfaceData_setSurfaceData;
+ Java_sun_awt_image_BufImgSurfaceData_freeNativeICMData;
+ Java_sun_awt_image_BytePackedRaster_initIDs;
+ Java_sun_awt_image_ImagingLib_lookupByteBI;
+ Java_sun_awt_image_ImagingLib_lookupByteRaster;
+ Java_sun_java2d_SurfaceData_initIDs;
+ Java_sun_java2d_SurfaceData_isOpaqueGray;
+ Java_sun_java2d_Disposer_initIDs;
+ Java_sun_java2d_DefaultDisposerRecord_invokeNativeDispose;
+ Java_sun_java2d_loops_BlitBg_BlitBg;
+ Java_sun_java2d_loops_Blit_Blit;
+ Java_sun_java2d_loops_ScaledBlit_Scale;
+ Java_sun_java2d_loops_DrawLine_DrawLine;
+ Java_sun_java2d_loops_DrawPolygons_DrawPolygons;
+ Java_sun_java2d_loops_DrawRect_DrawRect;
+ Java_sun_java2d_loops_FillRect_FillRect;
+ Java_sun_java2d_loops_FillSpans_FillSpans;
+ Java_sun_java2d_loops_GraphicsPrimitiveMgr_initIDs;
+ Java_sun_java2d_loops_GraphicsPrimitiveMgr_registerNativeLoops;
+ Java_sun_java2d_loops_MaskBlit_MaskBlit;
+ Java_sun_java2d_loops_MaskFill_MaskFill;
+ Java_sun_java2d_pipe_BufferedRenderPipe_fillSpans;
+ Java_sun_java2d_pipe_RenderBuffer_copyFromArray;
+ Java_sun_java2d_pipe_SpanClipRenderer_initIDs;
+ sun_awt_image_GifImageDecoder_initIDs;
+
+ # libmawt entry points
+ SurfaceData_InitOps;
+ SurfaceData_ThrowInvalidPipeException;
+ Region_GetBounds;
+ Region_GetInfo;
+ Region_StartIteration;
+ Region_CountIterationRects;
+ Region_NextIteration;
+ Region_EndIteration;
+ GrPrim_CompGetXorInfo;
+ GrPrim_CompGetAlphaInfo;
+ img_makePalette;
+ initInverseGrayLut;
+ make_dither_arrays;
+ make_uns_ordered_dither_array;
+
+ # variables exported to libmawt
+ std_img_oda_red;
+ std_img_oda_blue;
+ std_img_oda_green;
+ std_odas_computed;
+ g_CMpDataID;
+ colorValueID;
+ jvm;
+
+ # CDE private entry point
+ # This is in awt_LoadLibrary.c and falls through to libmawt.
+ # Evidently CDE needs this for backward compatability.
+ Java_sun_awt_motif_XsessionWMcommand;
+
+ # Java Plugin
+ # This is in awt_LoadLibrary.c and falls through to libmawt.
+ # Evidently plugin needs this for backward compatability.
+ getAwtLockFunctions;
+ getAwtData;
+ getAwtDisplay;
+
+ # libfontmanager entry points
+ AWTIsHeadless;
+ GrPrim_Sg2dGetCompInfo;
+ GrPrim_Sg2dGetClip;
+ GetNativePrim;
+ SurfaceData_IntersectBounds;
+ SurfaceData_GetOps;
+ Disposer_AddRecord;
+ GrPrim_Sg2dGetEaRGB;
+ GrPrim_Sg2dGetPixel;
+ GrPrim_Sg2dGetLCDTextContrast;
+
+ Java_sun_awt_motif_MComponentPeer_restoreFocus;
+ Java_sun_awt_DefaultMouseInfoPeer_fillPointWithCoords;
+ Java_sun_awt_DefaultMouseInfoPeer_isWindowUnderMouse;
+ Java_java_awt_AWTEvent_nativeSetSource;
+ Java_java_awt_Checkbox_initIDs;
+ Java_java_awt_Component_initIDs;
+ Java_java_awt_Dialog_initIDs;
+ Java_java_awt_Font_initIDs;
+ Java_sun_awt_KeyboardFocusManagerPeerImpl_clearNativeGlobalFocusOwner;
+ Java_sun_awt_KeyboardFocusManagerPeerImpl_getNativeFocusOwner;
+ Java_sun_awt_KeyboardFocusManagerPeerImpl_getNativeFocusedWindow;
+ Java_java_awt_KeyboardFocusManager_initIDs;
+ Java_java_awt_Menu_initIDs;
+ Java_java_awt_MenuComponent_initIDs;
+ Java_java_awt_MenuItem_initIDs;
+ Java_java_awt_Scrollbar_initIDs;
+ Java_java_awt_ScrollPane_initIDs;
+ Java_java_awt_TextArea_initIDs;
+ Java_sun_awt_FontDescriptor_initIDs;
+ Java_sun_awt_motif_MButtonPeer_create;
+ Java_sun_awt_motif_MButtonPeer_setLabel;
+ Java_sun_awt_motif_MCanvasPeer_create;
+ Java_sun_awt_motif_MCanvasPeer_initIDs;
+ Java_sun_awt_motif_MCanvasPeer_resetTargetGC;
+ Java_sun_awt_motif_MCheckboxMenuItemPeer_pSetState;
+ Java_sun_awt_motif_MCheckboxPeer_create;
+ Java_sun_awt_motif_MCheckboxPeer_setCheckboxGroup;
+ Java_sun_awt_motif_MCheckboxPeer_setLabel;
+ Java_sun_awt_motif_MCheckboxPeer_pSetState;
+ Java_sun_awt_motif_MCheckboxPeer_pGetState;
+ Java_sun_awt_motif_MChoicePeer_addItem;
+ Java_sun_awt_motif_MChoicePeer_appendItems;
+ Java_sun_awt_motif_MChoicePeer_create;
+ Java_sun_awt_motif_MChoicePeer_pReshape;
+ Java_sun_awt_motif_MChoicePeer_remove;
+ Java_sun_awt_motif_MChoicePeer_removeAll;
+ Java_sun_awt_motif_MChoicePeer_setBackground;
+ Java_sun_awt_motif_MChoicePeer_pSelect;
+ Java_sun_awt_motif_MChoicePeer_setFont;
+ Java_sun_awt_motif_MChoicePeer_setForeground;
+ Java_sun_awt_motif_MComponentPeer_addNativeDropTarget;
+ Java_sun_awt_motif_MComponentPeer_createBackBuffer;
+ Java_sun_awt_motif_MComponentPeer_destroyBackBuffer;
+ Java_sun_awt_motif_MComponentPeer_getNativeColor;
+ Java_sun_awt_motif_MComponentPeer_getWindow;
+ Java_sun_awt_motif_MComponentPeer_pDisable;
+ Java_sun_awt_motif_MComponentPeer_pDispose;
+ Java_sun_awt_motif_MComponentPeer_pEnable;
+ Java_sun_awt_motif_MComponentPeer_pGetLocationOnScreen;
+ Java_sun_awt_motif_MComponentPeer_pGetLocationOnScreen2;
+ Java_sun_awt_motif_MComponentPeer_pHide;
+ Java_sun_awt_motif_MComponentPeer_pInitialize;
+ Java_sun_awt_motif_MComponentPeer_pMakeCursorVisible;
+ Java_sun_awt_motif_MComponentPeer_pReshape;
+ Java_sun_awt_motif_MComponentPeer_pShow;
+ Java_sun_awt_motif_MComponentPeer_removeNativeDropTarget;
+ Java_sun_awt_motif_MComponentPeer_swapBuffers;
+ Java_sun_awt_motif_MComponentPeer_pSetBackground;
+ Java_sun_awt_motif_MComponentPeer_pSetFont;
+ Java_sun_awt_motif_MComponentPeer_processSynchronousLightweightTransfer;
+ Java_sun_awt_motif_MComponentPeer__1requestFocus;
+ Java_sun_awt_motif_MCheckboxMenuItemPeer_getState;
+ Java_sun_awt_motif_MComponentPeer_pSetForeground;
+ Java_sun_awt_motif_MDragSourceContextPeer_startDrag;
+ Java_sun_awt_motif_MDragSourceContextPeer_setNativeCursor;
+ Java_sun_awt_motif_MDropTargetContextPeer_addTransfer;
+ Java_sun_awt_motif_MDropTargetContextPeer_dropDone;
+ Java_sun_awt_motif_MDropTargetContextPeer_startTransfer;
+ Java_sun_awt_motif_X11DragSourceContextPeer_startDrag;
+ Java_sun_awt_motif_X11DragSourceContextPeer_setNativeCursor;
+ Java_sun_awt_motif_X11DropTargetContextPeer_sendResponse;
+ Java_sun_awt_motif_X11DropTargetContextPeer_dropDone;
+ Java_sun_awt_motif_X11DropTargetContextPeer_getData;
+ Java_sun_awt_motif_MEmbeddedFramePeer_NEFcreate;
+ Java_sun_awt_motif_MEmbeddedFramePeer_pShowImpl;
+ Java_sun_awt_motif_MEmbeddedFramePeer_pReshapePrivate;
+ Java_sun_awt_motif_MEmbeddedFramePeer_getBoundsPrivate;
+ Java_sun_awt_motif_MFramePeer_pSetIconImage___3B_3I_3SII;
+ Java_sun_awt_motif_MEmbeddedFramePeer_requestXEmbedFocus;
+ Java_sun_awt_motif_MEmbeddedFramePeer_isXEmbedApplicationActive;
+ Java_sun_awt_motif_MEmbeddedFramePeer_isXEmbedActive;
+ Java_sun_awt_motif_MEmbeddedFrame_getWidget;
+ Java_sun_awt_motif_MEmbeddedFrame_mapWidget;
+ Java_sun_awt_motif_MFileDialogPeer_create;
+ Java_sun_awt_motif_MFileDialogPeer_pDispose;
+ Java_sun_awt_motif_MFileDialogPeer_pHide;
+ Java_sun_awt_motif_MFileDialogPeer_pReshape;
+ Java_sun_awt_motif_MFileDialogPeer_pShow;
+ Java_sun_awt_motif_MFileDialogPeer_setFileEntry;
+ Java_sun_awt_motif_MFileDialogPeer_setFont;
+ Java_sun_awt_motif_MFramePeer_pGetIconSize;
+ Java_sun_awt_motif_MGlobalCursorManager_cacheInit;
+ Java_sun_awt_motif_MGlobalCursorManager_findComponentAt;
+ Java_sun_awt_motif_MGlobalCursorManager_findHeavyweightUnderCursor;
+ Java_sun_awt_motif_MGlobalCursorManager_getCursorPos;
+ Java_sun_awt_motif_MGlobalCursorManager_getLocationOnScreen;
+ Java_sun_awt_motif_MLabelPeer_create;
+ Java_sun_awt_motif_MLabelPeer_setAlignment;
+ Java_sun_awt_motif_MLabelPeer_setText;
+ Java_sun_awt_motif_MListPeer_addItem;
+ Java_sun_awt_motif_MListPeer_create;
+ Java_sun_awt_motif_MListPeer_delItems;
+ Java_sun_awt_motif_MListPeer_deselect;
+ Java_sun_awt_motif_MListPeer_isSelected;
+ Java_sun_awt_motif_MListPeer_makeVisible;
+ Java_sun_awt_motif_MListPeer_select;
+ Java_sun_awt_motif_MListPeer_setMultipleSelections;
+ Java_sun_awt_motif_MMenuBarPeer_create;
+ Java_sun_awt_motif_MMenuItemPeer_createMenuItem;
+ Java_sun_awt_motif_MMenuItemPeer_pDisable;
+ Java_sun_awt_motif_MMenuItemPeer_pDispose;
+ Java_sun_awt_motif_MMenuItemPeer_pEnable;
+ Java_sun_awt_motif_MMenuItemPeer_pSetLabel;
+ Java_sun_awt_motif_MMenuPeer_createMenu;
+ Java_sun_awt_motif_MMenuPeer_createSubMenu;
+ Java_sun_awt_motif_MMenuPeer_pDispose;
+ Java_sun_awt_motif_MPopupMenuPeer_createMenu;
+ Java_sun_awt_motif_MPopupMenuPeer_pDispose;
+ Java_sun_awt_motif_MPopupMenuPeer_pShow;
+ Java_sun_awt_motif_MRobotPeer_getRGBPixelsImpl;
+ Java_sun_awt_motif_MRobotPeer_keyPressImpl;
+ Java_sun_awt_motif_MRobotPeer_keyReleaseImpl;
+ Java_sun_awt_motif_MRobotPeer_mouseMoveImpl;
+ Java_sun_awt_motif_MRobotPeer_mousePressImpl;
+ Java_sun_awt_motif_MRobotPeer_mouseReleaseImpl;
+ Java_sun_awt_motif_MRobotPeer_mouseWheelImpl;
+ Java_sun_awt_motif_MRobotPeer_setup;
+ Java_sun_awt_motif_MScrollbarPeer_create;
+ Java_sun_awt_motif_MScrollbarPeer_setLineIncrement;
+ Java_sun_awt_motif_MScrollbarPeer_setPageIncrement;
+ Java_sun_awt_motif_MScrollbarPeer_pSetValues;
+ Java_sun_awt_motif_MScrollPanePeer_create;
+ Java_sun_awt_motif_MScrollPanePeer_pGetBlockIncrement;
+ Java_sun_awt_motif_MScrollPanePeer_pGetScrollbarSpace;
+ Java_sun_awt_motif_MScrollPanePeer_pGetShadow;
+ Java_sun_awt_motif_MScrollPanePeer_pInsets;
+ Java_sun_awt_motif_MScrollPanePeer_pSetIncrement;
+ Java_sun_awt_motif_MScrollPanePeer_pSetScrollChild;
+ Java_sun_awt_motif_MScrollPanePeer_setScrollPosition;
+ Java_sun_awt_motif_MTextAreaPeer_initIDs;
+ Java_sun_awt_motif_MTextAreaPeer_pCreate;
+ Java_sun_awt_motif_MTextAreaPeer_getCaretPosition;
+ Java_sun_awt_motif_MTextAreaPeer_getExtraHeight;
+ Java_sun_awt_motif_MTextAreaPeer_getExtraWidth;
+ Java_sun_awt_motif_MTextAreaPeer_getSelectionEnd;
+ Java_sun_awt_motif_MTextAreaPeer_getSelectionStart;
+ Java_sun_awt_motif_MTextAreaPeer_getText;
+ Java_sun_awt_motif_MTextAreaPeer_insert;
+ Java_sun_awt_motif_MTextAreaPeer_pMakeCursorVisible;
+ Java_sun_awt_motif_MTextAreaPeer_pSetEditable;
+ Java_sun_awt_motif_MTextAreaPeer_pShow2;
+ Java_sun_awt_motif_MTextAreaPeer_replaceRange;
+ Java_sun_awt_motif_MTextAreaPeer_select;
+ Java_sun_awt_motif_MTextAreaPeer_setCaretPosition;
+ Java_sun_awt_motif_MTextAreaPeer_setFont;
+ Java_sun_awt_motif_MTextAreaPeer_setText;
+ Java_sun_awt_motif_MTextAreaPeer_setTextBackground;
+ Java_sun_awt_motif_MTextFieldPeer_initIDs;
+ Java_sun_awt_motif_MTextFieldPeer_pCreate;
+ Java_sun_awt_motif_MTextFieldPeer_getCaretPosition;
+ Java_sun_awt_motif_MTextFieldPeer_getSelectionEnd;
+ Java_sun_awt_motif_MTextFieldPeer_getSelectionStart;
+ Java_sun_awt_motif_MTextFieldPeer_getText;
+ Java_sun_awt_motif_MTextFieldPeer_insertReplaceText;
+ Java_sun_awt_motif_MTextFieldPeer_preDispose;
+ Java_sun_awt_motif_MTextFieldPeer_pSetEditable;
+ Java_sun_awt_motif_MTextFieldPeer_select;
+ Java_sun_awt_motif_MTextFieldPeer_setCaretPosition;
+ Java_sun_awt_motif_MTextFieldPeer_setEchoChar;
+ Java_sun_awt_motif_MTextFieldPeer_setFont;
+ Java_sun_awt_motif_MTextFieldPeer_setText;
+ Java_sun_awt_motif_MToolkit_beep;
+ Java_sun_awt_motif_MToolkit_getLockingKeyStateNative;
+ Java_sun_awt_motif_MToolkit_getMulticlickTime;
+ Java_sun_awt_motif_MToolkit_getNumMouseButtons;
+ Java_sun_awt_motif_MToolkit_getScreenHeight;
+ Java_sun_awt_motif_MToolkit_getScreenResolution;
+ Java_sun_awt_motif_MToolkit_getScreenWidth;
+ Java_sun_awt_motif_MToolkit_init;
+ Java_sun_awt_motif_MToolkit_isDynamicLayoutSupportedNative;
+ Java_sun_awt_motif_MToolkit_isFrameStateSupported;
+ Java_sun_awt_motif_MToolkit_loadSystemColors;
+ Java_sun_awt_motif_MToolkit_makeColorModel;
+ Java_sun_awt_motif_MToolkit_run;
+ Java_sun_awt_motif_MToolkit_sync;
+ Java_sun_awt_motif_MToolkit_isAlwaysOnTopSupported;
+ Java_sun_awt_motif_MWindowAttributes_initIDs;
+ Java_sun_awt_motif_MWindowPeer_pDispose;
+ Java_sun_awt_motif_MWindowPeer_pHide;
+ Java_sun_awt_motif_MWindowPeer_pReshape;
+ Java_sun_awt_motif_MWindowPeer_pSetTitle;
+ Java_sun_awt_motif_MWindowPeer_pShow;
+ Java_sun_awt_motif_MWindowPeer_setResizable;
+ Java_sun_awt_motif_MWindowPeer_toBack;
+ Java_sun_awt_motif_MWindowPeer_addTextComponentNative;
+ Java_sun_awt_motif_MWindowPeer_getState;
+ Java_sun_awt_motif_MWindowPeer_pSetIMMOption;
+ Java_sun_awt_motif_MWindowPeer_pSetMenuBar;
+ Java_sun_awt_motif_MWindowPeer_pShowModal;
+ Java_sun_awt_motif_MWindowPeer_removeTextComponentNative;
+ Java_sun_awt_motif_MWindowPeer_setSaveUnder;
+ Java_sun_awt_motif_MWindowPeer_setState;
+ Java_sun_awt_motif_MWindowPeer_resetTargetGC;
+ Java_sun_awt_motif_MWindowPeer_registerX11DropTarget;
+ Java_sun_awt_motif_MWindowPeer_unregisterX11DropTarget;
+ Java_sun_awt_motif_MWindowPeer_updateAlwaysOnTop;
+ Java_sun_awt_motif_X11CustomCursor_cacheInit;
+ Java_sun_awt_motif_X11CustomCursor_createCursor;
+ Java_sun_awt_motif_X11CustomCursor_queryBestCursor;
+ Java_sun_awt_motif_X11FontMetrics_bytesWidth;
+ Java_sun_awt_motif_X11FontMetrics_getMFCharsWidth;
+ Java_sun_awt_motif_X11FontMetrics_init;
+ Java_sun_awt_X11InputMethod_disposeXIC;
+ Java_sun_awt_X11InputMethod_isCompositionEnabledNative;
+ Java_sun_awt_X11InputMethod_resetXIC;
+ Java_sun_awt_X11InputMethod_setCompositionEnabledNative;
+ Java_sun_awt_X11InputMethod_turnoffStatusWindow;
+ Java_sun_awt_motif_MInputMethod_openXIMNative;
+ Java_sun_awt_motif_MInputMethod_configureStatusAreaNative;
+ Java_sun_awt_motif_MInputMethod_createXICNative;
+ Java_sun_awt_motif_MInputMethod_reconfigureXICNative;
+ Java_sun_awt_motif_MInputMethod_setXICFocusNative;
+ Java_sun_awt_motif_X11Clipboard_getClipboardData;
+ Java_sun_awt_motif_X11Clipboard_getClipboardFormats;
+ Java_sun_awt_motif_X11Clipboard_registerClipboardViewer;
+ Java_sun_awt_motif_X11Clipboard_unregisterClipboardViewer;
+ Java_sun_awt_motif_X11Selection_init;
+ Java_sun_awt_motif_X11Selection_pGetSelectionOwnership;
+ Java_sun_awt_motif_X11Selection_clearNativeContext;
+ Java_sun_awt_SunToolkit_closeSplashScreen;
+ Java_sun_awt_PlatformFont_initIDs;
+ Java_sun_awt_X11GraphicsConfig_init;
+ Java_sun_awt_X11GraphicsConfig_dispose;
+ Java_sun_awt_X11GraphicsConfig_pGetBounds;
+ Java_sun_awt_X11GraphicsConfig_getNumColors;
+ Java_sun_awt_X11GraphicsConfig_getXResolution;
+ Java_sun_awt_X11GraphicsConfig_getYResolution;
+ Java_sun_awt_X11GraphicsDevice_isDBESupported;
+ Java_sun_awt_X11GraphicsDevice_getDisplay;
+ Java_sun_awt_X11GraphicsDevice_getDoubleBufferVisuals;
+ Java_sun_awt_X11GraphicsDevice_getNumConfigs;
+ Java_sun_awt_X11GraphicsDevice_initIDs;
+ Java_sun_awt_X11GraphicsDevice_initXrandrExtension;
+ Java_sun_awt_X11GraphicsDevice_enterFullScreenExclusive;
+ Java_sun_awt_X11GraphicsDevice_exitFullScreenExclusive;
+ Java_sun_awt_X11GraphicsDevice_getCurrentDisplayMode;
+ Java_sun_awt_X11GraphicsDevice_enumDisplayModes;
+ Java_sun_awt_X11GraphicsDevice_configDisplayMode;
+ Java_sun_awt_X11GraphicsDevice_resetNativeData;
+ Java_sun_awt_X11GraphicsEnvironment_checkShmExt;
+ Java_sun_awt_X11GraphicsEnvironment_getDefaultScreenNum;
+ Java_sun_awt_X11GraphicsEnvironment_getDisplayString;
+ Java_sun_awt_X11GraphicsEnvironment_getNumScreens;
+ Java_sun_awt_X11GraphicsEnvironment_initDisplay;
+ Java_sun_awt_X11GraphicsEnvironment_pRunningXinerama;
+ Java_sun_awt_X11GraphicsEnvironment_getXineramaCenterPoint;
+
+
+
+ Java_java_awt_AWTEvent_initIDs;
+ Java_java_awt_Button_initIDs;
+ Java_java_awt_Container_initIDs;
+ Java_java_awt_Cursor_finalizeImpl;
+ Java_java_awt_Cursor_initIDs;
+ Java_java_awt_Event_initIDs;
+ Java_java_awt_event_InputEvent_initIDs;
+ Java_java_awt_event_KeyEvent_initIDs;
+ Java_java_awt_FileDialog_initIDs;
+ Java_java_awt_Frame_initIDs;
+ Java_java_awt_Insets_initIDs;
+ Java_java_awt_TextField_initIDs;
+ Java_java_awt_Window_initIDs;
+ Java_sun_awt_motif_MCheckboxPeer_getIndicatorSize;
+ Java_sun_awt_motif_MCheckboxPeer_getSpacing;
+ Java_sun_awt_motif_MChoicePeer_freeNativeData;
+ Java_sun_awt_motif_MComponentPeer_getComponents_1NoClientCode;
+ Java_sun_awt_motif_MComponentPeer_getParent_1NoClientCode;
+ Java_sun_awt_motif_MComponentPeer_initIDs;
+ Java_sun_awt_motif_MComponentPeer_nativeHandleEvent;
+ Java_sun_awt_motif_MComponentPeer_pSetCursor;
+ Java_sun_awt_motif_MComponentPeer_pSetInnerForeground;
+ Java_sun_awt_motif_MComponentPeer_pSetScrollbarBackground;
+ Java_sun_awt_motif_MComponentPeer_setTargetBackground;
+ Java_sun_awt_motif_MDataTransferer_dragQueryFile;
+ Java_sun_awt_motif_MDataTransferer_getAtomForTarget;
+ Java_sun_awt_motif_MDataTransferer_getTargetNameForAtom;
+ Java_sun_awt_motif_MFileDialogPeer_insertReplaceFileDialogText;
+ Java_sun_awt_motif_MFontPeer_initIDs;
+ Java_sun_awt_motif_MListPeer_setBackground;
+ Java_sun_awt_motif_MMenuBarPeer_initIDs;
+ Java_sun_awt_motif_MMenuBarPeer_pDispose;
+ Java_sun_awt_motif_MMenuItemPeer_getParent_1NoClientCode;
+ Java_sun_awt_motif_MMenuItemPeer_initIDs;
+ Java_sun_awt_motif_MMenuItemPeer_pSetShortcut;
+ Java_sun_awt_motif_MPopupMenuPeer_initIDs;
+ Java_sun_awt_motif_MScrollbarPeer_initIDs;
+ Java_sun_awt_motif_MScrollPanePeer_initIDs;
+ Java_sun_awt_motif_MTextAreaPeer_pSetCursor;
+ Java_sun_awt_motif_MToolkit_shutdown;
+ Java_sun_awt_motif_MWindowPeer_initIDs;
+ Java_sun_awt_motif_MWindowPeer_pCreate;
+ Java_sun_awt_motif_MWindowPeer_wrapInSequenced;
+ Java_sun_awt_motif_X11FontMetrics_initIDs;
+ Java_sun_awt_X11InputMethod_initIDs;
+ Java_sun_awt_motif_X11OffScreenImage_updateBitmask;
+ Java_sun_awt_motif_X11Selection_initIDs;
+ Java_sun_awt_motif_MToolkitThreadBlockedHandler_enter;
+ Java_sun_awt_motif_MToolkitThreadBlockedHandler_exit;
+ Java_sun_awt_X11GraphicsConfig_init;
+ Java_sun_awt_X11GraphicsConfig_initIDs;
+ Java_sun_awt_X11GraphicsConfig_makeColorModel;
+ Java_sun_awt_X11GraphicsDevice_getConfigVisualId;
+ Java_sun_awt_X11PMBlitLoops_Blit;
+ Java_sun_awt_X11PMBlitBgLoops_nativeBlitBg;
+ Java_sun_awt_X11Renderer_devFillSpans;
+ Java_sun_awt_X11Renderer_doDrawArc;
+ Java_sun_awt_X11Renderer_doDrawLine;
+ Java_sun_awt_X11Renderer_doDrawOval;
+ Java_sun_awt_X11Renderer_doDrawPoly;
+ Java_sun_awt_X11Renderer_doDrawRect;
+ Java_sun_awt_X11Renderer_doDrawRoundRect;
+ Java_sun_awt_X11Renderer_doFillArc;
+ Java_sun_awt_X11Renderer_doFillOval;
+ Java_sun_awt_X11Renderer_doFillPoly;
+ Java_sun_awt_X11Renderer_doFillRect;
+ Java_sun_awt_X11Renderer_doFillRoundRect;
+ Java_sun_awt_X11Renderer_devCopyArea;
+ Java_sun_awt_X11SurfaceData_initIDs;
+ Java_sun_awt_X11SurfaceData_initOps;
+ Java_sun_awt_X11SurfaceData_initSurface;
+ Java_sun_awt_X11SurfaceData_isDgaAvailable;
+ Java_sun_awt_X11SurfaceData_setInvalid;
+ Java_sun_awt_X11SurfaceData_flushNativeSurface;
+ Java_sun_awt_motif_MEmbedCanvasPeer_initXEmbedServer;
+ Java_sun_awt_motif_MEmbedCanvasPeer_destroyXEmbedServer;
+ Java_sun_awt_motif_MEmbedCanvasPeer_isXEmbedActive;
+ Java_sun_awt_motif_MEmbedCanvasPeer_initDispatching;
+ Java_sun_awt_motif_MEmbedCanvasPeer_endDispatching;
+ Java_sun_awt_motif_MEmbedCanvasPeer_embedChild;
+ Java_sun_awt_motif_MEmbedCanvasPeer_childDestroyed;
+ Java_sun_awt_motif_MEmbedCanvasPeer_getEmbedPreferredSize;
+ Java_sun_awt_motif_MEmbedCanvasPeer_getEmbedMinimumSize;
+ Java_sun_awt_motif_MEmbedCanvasPeer_getClientBounds;
+ Java_sun_awt_motif_MEmbedCanvasPeer_notifyChildEmbedded;
+ Java_sun_awt_motif_MEmbedCanvasPeer_detachChild;
+ Java_sun_awt_motif_MEmbedCanvasPeer_forwardKeyEvent;
+ Java_sun_awt_motif_MEmbedCanvasPeer_getAWTKeyCodeForKeySym;
+ Java_sun_awt_motif_MEmbedCanvasPeer_sendMessage__I;
+ Java_sun_awt_motif_MEmbedCanvasPeer_sendMessage__IJJJ;
+ Java_sun_awt_motif_MEmbedCanvasPeer_getWindow;
+ Java_sun_awt_motif_MEmbedCanvasPeer_forwardEventToEmbedded;
+ Java_sun_awt_motif_GrabbedKey_initKeySymAndModifiers;
+ Java_sun_awt_motif_MEmbeddedFramePeer_traverseOut;
+ awt_display;
+ awt_lock;
+ awt_Lock;
+ awt_Unlock;
+ awt_GetDrawingSurface;
+ awt_FreeDrawingSurface;
+ awt_GetComponent;
+
+ X11SurfaceData_GetOps;
+ getDefaultConfig;
+ Java_sun_font_FontManager_getFontConfig;
+ Java_sun_font_FontManager_getFontConfigAASettings;
+ Java_sun_font_FontManager_getFontPath;
+ Java_sun_font_FontManager_setNativeFontPath;
+ Java_sun_font_FontManager_populateFontFileNameMap;
+
+ # CDE private entry point
+ Java_sun_awt_motif_XsessionWMcommand;
+
+ # Java Plugin
+ getAwtLockFunctions;
+ getAwtData;
+ getAwtDisplay;
+
+ # libfontmanager entry points
+ AWTIsHeadless;
+ AWTCountFonts;
+ AWTLoadFont;
+ AWTFreeFont;
+ AWTFontMinByte1;
+ AWTFontMaxByte1;
+ AWTFontMinCharOrByte2;
+ AWTFontMaxCharOrByte2;
+ AWTFontDefaultChar;
+ AWTFontPerChar;
+ AWTFontMaxBounds;
+ AWTFontTextExtents16;
+ AWTFreeChar;
+ AWTFontGenerateImage;
+ AWTCharAdvance;
+ AWTCharLBearing;
+ AWTCharRBearing;
+ AWTCharAscent;
+ AWTCharDescent;
+ AWTDrawGlyphList;
+
+ local:
+ *;
+};
+
diff --git a/jdk/make/sun/awt/mawt.gmk b/jdk/make/sun/awt/mawt.gmk
new file mode 100644
index 0000000..ffe222c
--- /dev/null
+++ b/jdk/make/sun/awt/mawt.gmk
@@ -0,0 +1,246 @@
+#
+# Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# to create directory:
+#
+INIT += $(LIB_LOCATION)
+
+ifndef HEADLESS
+ifeq ($(PLATFORM), linux)
+ifeq ($(STATIC_MOTIF),false)
+INIT += $(LIB_LOCATION)/libXm.so
+endif
+endif
+endif
+
+#
+# Files
+#
+# mawt.gmk is just used in building X/Motif native code, so
+# this list of java files is no longer included.
+#include FILES_java_unix.gmk
+include $(BUILDDIR)/sun/awt/FILES_c_unix.gmk
+
+include $(BUILDDIR)/sun/awt/FILES_export_unix.gmk
+
+# Check which C files should be built. Headless uses only
+# non-motif files. Also, a version-specific motif file is
+# compiled based on the motif version.
+ifdef HEADLESS
+ FILES_c = $(FILES_NO_MOTIF_c)
+else
+ FILES_c = $(FILES_MOTIF_c) $(FILES_NO_MOTIF_c)
+
+ ifeq ($(MOTIF_VERSION), 2)
+ FILES_c += awt_motif21.c
+ FILES_c += awt_Choice21.c
+ endif
+
+endif
+
+ifeq ($(PLATFORM), solaris)
+ ifneq ($(ARCH), amd64)
+ FILES_reorder += reorder-$(ARCH)
+ endif
+endif
+
+#
+# Rules
+#
+
+# Class files should be built & clobbered in make/sun/awt
+# If removing this line, also reinclude sun_awt.jmk
+DONT_CLOBBER_CLASSES = true
+
+
+ifndef HEADLESS
+ifeq ($(VARIANT), OPT)
+FILES_m = ../awt/mapfile-mawt-vers
+endif
+endif
+
+# Since this library will be living in a subdirectory below the other libraries
+# we need to add an extra runpath so that libraries in the upper directory
+# are found at runtime.
+LD_RUNPATH_EXTRAS = ..
+
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+$(LIB_LOCATION):
+ $(MKDIR) -p $@
+
+ifeq ($(PLATFORM), linux)
+ifeq ($(STATIC_MOTIF),false)
+$(LIB_LOCATION)/libXm.so:
+ $(CP) $(MOTIF_LIB)/libXm.so $(LIB_LOCATION)/libXm.so
+# Automounter problem makes the link fail on Redhat 6.1.
+# $(LN) -s $(MOTIF_LIB)/libXm.so $(LIB_LOCATION)/libXm.so
+endif
+endif
+
+clean::
+
+#
+# Add to the ambient vpath to pick up files in subdirectories
+#
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/alphacomposite
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/image
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/image/gif
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/image/cvutils
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/shell
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/medialib
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/../java2d/opengl
+vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)/../java2d/opengl
+vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)/../java2d/x11
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/debug
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/../font
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/../java2d
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/../java2d/loops
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/../java2d/pipe
+vpath %.cpp $(SHARE_SRC)/native/$(PKGDIR)/image
+vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)/robot_child
+
+#
+# Libraries to link in.
+#
+
+
+#CFLAGS += -g
+ifeq ($(HEADLESS),true)
+CFLAGS += -DHEADLESS=$(HEADLESS)
+CPPFLAGS += -DHEADLESS=$(HEADLESS)
+OTHER_LDLIBS =
+else
+CFLAGS += -DMOTIF_VERSION=$(MOTIF_VERSION)
+
+ifeq ($(STATIC_MOTIF),true)
+ LIBXM = $(MOTIF_LIB)/libXm.a -lXp -lXmu
+ ifeq ($(PLATFORM), linux)
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ LIBXT = -lXt
+ else
+ # Allows for builds on Debian GNU Linux, X11 is in a different place
+ LIBXT = $(firstword $(wildcard /usr/X11R6/lib/libXt.a) \
+ $(wildcard /usr/lib/libXt.a))
+ LIBSM = $(firstword $(wildcard /usr/X11R6/lib/libSM.a) \
+ $(wildcard /usr/lib/libSM.a))
+ LIBICE = $(firstword $(wildcard /usr/X11R6/lib/libICE.a) \
+ $(wildcard /usr/lib/libICE.a))
+ endif
+ endif
+else
+ LIBXM = -L$(MOTIF_LIB) -lXm -lXp
+ ifeq ($(PLATFORM), linux)
+ LIBXT = -lXt
+ LIBSM =
+ LIBICE =
+ endif
+endif
+
+LIBXTST = -lXtst
+
+# Use -lXmu for EditRes support
+LIBXMU_DBG = -lXmu
+LIBXMU_OPT =
+LIBXMU = $(LIBXMU_$(VARIANT))
+
+ifeq ($(PLATFORM), solaris)
+OTHER_LDLIBS = $(LIBXM) -lXt -lXext $(LIBXTST) $(LIBXMU) -lX11 -lXi
+endif
+
+ifeq ($(PLATFORM), linux)
+OTHER_CFLAGS += -DMLIB_NO_LIBSUNMATH
+OTHER_CFLAGS += -DMOTIF_VERSION=2
+OTHER_CFLAGS += -DXMSTRINGDEFINES=1
+OTHER_LDLIBS = $(LIBXM) $(LIBXMU) $(LIBXTST) -lXext $(LIBXT) $(LIBSM) $(LIBICE) -lX11 -lXi
+endif
+
+endif
+# !HEADLESS
+
+OTHER_LDLIBS += $(JVMLIB) $(LIBCXX) \
+ -lawt $(LIBM) -ldl
+
+#
+# Sun CC with -Xa misdefines __STDC__ to 0 (zero).
+# The following will force checking of X11 prototypes.
+#
+ifneq ($(CC_VERSION),gcc)
+CPPFLAGS += -DFUNCPROTO=15
+endif
+
+#
+# Other extra flags needed for compiling.
+#
+CPPFLAGS += -I$(CUPS_HEADERS_PATH)
+
+ifndef HEADLESS
+CPPFLAGS += -I$(MOTIF_DIR)/include \
+ -I$(OPENWIN_HOME)/include
+LDFLAGS += -L$(MOTIF_LIB) -L$(OPENWIN_LIB)
+
+endif # !HEADLESS
+
+CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/debug \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../font \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/../font \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/image \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/image/cvutils \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/shell \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/alphacomposite \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/medialib \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/medialib \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../java2d \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/../java2d \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../java2d/loops \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../java2d/pipe \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../java2d/opengl \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/../java2d/opengl \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/../java2d/x11 \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../dc/doe \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../dc/path \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/../jdga \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR) \
+ $(EVENT_MODEL)
+
+ifeq ($(PLATFORM), linux)
+# Checking for the X11/extensions headers at the additional location
+ CPPFLAGS += -I/X11R6/include/X11/extensions \
+ -I/usr/include/X11/extensions
+endif
+
+ifeq ($(PLATFORM), solaris)
+ CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions
+endif
+
+
+LDFLAGS += -L$(LIBDIR)/$(LIBARCH)/$(TSOBJDIR) \
+ $(AWT_RUNPATH)
+
+CLASSES.export += java.io.InputStream \
+ java.lang.ThreadGroup
+
diff --git a/jdk/make/sun/beans/Makefile b/jdk/make/sun/beans/Makefile
new file mode 100644
index 0000000..1765a30e5
--- /dev/null
+++ b/jdk/make/sun/beans/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building sun.beans.*
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.beans
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = sun/beans
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/sun/cmm/Makefile b/jdk/make/sun/cmm/Makefile
new file mode 100644
index 0000000..66513e5
--- /dev/null
+++ b/jdk/make/sun/cmm/Makefile
@@ -0,0 +1,97 @@
+#
+# Copyright 2006-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+ifdef OPENJDK
+ SUBDIRS += lcms
+ ICCPROFILE_SRC_DIR = $(SHARE_SRC)/lib/cmm/lcms
+else # !OPENJDK
+ SUBDIRS += kcms
+ ICCPROFILE_SRC_DIR = $(CLOSED_SRC)/share/lib/cmm/kcms
+endif # OPENJDK
+
+#
+# ICC Profiles used by the CMM.
+#
+ICCPROFILE_DEST_DIR = $(LIBDIR)/cmm
+
+iccprofiles: $(ICCPROFILE_DEST_DIR)/sRGB.pf $(ICCPROFILE_DEST_DIR)/GRAY.pf \
+ $(ICCPROFILE_DEST_DIR)/CIEXYZ.pf
+
+ifndef OPENJDK
+iccprofiles: $(ICCPROFILE_DEST_DIR)/PYCC.pf \
+ $(ICCPROFILE_DEST_DIR)/LINEAR_RGB.pf
+endif
+
+$(ICCPROFILE_DEST_DIR)/sRGB.pf: $(ICCPROFILE_SRC_DIR)/sRGB.pf
+ $(RM) $(ICCPROFILE_DEST_DIR)/sRGB.pf
+ -$(MKDIR) -p $(ICCPROFILE_DEST_DIR)
+ $(CP) $(ICCPROFILE_SRC_DIR)/sRGB.pf $(ICCPROFILE_DEST_DIR)
+ $(CHMOD) 444 $(ICCPROFILE_DEST_DIR)/sRGB.pf
+
+$(ICCPROFILE_DEST_DIR)/GRAY.pf: $(ICCPROFILE_SRC_DIR)/GRAY.pf
+ $(RM) $(ICCPROFILE_DEST_DIR)/GRAY.pf
+ -$(MKDIR) -p $(ICCPROFILE_DEST_DIR)
+ $(CP) $(ICCPROFILE_SRC_DIR)/GRAY.pf $(ICCPROFILE_DEST_DIR)
+ $(CHMOD) 444 $(ICCPROFILE_DEST_DIR)/GRAY.pf
+
+$(ICCPROFILE_DEST_DIR)/CIEXYZ.pf: $(ICCPROFILE_SRC_DIR)/CIEXYZ.pf
+ $(RM) $(ICCPROFILE_DEST_DIR)/CIEXYZ.pf
+ -$(MKDIR) -p $(ICCPROFILE_DEST_DIR)
+ $(CP) $(ICCPROFILE_SRC_DIR)/CIEXYZ.pf $(ICCPROFILE_DEST_DIR)
+ $(CHMOD) 444 $(ICCPROFILE_DEST_DIR)/CIEXYZ.pf
+
+$(ICCPROFILE_DEST_DIR)/PYCC.pf: $(ICCPROFILE_SRC_DIR)/PYCC.pf
+ $(RM) $(ICCPROFILE_DEST_DIR)/PYCC.pf
+ -$(MKDIR) -p $(ICCPROFILE_DEST_DIR)
+ $(CP) $(ICCPROFILE_SRC_DIR)/PYCC.pf $(ICCPROFILE_DEST_DIR)
+ $(CHMOD) 444 $(ICCPROFILE_DEST_DIR)/PYCC.pf
+
+$(ICCPROFILE_DEST_DIR)/LINEAR_RGB.pf: $(ICCPROFILE_SRC_DIR)/LINEAR_RGB.pf
+ $(RM) $(ICCPROFILE_DEST_DIR)/LINEAR_RGB.pf
+ -$(MKDIR) -p $(ICCPROFILE_DEST_DIR)
+ $(CP) $(ICCPROFILE_SRC_DIR)/LINEAR_RGB.pf $(ICCPROFILE_DEST_DIR)
+ $(CHMOD) 444 $(ICCPROFILE_DEST_DIR)/LINEAR_RGB.pf
+
+iccprofiles.clean:
+ $(RM) -r $(ICCPROFILE_DEST_DIR)
+
+
+clobber: iccprofiles.clean
+ $(SUBDIRS-loop)
+
+clean: iccprofiles.clean
+ $(SUBDIRS-loop)
+
+all build:: iccprofiles
+ $(SUBDIRS-loop)
+
+openjdk::
+ $(MAKE) OPENJDK=true build
+
+.PHONY: iccprofiles iccprofiles.clean copy-files openjdk
diff --git a/jdk/make/sun/cmm/kcms/FILES_c_unix.gmk b/jdk/make/sun/cmm/kcms/FILES_c_unix.gmk
new file mode 100644
index 0000000..2d429c6
--- /dev/null
+++ b/jdk/make/sun/cmm/kcms/FILES_c_unix.gmk
@@ -0,0 +1,134 @@
+#
+# Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ attrmgr.c \
+ auxpt.c \
+ calc.c \
+ calcgtbl.c \
+ calcitbl.c \
+ calcmtbl.c \
+ calcotbl.c \
+ chainsu.c \
+ chnrules.c \
+ cmpsatt.c \
+ cmpsattf.c \
+ cmyklin.c \
+ combine.c \
+ compilut.c \
+ compitbl.c \
+ compose.c \
+ compotbl.c \
+ convert1.c \
+ copy.c \
+ crc32.c \
+ dispatch.c \
+ doevalsw.c \
+ eval.c \
+ evalth13.c \
+ evalth14.c \
+ evalth1c.c \
+ evalth1g.c \
+ f4lex.c \
+ filemap.c \
+ fmtdata.c \
+ futiomem.c \
+ futiotbl.c \
+ futmft2.c \
+ fwdmono.c \
+ fwdxform.c \
+ fxnull.c \
+ invmono.c \
+ invxform.c \
+ io.c \
+ io_swab.c \
+ ioencode.c \
+ iomf.c \
+ iotable.c \
+ kcms_io.c \
+ kcpmgr.c \
+ kcpmgru.c \
+ kpfile.c \
+ kplib.c \
+ kpmd5.c \
+ lab2uvl.c \
+ lab2xyz.c \
+ lensity.c \
+ linlab.c \
+ logrgb.c \
+ loguvl.c \
+ malloc.c \
+ mat2fut.c \
+ matrix.c \
+ memory.c \
+ moncurv.c \
+ new.c \
+ outmat.c \
+ profile.c \
+ profilem.c \
+ ptchain.c \
+ pteval.c \
+ ptinvert.c \
+ ptiomem.c \
+ pttmgr.c \
+ rel2abs.c \
+ resize.c \
+ share.c \
+ solvemat.c \
+ spattpr.c \
+ spattr.c \
+ spattrio.c \
+ spcvrt.c \
+ speval.c \
+ splink.c \
+ splut.c \
+ sprofile.c \
+ sprofpr.c \
+ spsave.c \
+ spsearch.c \
+ spsys.c \
+ spsystem.c \
+ sptagio.c \
+ sptagmgr.c \
+ sputilpr.c \
+ spxf_gen.c \
+ spxfcvrt.c \
+ spxfgpr.c \
+ spxfmtag.c \
+ spxform.c \
+ spxfprv.c \
+ spxfromr.c \
+ sync.c \
+ systime.c \
+ thread.c \
+ thredmem.c \
+ ukcpmgr.c \
+ unixmem.c \
+ util.c \
+ uvl2lab.c \
+ xfers.c \
+ xyz2lab.c \
+ xyzmap.c \
+ CMM.c
diff --git a/jdk/make/sun/cmm/kcms/FILES_c_windows.gmk b/jdk/make/sun/cmm/kcms/FILES_c_windows.gmk
new file mode 100644
index 0000000..3d68e5b
--- /dev/null
+++ b/jdk/make/sun/cmm/kcms/FILES_c_windows.gmk
@@ -0,0 +1,138 @@
+#
+# Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ attrmgr.c \
+ auxpt.c \
+ calc.c \
+ calcgtbl.c \
+ calcitbl.c \
+ calcmtbl.c \
+ calcotbl.c \
+ chainsu.c \
+ chnrules.c \
+ cmmdll.c \
+ cmpsatt.c \
+ cmpsattf.c \
+ cmyklin.c \
+ combine.c \
+ compilut.c \
+ compitbl.c \
+ compose.c \
+ compotbl.c \
+ convert1.c \
+ copy.c \
+ crc32.c \
+ dispatch.c \
+ doevalsw.c \
+ eval.c \
+ evalth13.c \
+ evalth14.c \
+ evalth1c.c \
+ evalth1g.c \
+ f4lex.c \
+ filemap.c \
+ fmtdata.c \
+ futiomem.c \
+ futiotbl.c \
+ futmft2.c \
+ fwdmono.c \
+ fwdxform.c \
+ fxnull.c \
+ invmono.c \
+ invxform.c \
+ io.c \
+ io_swab.c \
+ ioencode.c \
+ iomf.c \
+ iotable.c \
+ kcms_io.c \
+ kcpmgr.c \
+ kcpmgru.c \
+ kpfile.c \
+ kplib.c \
+ kpmd5.c \
+ lab2uvl.c \
+ lab2xyz.c \
+ lensity.c \
+ linlab.c \
+ logrgb.c \
+ loguvl.c \
+ malloc.c \
+ mat2fut.c \
+ matrix.c \
+ memory.c \
+ moncurv.c \
+ new.c \
+ outmat.c \
+ profile.c \
+ profilem.c \
+ ptchain.c \
+ pteval.c \
+ ptinvert.c \
+ ptiomem.c \
+ pttmgr.c \
+ registry.c \
+ rel2abs.c \
+ resize.c \
+ share.c \
+ solvemat.c \
+ spattpr.c \
+ spattr.c \
+ spattrio.c \
+ spcvrt.c \
+ speval.c \
+ splink.c \
+ splut.c \
+ sprofile.c \
+ sprofpr.c \
+ spsave.c \
+ spsearch.c \
+ spsys.c \
+ spsystem.c \
+ sptagio.c \
+ sptagmgr.c \
+ sputilpr.c \
+ spxf_gen.c \
+ spxfcvrt.c \
+ spxffile.c \
+ spxfgpr.c \
+ spxfmtag.c \
+ spxform.c \
+ spxfprv.c \
+ spxfromr.c \
+ sync.c \
+ sysinfo.c \
+ systime.c \
+ thread.c \
+ thredmem.c \
+ util.c \
+ uvl2lab.c \
+ winmem.c \
+ wkcpmgr.c \
+ xfers.c \
+ xyz2lab.c \
+ xyzmap.c \
+ CMM.c
diff --git a/jdk/make/sun/cmm/kcms/Makefile b/jdk/make/sun/cmm/kcms/Makefile
new file mode 100644
index 0000000..b430a14
--- /dev/null
+++ b/jdk/make/sun/cmm/kcms/Makefile
@@ -0,0 +1,110 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.java2d.cmm.kcms
+LIBRARY = kcms
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+ifeq ($(PLATFORM), windows)
+include FILES_c_windows.gmk
+else # PLATFORM
+include FILES_c_unix.gmk
+endif # PLATFORM
+
+FILES_java = \
+ sun/java2d/cmm/kcms/CMM.java
+
+FILES_export = \
+ sun/java2d/cmm/kcms/CMM.java
+
+ifeq ($(PLATFORM), windows)
+ # Override the default version info with our own resource file (see 5043594)
+ VERSIONINFO_RESOURCE = $(CLOSED_SRC)/share/native/sun/java2d/cmm/kcms/cmm.rc
+ # Files built here do not compile with warning level 3 if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+endif
+
+# Rules
+#
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+SERVICEDIR = $(CLASSBINDIR)/META-INF/services
+
+FILES_copy = \
+ $(SERVICEDIR)/sun.java2d.cmm.PCMM
+
+
+build: copy-files
+
+copy-files: $(FILES_copy)
+
+$(SERVICEDIR)/%: $(CLOSED_SRC)/share/classes/sun/java2d/cmm/kcms/META-INF/services/%
+ $(install-file)
+
+#
+# Extra rules
+#
+ifeq ($(PLATFORM), linux)
+LDLIBS += -lpthread
+endif
+
+clean clobber::
+ $(RM) $(FILES_copy)
+
+#
+# Add to ambient vpath to get files in a subdirectory
+#
+vpath %.c $(CLOSED_SRC)/share/native/$(PKGDIR)
+
+ifeq ($(PLATFORM), windows)
+
+OTHER_LDLIBS = user32.lib version.lib
+
+clean:: res.clean
+
+res.clean:
+ $(RM) $(OBJDIR)/cmm.rc
+ $(RM) $(OBJDIR)/cmm.res
+ $(RM) $(OBJDIR)/cmm.h
+
+else # PLATFORM
+OTHER_LDLIBS = $(LIBM)
+
+# Use pic instead of PIC on this library
+GLOBAL_KPIC = $(PIC_CODE_SMALL)
+
+CPPFLAGS += -I$(CLASSHDRDIR) \
+
+endif # PLATFORM
+
+#CFLAGS += -DJAVACMM -DFUT_CALC_EX -DNO_FUT_GCONST
+CFLAGS += -DFUT_CALC_EX -DNO_FUT_GCONST
+
diff --git a/jdk/make/sun/cmm/kcms/mapfile-vers b/jdk/make/sun/cmm/kcms/mapfile-vers
new file mode 100644
index 0000000..7aa2a5f
--- /dev/null
+++ b/jdk/make/sun/cmm/kcms/mapfile-vers
@@ -0,0 +1,47 @@
+#
+# Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_sun_java2d_cmm_kcms_CMM_cmmGetTagSize;
+ Java_sun_java2d_cmm_kcms_CMM_cmmGetNumComponents;
+ Java_sun_java2d_cmm_kcms_CMM_cmmColorConvert;
+ Java_sun_java2d_cmm_kcms_CMM_cmmInit;
+ Java_sun_java2d_cmm_kcms_CMM_cmmCombineTransforms;
+ Java_sun_java2d_cmm_kcms_CMM_cmmGetTagData;
+ Java_sun_java2d_cmm_kcms_CMM_cmmSetTagData;
+ Java_sun_java2d_cmm_kcms_CMM_cmmGetProfileData;
+ Java_sun_java2d_cmm_kcms_CMM_cmmFreeProfile;
+ Java_sun_java2d_cmm_kcms_CMM_cmmTerminate;
+ Java_sun_java2d_cmm_kcms_CMM_cmmLoadProfile;
+ Java_sun_java2d_cmm_kcms_CMM_cmmGetTransform;
+ Java_sun_java2d_cmm_kcms_CMM_cmmFreeTransform;
+ Java_sun_java2d_cmm_kcms_CMM_cmmGetProfileSize;
+
+ local:
+ *;
+};
diff --git a/jdk/make/sun/cmm/lcms/FILES_c_unix.gmk b/jdk/make/sun/cmm/lcms/FILES_c_unix.gmk
new file mode 100644
index 0000000..abdf12d
--- /dev/null
+++ b/jdk/make/sun/cmm/lcms/FILES_c_unix.gmk
@@ -0,0 +1,48 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ cmscam02.c \
+ cmscam97.c \
+ cmscgats.c \
+ cmscnvrt.c \
+ cmserr.c \
+ cmsgamma.c \
+ cmsgmt.c \
+ cmsintrp.c \
+ cmsio0.c \
+ cmsio1.c \
+ cmslut.c \
+ cmsmatsh.c \
+ cmsmtrx.c \
+ cmsnamed.c \
+ cmspack.c \
+ cmspcs.c \
+ cmsps2.c \
+ cmssamp.c \
+ cmsvirt.c \
+ cmswtpnt.c \
+ cmsxform.c \
+ LCMS.c
diff --git a/jdk/make/sun/cmm/lcms/FILES_c_windows.gmk b/jdk/make/sun/cmm/lcms/FILES_c_windows.gmk
new file mode 100644
index 0000000..abdf12d
--- /dev/null
+++ b/jdk/make/sun/cmm/lcms/FILES_c_windows.gmk
@@ -0,0 +1,48 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ cmscam02.c \
+ cmscam97.c \
+ cmscgats.c \
+ cmscnvrt.c \
+ cmserr.c \
+ cmsgamma.c \
+ cmsgmt.c \
+ cmsintrp.c \
+ cmsio0.c \
+ cmsio1.c \
+ cmslut.c \
+ cmsmatsh.c \
+ cmsmtrx.c \
+ cmsnamed.c \
+ cmspack.c \
+ cmspcs.c \
+ cmsps2.c \
+ cmssamp.c \
+ cmsvirt.c \
+ cmswtpnt.c \
+ cmsxform.c \
+ LCMS.c
diff --git a/jdk/make/sun/cmm/lcms/Makefile b/jdk/make/sun/cmm/lcms/Makefile
new file mode 100644
index 0000000..ba59550
--- /dev/null
+++ b/jdk/make/sun/cmm/lcms/Makefile
@@ -0,0 +1,99 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.java2d.cmm.lcms
+LIBRARY = lcms
+PRODUCT = sun
+
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+ifeq ($(PLATFORM), windows)
+include FILES_c_windows.gmk
+else # PLATFORM
+include FILES_c_unix.gmk
+endif # PLATFORM
+
+FILES_java = \
+ $(TAGDIR)sun/java2d/cmm/lcms/LCMS.java \
+ $(TAGDIR)sun/java2d/cmm/lcms/LCMSImageLayout.java \
+ $(TAGDIR)sun/java2d/cmm/lcms/LCMSTransform.java
+
+FILES_export = sun/java2d/cmm/lcms/LCMS.java
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+SERVICEDIR = $(CLASSBINDIR)/META-INF/services
+
+FILES_copy = \
+ $(SERVICEDIR)/sun.java2d.cmm.PCMM
+
+build: copy-files
+
+copy-files: $(FILES_copy)
+
+$(SERVICEDIR)/%: $(SHARE_SRC)/classes/sun/java2d/cmm/lcms/META-INF/services/%
+ $(install-file)
+
+#
+# Extra rules
+#
+
+ifeq ($(PLATFORM), solaris)
+CFLAGS := $(subst -xc99=%none,-xc99=no_lib,$(CFLAGS))
+endif
+
+clean clobber::
+ $(RM) $(FILES_copy)
+
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)
+vpath %.c $(SHARE_SRC)/native/sun/java2d
+
+ifeq ($(PLATFORM), windows)
+
+OTHER_LDLIBS = user32.lib version.lib $(OBJDIR)/../../../sun.awt/awt/$(OBJDIRNAME)/awt.lib
+OTHER_INCLUDES += -I$(SHARE_SRC)/native/sun/java2d \
+ -I$(SHARE_SRC)/native/sun/awt/debug
+
+clean:: res.clean
+
+res.clean:
+ $(RM) $(OBJDIR)/cmm.rc
+ $(RM) $(OBJDIR)/cmm.res
+ $(RM) $(OBJDIR)/cmm.h
+
+else
+OTHER_LDLIBS = $(LIBM) -lawt -L$(LIBDIR)/$(LIBARCH)/xawt
+CPPFLAGS += -I$(SHARE_SRC)/native/sun/java2d \
+ -I$(SHARE_SRC)/native/sun/awt/debug
+endif
+
diff --git a/jdk/make/sun/cmm/lcms/mapfile-vers b/jdk/make/sun/cmm/lcms/mapfile-vers
new file mode 100644
index 0000000..98e9d31
--- /dev/null
+++ b/jdk/make/sun/cmm/lcms/mapfile-vers
@@ -0,0 +1,45 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_sun_java2d_cmm_lcms_LCMS_loadProfile;
+ Java_sun_java2d_cmm_lcms_LCMS_freeProfile;
+ Java_sun_java2d_cmm_lcms_LCMS_getProfileSize;
+ Java_sun_java2d_cmm_lcms_LCMS_getProfileData;
+ Java_sun_java2d_cmm_lcms_LCMS_getTagSize;
+ Java_sun_java2d_cmm_lcms_LCMS_getTagData;
+ Java_sun_java2d_cmm_lcms_LCMS_setTagData;
+ Java_sun_java2d_cmm_lcms_LCMS_colorConvert;
+ Java_sun_java2d_cmm_lcms_LCMS_getProfileID;
+ Java_sun_java2d_cmm_lcms_LCMS_initLCMS;
+ Java_sun_java2d_cmm_lcms_LCMS_createNativeTransform;
+ JNI_OnLoad;
+
+ local:
+ *;
+};
diff --git a/jdk/make/sun/dcpr/FILES_c.gmk b/jdk/make/sun/dcpr/FILES_c.gmk
new file mode 100644
index 0000000..7493869
--- /dev/null
+++ b/jdk/make/sun/dcpr/FILES_c.gmk
@@ -0,0 +1,51 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ CJError.c \
+ doeObject.c \
+ doeSun.c \
+ dcPool.c \
+ CJPathConsumer.c \
+ CJPathConsumer2D.c \
+ dcPathConsumer.c \
+ dcPathStore.c \
+ dcPathError.c \
+ dcPathException.c \
+ PathFiller.c \
+ PathDasher.c \
+ PathStroker.c \
+ dcLLFiller.c \
+ dcLLFillerH.c \
+ dcLLFillerS.c \
+ dcPRError.c \
+ dcPRException.c \
+ dcPathFiller.c \
+ dcPathDasher.c \
+ dcPathStorage.c \
+ dcPathStroker.c \
+ affine.c \
+ angles.c \
+ arcs.c \
diff --git a/jdk/make/sun/dcpr/Makefile b/jdk/make/sun/dcpr/Makefile
new file mode 100644
index 0000000..e49db2a
--- /dev/null
+++ b/jdk/make/sun/dcpr/Makefile
@@ -0,0 +1,95 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# WARNING: Make sure the OPENJDK plugs are up-to-date, see make/common/internal/BinaryPlugs.gmk
+
+BUILDDIR = ../..
+PACKAGE = sun.dc
+LIBRARY = dcpr
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+include FILES_c.gmk
+
+FILES_java = \
+ sun/dc/DuctusRenderingEngine.java \
+ sun/dc/path/FastPathProducer.java \
+ sun/dc/path/PathConsumer.java \
+ sun/dc/path/PathError.java \
+ sun/dc/path/PathException.java \
+ sun/dc/pr/PathDasher.java \
+ sun/dc/pr/PathFiller.java \
+ sun/dc/pr/PathStroker.java \
+ sun/dc/pr/PRError.java \
+ sun/dc/pr/PRException.java \
+ sun/dc/pr/Rasterizer.java
+
+FILES_export = \
+ sun/dc/pr/PathDasher.java \
+ sun/dc/pr/PathFiller.java \
+ sun/dc/pr/PathStroker.java
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+SERVICEDIR = $(CLASSBINDIR)/META-INF/services
+
+FILES_copy = \
+ $(SERVICEDIR)/sun.java2d.pipe.RenderingEngine
+
+build: copy-files
+
+copy-files: $(FILES_copy)
+
+$(SERVICEDIR)/%: $(SHARE_SRC)/classes/sun/dc/META-INF/services/%
+ $(install-file)
+
+#
+# Add to the ambient vpath to pick up files in subdirectories
+#
+vpath %.c $(CLOSED_SRC)/share/native/$(PKGDIR)/doe
+vpath %.c $(CLOSED_SRC)/share/native/$(PKGDIR)/path
+vpath %.c $(CLOSED_SRC)/share/native/$(PKGDIR)/pr
+vpath %.c $(CLOSED_SRC)/share/native/$(PKGDIR)/util
+vpath %.c $(SHARE_SRC)/native/sun/java2d/pipe
+
+ifneq ($(PLATFORM), windows)
+ OTHER_LDLIBS = $(LIBM)
+endif # PLATFORM
+
+CPPFLAGS += \
+ -I$(CLOSED_SRC)/share/native/$(PKGDIR)/doe \
+ -I$(CLOSED_SRC)/share/native/$(PKGDIR)/path \
+ -I$(CLOSED_SRC)/share/native/$(PKGDIR)/pr \
+ -I$(CLOSED_SRC)/share/native/$(PKGDIR)/util \
+ -I$(SHARE_SRC)/native/sun/java2d/pipe \
+ -I$(PLATFORM_SRC)/native/sun/java2d
+
diff --git a/jdk/make/sun/dcpr/mapfile-vers b/jdk/make/sun/dcpr/mapfile-vers
new file mode 100644
index 0000000..9a0ceca
--- /dev/null
+++ b/jdk/make/sun/dcpr/mapfile-vers
@@ -0,0 +1,93 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_sun_dc_pr_PathDasher_beginPath;
+ Java_sun_dc_pr_PathFiller_getTileState;
+ Java_sun_dc_pr_PathStroker_setCaps;
+ Java_sun_dc_pr_PathStroker_setCorners;
+ Java_sun_dc_pr_PathFiller_writeAlpha16;
+ Java_sun_dc_pr_PathFiller_closedSubpath;
+ Java_sun_dc_pr_PathStroker_beginPath;
+ Java_sun_dc_pr_PathDasher_setDashT4;
+ Java_sun_dc_pr_PathFiller_dispose;
+ Java_sun_dc_pr_PathStroker_closedSubpath;
+ Java_sun_dc_pr_PathDasher_appendLine;
+ Java_sun_dc_pr_PathStroker_dispose;
+ Java_sun_dc_pr_PathDasher_setOutputConsumer;
+ Java_sun_dc_pr_PathStroker_reset;
+ Java_sun_dc_pr_PathFiller_beginSubpath;
+ Java_sun_dc_pr_PathFiller_writeAlpha8;
+ Java_sun_dc_pr_PathDasher_closedSubpath;
+ Java_sun_dc_pr_PathFiller_appendQuadratic;
+ Java_sun_dc_pr_PathDasher_setOutputT6;
+ Java_sun_dc_pr_PathStroker_setPenFitting;
+ Java_sun_dc_pr_PathStroker_endPath;
+ Java_sun_dc_pr_PathDasher_setDash;
+ Java_sun_dc_pr_PathFiller_nextTile;
+ Java_sun_dc_pr_PathStroker_setOutputConsumer;
+ Java_sun_dc_pr_PathFiller_setFillMode;
+ Java_sun_dc_pr_PathFiller_appendLine;
+ Java_sun_dc_pr_PathStroker_appendQuadratic;
+ Java_sun_dc_pr_PathFiller_endPath;
+ Java_sun_dc_pr_PathStroker_appendCubic;
+ Java_sun_dc_pr_PathDasher_appendCubic;
+ Java_sun_dc_pr_PathStroker_setPenDiameter;
+ Java_sun_dc_pr_PathFiller_setOutputArea;
+ Java_sun_dc_pr_PathFiller_getAlphaBox;
+ Java_sun_dc_pr_PathStroker_appendLine;
+ Java_sun_dc_pr_PathStroker_setOutputT6;
+ Java_sun_dc_pr_PathFiller_beginPath;
+ Java_sun_dc_pr_PathDasher_dispose;
+ Java_sun_dc_pr_PathDasher_reset;
+ Java_sun_dc_pr_PathFiller_reset;
+ Java_sun_dc_pr_PathDasher_endPath;
+ Java_sun_dc_pr_PathStroker_beginSubpath;
+ Java_sun_dc_pr_PathStroker_setPenT4;
+ Java_sun_dc_pr_PathDasher_appendQuadratic;
+ Java_sun_dc_pr_PathDasher_beginSubpath;
+ Java_sun_dc_pr_PathFiller_appendCubic;
+
+ Java_sun_dc_pr_PathDasher_cClassFinalize;
+ Java_sun_dc_pr_PathDasher_cClassInitialize;
+ Java_sun_dc_pr_PathDasher_cInitialize;
+ Java_sun_dc_pr_PathFiller_cClassFinalize;
+ Java_sun_dc_pr_PathFiller_cClassInitialize;
+ Java_sun_dc_pr_PathFiller_cInitialize;
+ Java_sun_dc_pr_PathStroker_cClassFinalize;
+ Java_sun_dc_pr_PathStroker_cClassInitialize;
+ Java_sun_dc_pr_PathStroker_cInitialize;
+ Java_sun_dc_pr_PathStroker_cInitialize2D;
+
+ Java_sun_dc_pr_PathDasher_getCPathConsumer;
+ Java_sun_dc_pr_PathFiller_getCPathConsumer;
+ Java_sun_dc_pr_PathStroker_getCPathConsumer;
+
+ local:
+ *;
+};
diff --git a/jdk/make/sun/font/FILES_c.gmk b/jdk/make/sun/font/FILES_c.gmk
new file mode 100644
index 0000000..6f4c439
--- /dev/null
+++ b/jdk/make/sun/font/FILES_c.gmk
@@ -0,0 +1,125 @@
+#
+# Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c_shared = \
+ jbidi.c \
+ ubidi.c \
+ ubidiln.c \
+ uchardir.c \
+ DrawGlyphList.c \
+ sunFont.c
+
+ifdef OPENJDK
+FILES_c_shared += $(TARGDIR)freetypeScaler.c
+endif
+
+FILES_cpp_shared = \
+ CursiveAttachmentSubtables.cpp \
+ ExtensionSubtables.cpp \
+ MPreFixups.cpp \
+ HanLayoutEngine.cpp \
+ LEFontInstance.cpp \
+ ContextualGlyphSubstProc.cpp \
+ IndicRearrangementProcessor.cpp \
+ LigatureSubstProc.cpp \
+ LookupTables.cpp \
+ MorphTables.cpp \
+ NonContextualGlyphSubstProc.cpp \
+ SegmentArrayProcessor.cpp \
+ SegmentSingleProcessor.cpp \
+ SimpleArrayProcessor.cpp \
+ SingleTableProcessor.cpp \
+ StateTableProcessor.cpp \
+ SubtableProcessor.cpp \
+ TrimmedArrayProcessor.cpp \
+ AlternateSubstSubtables.cpp \
+ AnchorTables.cpp \
+ CanonData.cpp \
+ CanonShaping.cpp \
+ ClassDefinitionTables.cpp \
+ ContextualSubstSubtables.cpp \
+ CoverageTables.cpp \
+ DeviceTables.cpp \
+ Features.cpp \
+ GDEFMarkFilter.cpp \
+ GlyphDefinitionTables.cpp \
+ GlyphIterator.cpp \
+ GlyphLookupTables.cpp \
+ GlyphPositionAdjustments.cpp \
+ GlyphPosnLookupProc.cpp \
+ GlyphPositioningTables.cpp \
+ GlyphSubstLookupProc.cpp \
+ GlyphSubstitutionTables.cpp \
+ HebrewLigatureData.cpp \
+ HebrewShaping.cpp \
+ IndicClassTables.cpp \
+ IndicReordering.cpp \
+ KernTable.cpp \
+ KhmerLayoutEngine.cpp \
+ KhmerReordering.cpp \
+ LEGlyphStorage.cpp \
+ LEInsertionList.cpp \
+ LigatureSubstSubtables.cpp \
+ LookupProcessor.cpp \
+ Lookups.cpp \
+ MarkArrays.cpp \
+ MarkToBasePosnSubtables.cpp \
+ MarkToLigaturePosnSubtables.cpp \
+ MarkToMarkPosnSubtables.cpp \
+ MirroredCharData.cpp \
+ MultipleSubstSubtables.cpp \
+ OpenTypeUtilities.cpp \
+ PairPositioningSubtables.cpp \
+ ScriptAndLanguage.cpp \
+ ShapingTypeData.cpp \
+ SinglePositioningSubtables.cpp \
+ SingleSubstitutionSubtables.cpp \
+ SubstitutionLookups.cpp \
+ ThaiShaping.cpp \
+ ThaiStateTables.cpp \
+ ValueRecords.cpp \
+ ArabicLayoutEngine.cpp \
+ ArabicShaping.cpp \
+ GXLayoutEngine.cpp \
+ IndicLayoutEngine.cpp \
+ LayoutEngine.cpp \
+ SunLayoutEngine.cpp \
+ OpenTypeLayoutEngine.cpp \
+ ThaiLayoutEngine.cpp \
+ ScriptAndLanguageTags.cpp \
+ FontInstanceAdapter.cpp
+
+
+ifeq ($(PLATFORM),windows)
+FILES_c_platform = fontpath.c
+FILES_cpp_platform = D3DTextRenderer.cpp
+else
+FILES_c_platform = X11FontScaler.c \
+ X11TextRenderer.c
+FILES_cpp_platform =
+endif
+
+FILES_c = $(FILES_c_shared) $(FILES_c_platform)
+FILES_cpp = $(FILES_cpp_shared) $(FILES_cpp_platform)
diff --git a/jdk/make/sun/font/Makefile b/jdk/make/sun/font/Makefile
new file mode 100644
index 0000000..e526efa
--- /dev/null
+++ b/jdk/make/sun/font/Makefile
@@ -0,0 +1,211 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all of font tools
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.font
+LIBRARY = fontmanager
+PRODUCT = sun
+
+# Indicate we want the C++ compiler to do the linking.
+CPLUSPLUSLIBRARY=true
+
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Created without -z defs on linux
+#
+ifeq ($(PLATFORM), linux)
+ LDFLAGS_DEFS_OPTION =
+endif
+
+#
+# Files
+#
+
+#
+# Use higher optimization level
+#
+_OPT = $(CC_HIGHER_OPT)
+
+include FILES_c.gmk
+
+AUTO_FILES_JAVA_DIRS = sun/font
+FILES_java += java/awt/Font.java java/text/Bidi.java
+
+FILES_export = \
+ sun/font/SunLayoutEngine.java \
+ java/awt/Font.java \
+ java/text/Bidi.java \
+ sun/font/FileFont.java \
+ sun/font/FontManager.java \
+ sun/font/GlyphList.java \
+ sun/font/NativeFont.java \
+ sun/font/StrikeCache.java \
+ sun/font/NullFontScaler.java \
+ sun/font/FreetypeFontScaler.java \
+ sun/java2d/loops/DrawGlyphList.java \
+ sun/java2d/loops/DrawGlyphListAA.java \
+ sun/java2d/loops/DrawGlyphListLCD.java \
+ sun/java2d/loops/GraphicsPrimitive.java
+
+ifeq ($(PLATFORM), windows)
+
+ # Files built here do not compile with warning level 3 if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+
+ LDLIBS += user32.lib gdi32.lib $(OBJDIR)/../../../sun.awt/awt/$(OBJDIRNAME)/awt.lib
+
+ OTHER_CFLAGS += -DCC_NOEX
+ OTHER_CXXFLAGS += -DCC_NOEX
+
+ FILES_export += sun/java2d/d3d/D3DTextRenderer.java
+
+else # PLATFORM unix
+
+ FILES_export += \
+ sun/font/NativeStrike.java \
+ sun/font/NativeStrikeDisposer.java \
+ sun/font/X11TextRenderer.java \
+ sun/awt/X11GraphicsEnvironment.java
+
+endif # PLATFORM
+
+#In the non-OpenJDK mode we need to build T2K
+ifndef OPENJDK
+t2k:
+ $(ECHO) "lib=" $(ACTUAL_LIBRARY)
+ $(MAKE) -C t2k
+
+all build: t2k
+t2k: library
+clean clobber::
+ $(MAKE) -C t2k clean
+else
+
+FILES_m=mapfile-vers.openjdk
+
+#make sure freetype dll will be available at runtime as well as link time
+#
+#NB: Default freetype build system uses -h linker option and
+# result .so contains hardcoded library name that is later
+# used for adding dependencies to other objects
+# (e.g. libfontmanager.so).
+#
+# It is not obvious how to extract that hardcoded name (libfreetype.so.6)
+# without overcomplicating logic here.
+# To workaround this we hardcode .6 suffix for now.
+#
+# Note that .so.6 library will not be found by System.loadLibrary()
+# but fortunately we need to load FreeType library explicitly
+# on windows only
+#
+#TODO: rework this to avoid hardcoding library name in the makefile
+#
+library:: $(LIB_LOCATION)/$(LIB_PREFIX)freetype.$(LIBRARY_SUFFIX)
+
+$(LIB_LOCATION)/$(LIB_PREFIX)freetype.$(LIBRARY_SUFFIX):
+ifeq ($(PLATFORM), windows)
+ $(CP) $(FREETYPE_LIB_PATH)/$(LIB_PREFIX)freetype.$(LIBRARY_SUFFIX) $@
+else
+ ifeq ($(USING_SYSTEM_FT_LIB), false)
+ $(CP) $(FREETYPE_LIB_PATH)/$(LIB_PREFIX)freetype.$(LIBRARY_SUFFIX) $@.6
+ endif
+endif
+endif
+
+#ifeq ($(PLATFORM), solaris)
+# FILES_reorder += reorder-$(ARCH)
+#endif
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+.PHONY: t2k build all clean clobber
+
+#
+# Add to the ambient vpath to pick up files in subdirectories
+#
+vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/bidi
+vpath %.cpp $(SHARE_SRC)/native/$(PKGDIR)/layout
+vpath %.cpp $(SHARE_SRC)/native/$(PKGDIR)
+
+#
+# Fontmanager is headless (independent of X/Motif)
+#
+CFLAGS += -DHEADLESS
+CXXFLAGS += -DHEADLESS
+
+ifndef OPENJDK
+ CPPFLAGS += -I$(CLOSED_SRC)/share/native/$(PKGDIR)/t2k
+else
+ CPPFLAGS += -I$(FREETYPE_HEADERS_PATH) -I$(FREETYPE_HEADERS_PATH)/freetype2
+ OTHER_LDLIBS += $(FREETYPE_LIB)
+endif
+
+ifeq ($(PLATFORM), windows)
+vpath %.cpp $(PLATFORM_SRC)/native/sun/windows
+vpath %.cpp $(PLATFORM_SRC)/native/sun/java2d/d3d
+else # PLATFORM
+
+#
+# Libraries to link, and other C flags.
+#
+
+ifeq ($(PLATFORM), solaris)
+ # Note that on Solaris, fontmanager is built against the headless library.
+ LDFLAGS += -L$(LIBDIR)/$(LIBARCH)/headless
+ OTHER_LDLIBS += -lawt -L$(LIBDIR)/$(LIBARCH)/xawt -lmawt -lc $(LIBM) $(LIBCXX)
+else # PLATFORM is linux
+ OTHER_LDLIBS += -lawt $(LIBM) $(LIBCXX)
+ ifeq ("$(CC_VER_MAJOR)", "3")
+ OTHER_LDLIBS += -Wl,-Bstatic -lgcc_eh -Wl,-Bdynamic
+ endif
+endif
+
+endif # PLATFORM
+
+# set up compile flags..
+
+CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR) \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/layout \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/bidi \
+ -I$(SHARE_SRC)/native/sun/awt/image/cvutils \
+ -I$(PLATFORM_SRC)/native/sun/awt \
+ -I$(SHARE_SRC)/native/sun/awt/debug \
+ -I$(SHARE_SRC)/native/sun/java2d/loops \
+ -I$(SHARE_SRC)/native/sun/java2d/pipe \
+ -I$(PLATFORM_SRC)/native/sun/java2d \
+ -I$(SHARE_SRC)/native/sun/java2d \
+ -I$(TEMPDIR)/../../sun.awt/awt/CClassHeaders
+
+ifeq ($(PLATFORM), windows)
+CPPFLAGS += -I$(PLATFORM_SRC)/native/sun/windows \
+ -I$(PLATFORM_SRC)/native/sun/java2d/d3d
+endif
+
diff --git a/jdk/make/sun/font/mapfile-vers b/jdk/make/sun/font/mapfile-vers
new file mode 100644
index 0000000..1d1f003
--- /dev/null
+++ b/jdk/make/sun/font/mapfile-vers
@@ -0,0 +1,68 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ getSunFontIDs;
+ newLayoutTableCache;
+ freeLayoutTableCache;
+ isNullScalerContext;
+ Java_java_text_Bidi_nativeBidiChars;
+ Java_java_text_Bidi_nativeGetDirectionCode;
+ Java_sun_font_NullFontScaler_getNullScalerContext;
+ Java_sun_font_NullFontScaler_getGlyphImage;
+ Java_sun_font_FontManager_getPlatformFontVar;
+ Java_sun_font_FontManager_initIDs;
+ Java_sun_font_FontManager_getFont2D;
+ Java_sun_font_FontManager_setFont2D;
+ Java_sun_font_FontManager_isCreatedFont;
+ Java_sun_font_FontManager_setCreatedFont;
+ Java_sun_font_StrikeCache_getGlyphCacheDescription;
+ Java_sun_font_StrikeCache_freeIntPointer;
+ Java_sun_font_StrikeCache_freeLongPointer;
+ Java_sun_font_StrikeCache_freeIntMemory;
+ Java_sun_font_StrikeCache_freeLongMemory;
+ Java_sun_font_SunLayoutEngine_initGVIDs;
+ Java_sun_font_SunLayoutEngine_nativeLayout;
+ Java_sun_font_X11TextRenderer_doDrawGlyphList;
+ Java_sun_java2d_loops_DrawGlyphListAA_DrawGlyphListAA;
+ Java_sun_java2d_loops_DrawGlyphListLCD_DrawGlyphListLCD;
+ Java_sun_java2d_loops_DrawGlyphList_DrawGlyphList;
+ Java_sun_font_NativeStrikeDisposer_freeNativeScalerContext;
+ Java_sun_font_NativeStrike_createNullScalerContext;
+ Java_sun_font_NativeStrike_createScalerContext;
+ Java_sun_font_NativeStrike_getMaxGlyph;
+ Java_sun_font_NativeFont_fontExists;
+ Java_sun_font_NativeFont_haveBitmapFonts;
+ Java_sun_font_NativeFont_countGlyphs;
+ Java_sun_font_NativeFont_getGlyphAdvance;
+ Java_sun_font_NativeFont_getGlyphImage;
+ Java_sun_font_NativeFont_getGlyphImageNoDefault;
+ Java_sun_font_NativeFont_getFontMetrics;
+ local:
+ *;
+};
diff --git a/jdk/make/sun/font/mapfile-vers.openjdk b/jdk/make/sun/font/mapfile-vers.openjdk
new file mode 100644
index 0000000..55d5661
--- /dev/null
+++ b/jdk/make/sun/font/mapfile-vers.openjdk
@@ -0,0 +1,87 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+# In addition to regular symbols also include Freetype scaler
+
+SUNWprivate_1.1 {
+ global:
+ getSunFontIDs;
+ newLayoutTableCache;
+ freeLayoutTableCache;
+ isNullScalerContext;
+ Java_java_text_Bidi_nativeBidiChars;
+ Java_java_text_Bidi_nativeGetDirectionCode;
+ Java_sun_font_NullFontScaler_getNullScalerContext;
+ Java_sun_font_NullFontScaler_getGlyphImage;
+ Java_sun_font_FontManager_getPlatformFontVar;
+ Java_sun_font_FontManager_initIDs;
+ Java_sun_font_FontManager_getFont2D;
+ Java_sun_font_FontManager_setFont2D;
+ Java_sun_font_FontManager_isCreatedFont;
+ Java_sun_font_FontManager_setCreatedFont;
+ Java_sun_font_StrikeCache_getGlyphCacheDescription;
+ Java_sun_font_StrikeCache_freeIntPointer;
+ Java_sun_font_StrikeCache_freeLongPointer;
+ Java_sun_font_StrikeCache_freeIntMemory;
+ Java_sun_font_StrikeCache_freeLongMemory;
+ Java_sun_font_SunLayoutEngine_initGVIDs;
+ Java_sun_font_SunLayoutEngine_nativeLayout;
+ Java_sun_font_X11TextRenderer_doDrawGlyphList;
+ Java_sun_java2d_loops_DrawGlyphListAA_DrawGlyphListAA;
+ Java_sun_java2d_loops_DrawGlyphListLCD_DrawGlyphListLCD;
+ Java_sun_java2d_loops_DrawGlyphList_DrawGlyphList;
+ Java_sun_font_NativeStrikeDisposer_freeNativeScalerContext;
+ Java_sun_font_NativeStrike_createNullScalerContext;
+ Java_sun_font_NativeStrike_createScalerContext;
+ Java_sun_font_NativeStrike_getMaxGlyph;
+ Java_sun_font_NativeFont_fontExists;
+ Java_sun_font_NativeFont_haveBitmapFonts;
+ Java_sun_font_NativeFont_countGlyphs;
+ Java_sun_font_NativeFont_getGlyphAdvance;
+ Java_sun_font_NativeFont_getGlyphImage;
+ Java_sun_font_NativeFont_getGlyphImageNoDefault;
+ Java_sun_font_NativeFont_getFontMetrics;
+ Java_sun_font_FreetypeFontScaler_initIDs;
+ Java_sun_font_FreetypeFontScaler_createScalerContextNative;
+ Java_sun_font_FreetypeFontScaler_disposeNativeScaler;
+ Java_sun_font_FreetypeFontScaler_getFontMetricsNative;
+ Java_sun_font_FreetypeFontScaler_getGlyphAdvanceNative;
+ Java_sun_font_FreetypeFontScaler_getGlyphCodeNative;
+ Java_sun_font_FreetypeFontScaler_getGlyphImageNative;
+ Java_sun_font_FreetypeFontScaler_getGlyphMetricsNative;
+ Java_sun_font_FreetypeFontScaler_getGlyphOutlineBoundsNative;
+ Java_sun_font_FreetypeFontScaler_getGlyphOutlineNative;
+ Java_sun_font_FreetypeFontScaler_getGlyphVectorOutlineNative;
+ Java_sun_font_FreetypeFontScaler_getLayoutTableCacheNative;
+ Java_sun_font_FreetypeFontScaler_getMissingGlyphCodeNative;
+ Java_sun_font_FreetypeFontScaler_getNumGlyphsNative;
+ Java_sun_font_FreetypeFontScaler_getUnitsPerEMNative;
+ Java_sun_font_FreetypeFontScaler_initNativeScaler;
+ Java_sun_font_FreetypeFontScaler_getGlyphPointNative;
+ local:
+ *;
+};
diff --git a/jdk/make/sun/font/reorder-i586 b/jdk/make/sun/font/reorder-i586
new file mode 100644
index 0000000..b634801
--- /dev/null
+++ b/jdk/make/sun/font/reorder-i586
@@ -0,0 +1,481 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%_init;
+text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2kScalerContext.o;
+text: .text%__SLIP.INIT_A: t2kScalerContext.o;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__2t6Ml_v_;
+text: .text%JNI_OnLoad;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getType1FontVar;
+text: .text%Java_sun_awt_font_NativeFontWrapper_registerFonts;
+text: .text%__1cHJNIEnv_QCallObjectMethod6MpnI_jobject_pnK_jmethodID_E_2_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cSsfntFileFontObjectEInit6MpkHipkc4nLFontFormats_i_c_;
+text: .text%__1cOfileFontObjectJReadChunk6MLLpv_pkv_;
+text: .text%__1cSfontfilecachecheck6FpnKfontObject__v_;
+text: .text%__1cOfileFontObjectMReleaseChunk6Mpkv_v_;
+text: .text%__1cNReadNameTable6FpnSsfntFileFontObject__c_;
+text: .text%__1cKfontObjectJReadTable6MLpL_pkv_;
+text: .text%__1cSsfntFileFontObjectNFindTableSize6MLpL_L_;
+text: .text%__1cSVerifyTrueTypeFile6FpnSsfntFileFontObject__c_;
+text: .text%__1cOInitializeCMAP6FrnSsfntFileFontObject_rpC_v_;
+text: .text%__1cOfileFontObjectJreadBlock6MIIpc_v_;
+text: .text%__1cQaddToTheListTail6FipnKfontObject__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cMsetRealStyle6FpnKfontObject__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cSsfntFileFontObjectHGetName6MrH111pH_i_;
+text: .text%swapWord;
+text: .text%__1cMAssignStyles6FipH_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cOUnicodeToLower6FpHi_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cUstrDupASCIItoUNICODE6Fpkcrii_pH_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cScopyAsciiToUnicode6FpkcpHi_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cVUnicodeStringContains6FpHh0h_c_;
+text: .text%__1cQMakeNativeMapper6Fpkc_v_;
+text: .text%__1cOhsDynamicArray4nKMapperPair__2t6Ml_v_;
+text: .text%__1cUX11CharToGlyphMapper2t6MpkchpcHH_v_;
+text: .text%__1cOhsDynamicArray4nKMapperPair__GAppend6Mrkn0A__l_;
+text: .text%__1cKMapperPair2t6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/R0xva37e7zem2Kv52VUt.o;
+text: .text%__1cNhsGFontScalerIRegister6FLp0_v_;
+text: .text%__1cOhsDynamicArray4nOFontScalerPair__2t6Ml_v_;
+text: .text%__1cIhsRefCntDRef6M_v_;
+text: .text%__1cOhsDynamicArray4nOFontScalerPair__GAppend6Mrkn0A__l_;
+text: .text%__1cOFontScalerPair2t6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/qE6SU8HOyoxWRjh8Gvd7.o;
+text: .text%__1cOhsDynamicArray4nOFontScalerPair__EFind6kMrkn0A__l_;
+text: .text%__1cTGetNativeFontObject6F_pnOfileFontObject__;
+text: .text%__1cOfileFontObjectEInit6MpkHipkc4nLFontFormats_i_c_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cNX11FontObjectHGetName6MrH111pH_i_;
+text: .text%__1cNX11FontObjectMMakeFontName6M_i_;
+text: .text%__1cOfileFontObjectRGetFontNativeName6kM_pkc_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cOhsDynamicArray4nKMapperPair__EFind6kMrkn0A__l_;
+text: .text%__1cHJNIEnv_JNewObject6MpnH_jclass_pnK_jmethodID_E_pnI_jobject__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/FontWrapper.o;
+text: .text%__1cHJNIEnv_OCallVoidMethod6MpnI_jobject_pnK_jmethodID_E_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/cmaps.o;
+text: .text%__1cHJNIEnv_NCallIntMethod6MpnI_jobject_pnK_jmethodID_E_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cKMapperPair2T6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/R0xva37e7zem2Kv52VUt.o;
+text: .text%__1cOfileFontObjectJFileClose6M_v_;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getFullNameByFileName;
+text: .text%__1cNGetFontObject6FpkHi_pnKfontObject__;
+text: .text%__1cOfileFontObjectLGetFileName6kMri_pkH_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%Java_sun_awt_font_NativeFontWrapper_registerCompositeFont;
+text: .text%__1cNCompositeFont2t6MpnHJNIEnv__pnI_jstring__v_;
+text: .text%__1cNCompositeFontJaddRanges6MpnHJNIEnv__pnK_jintArray__v_;
+text: .text%__1cNCompositeFontNaddMaxIndices6MpnHJNIEnv__pnK_jintArray__v_;
+text: .text%__1cNCompositeFontVregisterComponentName6MirnNJStringBuffer__v_;
+text: .text%__1cNCompositeFontHisValid6M_i_;
+text: .text%__1cMregisterFont6FnLFontFormats_pnKfontObject__v_;
+text: .text%__1cQaddToTheListHead6FipnKfontObject__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cNCompositeFontHGetName6MrH111pH_i_;
+text: .text%__1cKfontObjectLGetFileName6kMri_pkH_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/CompositeFont.o;
+text: .text%__SLIP.FINAL__A: t2kScalerContext.o;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__2T6M_v_;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__FReset6M_v_;
+# Test LoadFrame
+text: .text%Java_sun_awt_font_NativeFontWrapper_initializeFont;
+text: .text%FindFontObject;
+text: .text%__1cVequalUnicodeToAsciiNC6FpkHipkci_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cGfindFO6FpkHii_pnKfontObject__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cNCompositeFontJMatchName6MipkHi_c_;
+text: .text%__1cKfontObjectMGetRealStyle6M_kH_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/CompositeFont.o;
+text: .text%__1cKsetFontPtr6FpnHJNIEnv__pnI_jobject_pnKfontObject__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/FontWrapper.o;
+# Test LoadJFrame
+# Test JHello
+text: .text%Java_sun_awt_font_NativeFontWrapper_getFontMetrics;
+text: .text%__1cKgetFontPtr6FpnHJNIEnv__pnI_jobject__pnKfontObject__;
+text: .text%__1cKfontObjectJgetStrike6MrnNFontTransform_CC_rnGStrike__;
+text: .text%__1cKfontObjectLgetScalerID6MrnNFontTransform_CC_nLFontFormats__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/CompositeFont.o;
+text: .text%__1cGStrike2t6MrnKfontObject_rnNFontTransform_CC_v_;
+text: .text%__1cGStrikeNGetLineHeight6MrnNhsFixedPoint2_2222_v_;
+text: .text%__1cNCompositeFontKcountSlots6M_i_;
+text: .text%__1cGStrikeWcompositeStrikeForSlot6Mi_pnOhsGGlyphStrike__;
+text: .text%__1cGStrikePallocateStrikes6M_v_;
+text: .text%__1cGStrikeNallocateDescs6M_v_;
+text: .text%__1cNCompositeFontLgetSlotFont6Mi_pnKfontObject__;
+text: .text%__1cSsfntFileFontObjectJMatchName6MipkHi_c_;
+text: .text%__1cGStrikeQalgorithmicStyle6FrknNCompositeFont_rknKfontObject_i_i_;
+text: .text%__1cNCompositeFontLGetFontName6Mri_pkH_;
+text: .text%__1cSsfntFileFontObjectLgetScalerID6MrnNFontTransform_CC_nLFontFormats__;
+text: .text%__1cPuseNativeScaler6F_i_;
+text: .text%__1cUttContainsHintsTable6FpnSsfntFileFontObject__C_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cGStrike2t6MrnKfontObject_nLFontFormats_rnNFontTransform_CC_v_;
+text: .text%__1cQhsDescriptor_New6FLpkL_pnShsDescriptorHeader__;
+text: .text%__1cYhsDescriptor_ComputeSize6FLpkL_L_;
+text: .text%__1cQhsDescriptor_New6FL_pnShsDescriptorHeader__;
+text: .text%__1cIHSMemoryDNew6FL_pv_;
+text: .text%__1cShsDescriptor_Reset6FpnShsDescriptorHeader__v_;
+text: .text%__1cQhsDescriptor_Add6FpnShsDescriptorHeader_LL_pv_;
+text: .text%__1cKVALID_DESC6FpknShsDescriptorHeader__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/hsDescriptor.o;
+text: .text%__1cbBhsDescriptor_UpdateCheckSum6FpnShsDescriptorHeader__v_;
+text: .text%__1cOhsGGlyphStrikeJRefStrike6FpknShsDescriptorHeader__p0_;
+text: .text%__1cOhsDynamicArray4CpnOhsGGlyphStrike__2t6Ml_v_;
+text: .text%__1cIMemCache2t6MHHLc_v_;
+text: .text%__1cIMemEntry2t6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/MemCache.o;
+text: .text%__1cNhsGGlyphCacheKFindStrike6MpknShsDescriptorHeader__pnOhsGGlyphStrike__;
+text: .text%__1cOhsGGlyphStrike2t6MpknShsDescriptorHeader__v_;
+text: .text%__1cRhsDescriptor_Copy6FpknShsDescriptorHeader_p0_3_;
+text: .text%__1cThsDescriptor_Find326FpknShsDescriptorHeader_L_L_;
+text: .text%__1cRhsDescriptor_Find6FpknShsDescriptorHeader_LpLpv_pkv_;
+text: .text%__1cNhsGFontScalerEFind6FL_p0_;
+text: .text%__1cOhsDynamicArray4nOFontScalerPair__DGet6kMl_rkn0A__;
+text: .text%__1cMnrFontScalerNCreateContext6MpknShsDescriptorHeader__pnQhsGScalerContext__;
+text: .text%__1cSX11nrScalerContext2t6MpnKfontObject_pkfcci_v_;
+text: .text%__1cQt2kScalerContext2t6MpnKfontObject_pkfcci_v_;
+text: .text%__1cLhsGT2KCacheIRefEntry6FpnKfontObject_ll_pnIT2KEntry__;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__HForEach6MpFr1pv4_c44_p1_;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__GAppend6Mrk1_l_;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__2F6Ml_r1_;
+text: .text%__1cIT2KEntryGGetT2K6M_pnDT2K__;
+text: .text%tsi_NewMemhandler;
+text: .text%t2k_malloc;
+text: .text%__1cIHSMemoryHSoftNew6FL_pv_;
+text: .text%__1cJhsSoftNew4CL_6FrpTAI_1_;
+text: .text%FOGetDataLength;
+text: .text%__1cOfileFontObjectNGetDataLength6M_L_;
+text: .text%New_NonRamInputStream;
+text: .text%tsi_AllocMem;
+text: .text%New_sfntClassLogical;
+text: .text%SetStyling: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%CacheKeyTables_sfntClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_ttcfClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_sfnt_OffsetTable: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_headClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_hheaClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_hmtxClass;
+text: .text%Delete_maxpClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_locaClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_fpgmClass;
+text: .text%Delete_prepClass;
+text: .text%Delete_cvtClass;
+text: .text%Delete_blocClass;
+text: .text%Delete_ebscClass;
+text: .text%New_ttcfClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%ReadInt32;
+text: .text%ReadFileDataFunc: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2kScalerContext.o;
+text: .text%Rewind_InputStream;
+text: .text%New_sfnt_OffsetTable: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%ReadInt16;
+text: .text%New_sfnt_DirectoryEntry: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%GetTableDirEntry_sfntClass;
+text: .text%New_InputStream2;
+text: .text%PreLoadT2KInputStream;
+text: .text%New_headClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_InputStream;
+text: .text%tsi_DeAllocMem;
+text: .text%t2k_free;
+text: .text%__1cIHSMemoryGDelete6Fpv_v_;
+text: .text%New_hheaClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%New_maxpClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%New_locaClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%GetNumGlyphs_sfntClass;
+text: .text%New_hmtxClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%New_hmtxEmptyClass;
+text: .text%PrimeT2KInputStream;
+text: .text%New_cvtClass;
+text: .text%New_cvtEmptyClass;
+text: .text%Read_cvtClass;
+text: .text%New_fpgmClass;
+text: .text%New_fpgmEmptyClass;
+text: .text%Read_fpgmClass;
+text: .text%ReadSegment;
+text: .text%New_prepClass;
+text: .text%New_prepEmptyClass;
+text: .text%Read_prepClass;
+text: .text%NewT2K;
+text: .text%NewTTHintFontForT2K;
+text: .text%NewTTSHintcalerFont;
+text: .text%OnceOnlyTTFDefInit: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/TTHintFont.o;
+text: .text%fnt_DefaultJumpTable;
+text: .text%ComputeElementSizes;
+text: .text%LargestElementCounts: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/TTHintFont.o;
+text: .text%FixedMultiply;
+text: .text%util_FixMul;
+text: .text%TTScalerNewVariationDefault;
+text: .text%TTScalerNewVariation1Dot1;
+text: .text%InitTTHintTranForT2K;
+text: .text%TTHintTransformAllocation: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/HintTran.o;
+text: .text%InitTheKeyByVary;
+text: .text%InitTheKeyByFont;
+text: .text%InitTheKeyByScaler;
+text: .text%SetupDebugPointers: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/TTHintFont.o;
+text: .text%GetPerFontMemory;
+text: .text%GetPerFontMemoryAllocator;
+text: .text%TTScalerTTHintTranDefault;
+text: .text%SetupScalerDefaultTTD: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/HintTran.o;
+text: .text%TTScalerTTHintTranDeep: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/HintTran.o;
+text: .text%SetupScalerTransform: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/HintTran.o;
+text: .text%SetupGXMatrixFromT2K: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/HintTran.o;
+text: .text%ResetMapping;
+text: .text%TTScalerTTHintTran;
+text: .text%FillBytes;
+text: .text%Magnitude;
+text: .text%MultiplyDivide;
+text: .text%WideMul: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/FixMulDiv.o;
+text: .text%WideDiv: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/FixMulDiv.o;
+text: .text%MapMapping;
+text: .text%convertFixedMatrixToTGraf;
+text: .text%FixedToGCoordinate: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/PinkGlue.o;
+text: .text%FractToGCoordinate: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/PinkGlue.o;
+text: .text%concatTGrafMatrices;
+text: .text%convertTGrafMatrixToFixed;
+text: .text%GCoordinateToFixed: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/PinkGlue.o;
+text: .text%GCoordinateToFract: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/PinkGlue.o;
+text: .text%FixedDivide;
+text: .text%SetGlobalGSDefaults;
+text: .text%InitContourData;
+text: .text%NeededAllocationContourBytes: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/OrientDB.o;
+text: .text%NeededContourWords: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/OrientDB.o;
+text: .text%SetupAllocatedContourData: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/OrientDB.o;
+text: .text%uname: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/nrScalerContext.o;
+text: .text%__1cSX11nrScalerContextLCountGlyphs6M_L_;
+text: .text%__1cQt2kScalerContextLCountGlyphs6M_L_;
+text: .text%__1cOhsGGlyphStrikeLinitEntries6MpnThsGGlyphStrikeEntry_i_v_;
+text: .text%__1cSX11nrScalerContextNGetLineHeight6MpnNhsFixedPoint2_2222_v_;
+text: .text%__1cNhsGGlyphCacheJAddStrike6MpnOhsGGlyphStrike__v_;
+text: .text%__1cOhsDynamicArray4CpnOhsGGlyphStrike__GAppend6Mrk1_l_;
+text: .text%__1cThsDescriptor_Delete6FpnShsDescriptorHeader__v_;
+text: .text%__1cGStrikeMGetNumGlyphs6M_i_;
+text: .text%__1cKfontObjectJsetStrike6MpnGStrike_rnNFontTransform_CC_v_;
+text: .text%__1cShsDescriptor_Equal6FpknShsDescriptorHeader_2_c_;
+text: .text%__1cOhsGGlyphStrikeNGetLineHeight6MpnNhsFixedPoint2_2222_v_;
+text: .text%__1cGuseMin6FrnNhsFixedPoint2_1_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%__1cGuseMax6FrnNhsFixedPoint2_1_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%__1cNX11FontObjectJMatchName6MipkHi_c_;
+text: .text%__1cNX11FontObjectLgetScalerID6MrnNFontTransform_CC_nLFontFormats__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject_md.o;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getCharMetrics;
+text: .text%getMetrics;
+text: .text%__1cCTXGconcat6Mrk0_v_;
+text: .text%__1cGStrikeLCharToGlyph6ML_L_;
+text: .text%__1cGStrikeJgetMapper6kM_pnRCharToGlyphMapper__;
+text: .text%__1cUCompositeGlyphMapperNCharsToGlyphs6kMipkLpL_v_;
+text: .text%__1cUCompositeGlyphMapperTgetMissingGlyphCode6kM_i_;
+text: .text%__1cOhsGGlyphStrikeJgetMapper6M_pnRCharToGlyphMapper__;
+text: .text%__1cSX11nrScalerContextJgetMapper6M_pnRCharToGlyphMapper__;
+text: .text%__1cOhsDynamicArray4nKMapperPair__DGet6kMl_rkn0A__;
+text: .text%__1cQt2kScalerContextJgetMapper6M_pnRCharToGlyphMapper__;
+text: .text%__1cTnrCharToGlyphMapper2t6MpnUX11CharToGlyphMapper_pnRCharToGlyphMapper_ii_v_;
+text: .text%__1cRCharToGlyphMapperTgetMissingGlyphCode6kM_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2kScalerContext.o;
+text: .text%__1cUCompositeGlyphMapperSgetCachedGlyphCode6kMkL_L_;
+text: .text%__1cNCompositeFontOisExcludedChar6MiL_i_;
+text: .text%__1cTnrCharToGlyphMapperNCharsToGlyphs6kMipkLpL_v_;
+text: .text%__1cKCMAPMapperNCharsToGlyphs6kMipkLpL_v_;
+text: .text%__1cWConvertUnicodeToGlyphs6FrnSsfntFileFontObject_rpCipkLpL_v_;
+text: .text%__1cIgetGlyph6FpCL_H_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/cmaps.o;
+text: .text%__1cJgetGlyph46FpCL_H_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/cmaps.o;
+text: .text%__1cUX11CharToGlyphMapperNCharsToGlyphs6kMipkLpL_v_;
+text: .text%__1cUCompositeGlyphMapperSsetCachedGlyphCode6kMkL1ki_v_;
+text: .text%__1cGStrikeKgetMetrics6MirnIhsGGlyph_rnNhsFixedPoint2__c_;
+text: .text%__1cGStrikeXcompositeStrikeForGlyph6Mri_pnOhsGGlyphStrike__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%__1cOhsGGlyphStrikeKGetMetrics6MHpnIhsGGlyph_pnNhsFixedPoint2__v_;
+text: .text%__1cOhsGGlyphStrikeIgetEntry6Mi_pnThsGGlyphStrikeEntry__;
+text: .text%__1cSX11nrScalerContextPGenerateMetrics6MHpnIhsGGlyph_pnNhsFixedPoint2__v_;
+text: .text%__1cTnrCharToGlyphMapperMgetXCharCode6Mi_i_;
+text: .text%Java_sun_awt_font_NativeFontWrapper_populateAndLayoutGlyphVector;
+text: .text%__1cLGlyphLayout2t6MpnHJNIEnv__pnL_jcharArray_iiipnN_jdoubleArray_6CCpnKfontObject__v_;
+text: .text%__1cJScriptRunEnext6M_c_;
+text: .text%__1cJScriptRunNgetScriptCode6FL_l_;
+text: .text%__1cJScriptRunKsameScript6Fll_c_;
+text: .text%__1cNgetScriptFont6FpnKfontObject_lrlpc_1_;
+text: .text%__1cNCompositeFontNgetScriptSlot6Mi_i_;
+text: .text%__1cKfontObjectJgetStrike6M_rnGStrike__;
+text: .text%__1cGStrikeTgetMissingGlyphCode6kM_i_;
+text: .text%__1cJScriptRunVgetScriptRangeOffsets6Fl_pkh_;
+text: .text%__1cTFontInstanceAdapter2t6MpnKfontObject_pnGStrike_pnNFontTransform_ll_v_;
+text: .text%__1cNCompositeFontNGetUnitsPerEM6M_kH_;
+text: .text%__1cTFontInstanceAdapterReuclidianDistance6Mff_f_;
+text: .text%__1cVCompositeLayoutEngine2t6MpknTFontInstanceAdapter_ll_v_;
+text: .text%__1cMLayoutEngine2t6MpknOLEFontInstance_ll_v_;
+text: .text%__1cVCompositeLayoutEngineLlayoutChars6MpkHlllcffrnLLEErrorCode__l_;
+text: .text%__1cVCompositeLayoutEngineNcomputeGlyphs6MpkHlllcrpLrplrnLLEErrorCode__l_;
+text: .text%__1cVCompositeLayoutEngineQmapCharsToGlyphs6MpkHllccrpLrplrnLLEErrorCode__v_;
+text: .text%__1cTFontInstanceAdapterUmapCharsToWideGlyphs6kMpkHllcpknMLECharMapper_pL_v_;
+text: .text%__1cTFontInstanceAdapterSmapCharToWideGlyph6kMLpknMLECharMapper__L_;
+text: .text%__1cRDefaultCharMapperHmapChar6kML_L_;
+text: .text%__1cROpenTypeUtilitiesGsearch6FLpkLl_l_;
+text: .text%__1cROpenTypeUtilitiesHhighBit6Fl_W_;
+text: .text%__1cVCompositeLayoutEngineOpositionGlyphs6MpkLlffrpfrnLLEErrorCode__v_;
+text: .text%__1cTFontInstanceAdapterTgetWideGlyphAdvance6kMLrnHLEPoint__v_;
+text: .text%__1cLGlyphLayoutRupdateGlyphVector6MpnHJNIEnv__pnI_jobject_i_v_;
+text: .text%__1cJinitGVIDs6FpnHJNIEnv__pnI_jobject__c_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/GlyphLayout.o;
+text: .text%__1cVCompositeLayoutEngineJgetGlyphs6kMpLLrnLLEErrorCode__v_;
+text: .text%__1cMLayoutEngineOgetCharIndices6kMpllrnLLEErrorCode__v_;
+text: .text%__1cLGlyphLayout2T6M_v_;
+text: .text%__SLIP.DELETER__A: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/PDhWU_tMnE1cNFw5jkN-.o;
+text: .text%__1cVCompositeLayoutEngine2T6M_v_;
+text: .text%__1cVCompositeLayoutEngineFreset6M_v_;
+text: .text%__1cMLayoutEngineFreset6M_v_;
+text: .text%__1cMLayoutEngine2T5B6M_v_;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getGlyphVectorOutline;
+text: .text%__1cLGlyphVector2t6MpnHJNIEnv__pnN_jdoubleArray_4CCpnKfontObject__v_;
+text: .text%__1cLGlyphVectorOgetGlyphVector6MpnI_jobject__v_;
+text: .text%__1cLGlyphVectorNgetGlyphCodes6MpnI_jobject__v_;
+text: .text%__1cLGlyphVectorNsetGlyphCodes6MpnK_jintArray__v_;
+text: .text%__1cLGlyphVectorOallocateGlyphs6Mi_v_;
+text: .text%__1cLGlyphVectorMsetNumGlyphs6Mi_v_;
+text: .text%__1cLGlyphVectorMgetPositions6MpnI_jobject__v_;
+text: .text%__1cLGlyphVectorMsetPositions6MpnM_jfloatArray__v_;
+text: .text%__1cLGlyphVectorRallocatePositions6M_v_;
+text: .text%__1cLGlyphVectorNgetTransforms6MpnI_jobject__v_;
+text: .text%__1cLGlyphVectorNsetTransforms6MpnN_jdoubleArray_pnK_jintArray__v_;
+text: .text%__1cLGlyphVectorKgetOutline6Mff_pnI_jobject__;
+text: .text%__1cLGlyphVectorQgetGlyphsOutline6Miiff_pnI_jobject__;
+text: .text%__1cLStrikeTable2t6MrknLGlyphVector_pnCTX__v_;
+text: .text%__1cLGlyphVectorOgetGlyphStrike6kMpnCTX__rnGStrike__;
+text: .text%__1cLGeneralPath2t6Mi_v_;
+text: .text%__1cLGlyphVectorJscanGlyph6FrnLGeneralPath_rnGStrike_rnMhsPathSpline_rnLCurveWalker_ffi_v_;
+text: .text%__1cGStrikePGetGlyphOutline6MirnMhsPathSpline__v_;
+text: .text%__1cOhsGGlyphStrikeHGetPath6MHpnMhsPathSpline_pnNhsFixedPoint2__v_;
+text: .text%__1cSX11nrScalerContextMGeneratePath6MHpnMhsPathSpline_pnNhsFixedPoint2__v_;
+text: .text%__1cQt2kScalerContextMGeneratePath6MHpnMhsPathSpline_pnNhsFixedPoint2__v_;
+text: .text%__1cQt2kScalerContextKSetupTrans6M_pnDT2K__;
+text: .text%T2K_NewTransformation;
+text: .text%GetUPEM;
+text: .text%util_EuclidianDistance;
+text: .text%util_FixDiv;
+text: .text%NewTTHintTranForT2K;
+text: .text%ExtractUnitVectors;
+text: .text%SetOneUnitAxis: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2k.o;
+text: .text%T2K_NewTransformationInternal: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2k.o;
+text: .text%T2KDoGriddingSetUp: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2k.o;
+text: .text%GetMaxPoints;
+text: .text%ag_HintInit;
+text: .text%GetStreamForTable;
+text: .text%ComputeGlobalHints;
+text: .text%MedianHeight: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/ghints.o;
+text: .text%GetGlyphByCharCode;
+text: .text%LoadCMAP: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%New_cmapClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%SizeInStream;
+text: .text%Compute_cmapClass_GlyphIndex: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Compute_cmapClass_Index0: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%GetGlyphByIndex;
+text: .text%New_GlyphClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%GetYMax: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/ghints.o;
+text: .text%Delete_GlyphClass;
+text: .text%util_SortShortArray;
+text: .text%GetYMin: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/ghints.o;
+text: .text%ag_AutoFindStems;
+text: .text%ag_IsHinthandle: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_ProcessOutline: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_AnalyzeChar: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_ComputeTangents: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_DoubleNorm: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_MarkPoints: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_FindXandYExtrema: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_PrevDifferentXValue: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_PrevDifferentYValue: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_YDist: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_XDist: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_FindInflections: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_FDist: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_FindPointPairs: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_BlackAndParallell: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_Height;
+text: .text%ag_FindLinks: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_GetStems: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%Purge_cmapMemory;
+text: .text%Delete_cmapClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%ag_SetHintInfo;
+text: .text%ag_SetScale;
+text: .text%ag_SetUpCvt: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%GetFontWideOutlineMetrics;
+text: .text%T2K_TransformYFunits;
+text: .text%T2K_TransformXFunits;
+text: .text%T2K_RenderGlyph;
+text: .text%T2K_RenderGlyphInternal: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2k.o;
+text: .text%T2K_PurgeMemoryInternal: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2k.o;
+text: .text%IsFigure;
+text: .text%IsFigure_cmapClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%AccumulateGlyphContours;
+text: .text%ApplyPostStyle;
+text: .text%__1cSConvertGlyphToPath6FpknKGlyphClass_pnMhsPathSpline__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2kScalerContext.o;
+text: .text%__1cIHSMemoryFClear6FpvL_v_;
+text: .text%T2K_PurgeMemory;
+text: .text%__1cGStrikeLGetPathType6Mi_nMhsPathSplineEType__;
+text: .text%__1cOhsGGlyphStrikeLGetPathType6kM_nMhsPathSplineEType__;
+text: .text%__1cLCurveWalkerEInit6MpknNhsPathContour_c_v_;
+text: .text%__1cLCurveWalkerINextQdDuad6M_c_;
+text: .text%__1cLGeneralPathIneedRoom6Mii_C_;
+text: .text%__1cMhsPathSplineGDelete6Fp0_v_;
+text: .text%__1cLGeneralPathIgetShape6MpnHJNIEnv___pnI_jobject__;
+text: .text%__1cLGeneralPath2T6M_v_;
+text: .text%__1cLStrikeTable2T6M_v_;
+text: .text%__1cLGlyphVector2T6M_v_;
+# SwingSet
+text: .text%__1cGStrikeVneedsAlgorithmicStyle6FrknNCompositeFont_ipc_v_;
+text: .text%__1cSsfntFileFontObjectLGetFontName6Mri_pkH_;
+text: .text%__1cSsfntFileFontObjectJReadNames6M_v_;
+text: .text%__1cJmakeNameU6FpCih_pH_;
+text: .text%__1cTEqualUnicodeStrings6FpkHip0i_c_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%__1cNX11FontObjectLGetFontName6Mri_pkH_;
+text: .text%__1cUstrDupASCIItoUNICODE6Fpkcrii_pH_;
+text: .text%__1cQCompAsciiUnicode6FpkcpkHi_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%__1cTtype1FileFontObjectLGetFontInfo6M_pnKt1FontInfo__;
+text: .text%__1cOfileFontObjectYGetFontLocalPlatformName6kM_pkc_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cTtype1FileFontObjectIOpenFont6MpkcpnLsDataRecord__i_;
+text: .text%__1cTtype1FileFontObjectINextChar6MpnLsDataRecord__i_;
+text: .text%__1cTtype1FileFontObjectJNextToken6MpnLsDataRecord_pci_i_;
+text: .text%__1cTtype1FileFontObjectKSkipSpaces6MpnLsDataRecord__i_;
+text: .text%__1cTtype1FileFontObjectJCloseFont6MpnLsDataRecord__v_;
+text: .text%__1cTtype1FileFontObjectODeleteFontInfo6MpnKt1FontInfo__v_;
+text: .text%__1cTtype1FileFontObjectHGetName6MrH111pH_i_;
+text: .text%__1cJustr_copy6FpH0_i_;
+text: .text%GetConverter: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/cmaps.o;
+text: .text%makeNativeToUnicodeArray;
+text: .text%__1cKCreateCMAP6FpCpH_0_;
+text: .text%__1cJgetGlyph26FpCL_H_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/cmaps.o;
+text: .text%__1cUX11CharToGlyphMapperNAddAsciiChars6M_v_;
+text: .text%__1cMj_strcasestr6Fpkc1_pc_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/cmaps.o;
+text: .text%__1cJupcasestr6Fpc_0_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/cmaps.o;
+text: .text%__1cQCreateSymbolCMAP6FpCpH_0_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/cmaps.o;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getNumFonts;
+text: .text%CountFontObjects;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getFamilyNameByIndex;
+text: .text%__1cNGetFontObject6FI_pnKfontObject__;
+text: .text%__1cPgetNodeByNumber6Fi_pnMfontListNode__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cKfindByFont6FrpnIT2KEntry_pv3_c_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2kScalerContext.o;
+text: .text%__1cGStrike2T6M_v_;
+text: .text%__SLIP.DELETER__B: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/ArabicLayoutEngine.o;
+text: .text%__1cUCompositeGlyphMapper2T6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%__1cIhsRefCntFUnRef6M_v_;
+text: .text%__1cNt2kFontScalerNCreateContext6MpknShsDescriptorHeader__pnQhsGScalerContext__;
+text: .text%__1cQt2kScalerContextNGetLineHeight6MpnNhsFixedPoint2_2222_v_;
+text: .text%__1cLhsMagnitude6Fll_l_;
+text: .text%__1cGhsWideDMul6Mll_p0_;
+text: .text%__1cGhsWideESqrt6kM_l_;
+text: .text%__1cJhsFracDiv6Fll_l_;
+text: .text%__1cGhsWideDDiv6Ml_p0_;
+text: .text%__1cGhsWideGAsLong6kM_l_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/hsFixMath.o;
+text: .text%__1cRProjectUnitVector6FllllllpnNhsFixedPoint2__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2kScalerContext.o;
+text: .text%__1cJhsFracMul6Fll_l_;
+text: .text%__1cLgetGlyph1046FpCL_H_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/cmaps.o;
+text: .text%Java_sun_awt_font_GlyphList_initIDs;
+text: .text%Java_sun_awt_font_GlyphList_setupCharData;
+text: .text%__1cLGlyphVectorHsetText6MpnL_jcharArray_ii_v_;
+text: .text%__1cLGlyphVectorKinitGlyphs6MpkHi_v_;
+text: .text%__1cLGlyphVectorNcharsToGlyphs6FrnGStrike_pkHpLi_C_;
+text: .text%__1cLGlyphVectorUpositionAndGetImages6Mff_v_;
+text: .text%__1cLGlyphVectorRallocateImageRefs6M_v_;
+text: .text%__1cGStrikeMprepareCache6Mipc_v_;
+text: .text%__1cOhsGGlyphStrikeMPrepareCache6MLpc_v_;
+text: .text%__1cNGlyphMemCacheNreserveGlyphs6MHLpc_v_;
+text: .text%__1cIMemCacheMreserveSpace6MHLpc_v_;
+text: .text%__1cGStrikeTgetMetricsWithImage6MirnIhsGGlyph_rnNhsFixedPoint2_pc_c_;
+text: .text%__1cOhsGGlyphStrikeTGetMetricsWithImage6MHpnIhsGGlyph_pnNhsFixedPoint2_pc_v_;
+text: .text%__1cOhsGGlyphStrikeNgetEntryImage6MpnThsGGlyphStrikeEntry_Hpc_v_;
+text: .text%__1cNGlyphMemCacheNgetGlyphImage6MLrHpc_pkv_;
+text: .text%__1cIMemCacheJgetMemory6MLrHpc_pkv_;
+text: .text%__1cSX11nrScalerContextYGenerateMetricsWithImage6MHpnIhsGGlyph_pnNhsFixedPoint2__v_;
+text: .text%__1cSX11nrScalerContextNGenerateImage6MHpknIhsGGlyph_pv_v_;
+text: .text%__1cOhsGGlyphStrikeQassignEntryImage6MpnThsGGlyphStrikeEntry_Hpc_v_;
+text: .text%__1cNGlyphMemCacheQassignGlyphImage6MLrnIhsGGlyph_pc_H_;
+text: .text%__1cIMemCacheMassignMemory6MLLpvpc_H_;
+text: .text%__1cIMemCacheIsetEntry6MrnIMemEntry_LpvLpc_v_;
+text: .text%__1cIMemCacheMreleaseEntry6MrnIMemEntry_pc_v_;
+text: .text%Java_sun_java2d_loops_DrawGlyphList_DrawGlyphList;
+text: .text%drawGlyphList: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/DrawGlyphList.o;
+text: .text%Java_sun_awt_font_GlyphList_discardData;
+text: .text%Java_sun_awt_font_GlyphList_setupStringData;
+text: .text%__1cLGlyphVectorJsetString6MpnI_jstring__v_;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getFamilyName;
+text: .text%lookupName: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/FontWrapper.o;
diff --git a/jdk/make/sun/font/reorder-sparc b/jdk/make/sun/font/reorder-sparc
new file mode 100644
index 0000000..80ff5c7
--- /dev/null
+++ b/jdk/make/sun/font/reorder-sparc
@@ -0,0 +1,601 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2kScalerContext.o;
+text: .text%__SLIP.INIT_A: t2kScalerContext.o;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__2t6Ml_v_;
+text: .text%JNI_OnLoad;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getType1FontVar;
+text: .text%Java_sun_awt_font_NativeFontWrapper_registerFonts;
+text: .text%__1cNhsGFontScalerIRegister6FLp0_v_;
+text: .text%__1cOhsDynamicArray4nOFontScalerPair__2t6Ml_v_;
+text: .text%__1cIhsRefCntDRef6M_v_;
+text: .text%__1cOhsDynamicArray4nOFontScalerPair__GAppend6Mrkn0A__l_;
+text: .text%__1cOFontScalerPair2t6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/eZruSM_9Z810_tvrzJEE.o;
+text: .text%__1cOhsDynamicArray4nOFontScalerPair__EFind6kMrkn0A__l_;
+text: .text%__1cHJNIEnv_QCallObjectMethod6MpnI_jobject_pnK_jmethodID_E_2_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cSsfntFileFontObjectEInit6MpkHipkc4nLFontFormats_i_c_;
+text: .text%__1cOfileFontObjectJReadChunk6MLLpv_pkv_;
+text: .text%__1cSfontfilecachecheck6FpnOfileFontObject__v_;
+text: .text%__1cOfileFontObjectMReleaseChunk6Mpkv_v_;
+text: .text%__1cNReadNameTable6FpnSsfntFileFontObject__c_;
+text: .text%__1cKfontObjectJReadTable6MLpL_pkv_;
+text: .text%__1cSsfntFileFontObjectNFindTableSize6MLpL_L_;
+text: .text%__1cSVerifyTrueTypeFile6FpnSsfntFileFontObject__c_;
+text: .text%__1cOInitializeCMAP6FrnSsfntFileFontObject_rpC_v_;
+text: .text%__1cOfileFontObjectJreadBlock6MIIpc_v_;
+text: .text%__1cQaddToTheListTail6FipnKfontObject__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cMsetRealStyle6FpnKfontObject__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cSsfntFileFontObjectHGetName6MrH111pH_i_;
+text: .text%__1cMAssignStyles6FipH_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cOUnicodeToLower6FpHi_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cUstrDupASCIItoUNICODE6Fpkcrii_pH_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cScopyAsciiToUnicode6FpkcpHi_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cVUnicodeStringContains6FpHh0h_c_;
+text: .text%__1cHJNIEnv_NCallIntMethod6MpnI_jobject_pnK_jmethodID_E_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cOfileFontObjectJFileClose6M_v_;
+text: .text%__1cOfileFontObjectNAddNativeName6Mpkc_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cOfileFontObjectEInit6MpkHipkc4nLFontFormats_i_c_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cTtype1FileFontObjectLGetFontInfo6M_pnKt1FontInfo__;
+text: .text%__1cOfileFontObjectYGetFontLocalPlatformName6kM_pkc_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cTtype1FileFontObjectIOpenFont6MpkcpnLsDataRecord__i_;
+text: .text%__1cTtype1FileFontObjectINextChar6MpnLsDataRecord__i_;
+text: .text%__1cTtype1FileFontObjectJNextToken6MpnLsDataRecord_pci_i_;
+text: .text%__1cTtype1FileFontObjectKSkipSpaces6MpnLsDataRecord__i_;
+text: .text%__1cTtype1FileFontObjectJCloseFont6MpnLsDataRecord__v_;
+text: .text%__1cTtype1FileFontObjectODeleteFontInfo6MpnKt1FontInfo__v_;
+text: .text%__1cTtype1FileFontObjectHGetName6MrH111pH_i_;
+text: .text%__1cJustr_copy6FpH0_i_;
+text: .text%__1cMj_strcasestr6Fpkc1_pc_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/cmaps.o;
+text: .text%__1cJupcasestr6Fpc_0_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/cmaps.o;
+text: .text%__1cQCreateSymbolCMAP6FpCpH_0_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/cmaps.o;
+text: .text%__1cIgetGlyph6FpCL_H_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/cmaps.o;
+text: .text%__1cJgetGlyph46FpCL_H_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/cmaps.o;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getFullNameByFileName;
+text: .text%__1cNGetFontObject6FpkHi_pnKfontObject__;
+text: .text%__1cOfileFontObjectLGetFileName6kMri_pkH_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%Java_sun_awt_font_NativeFontWrapper_registerCompositeFont;
+text: .text%__1cNCompositeFont2t6MpnHJNIEnv__pnI_jstring__v_;
+text: .text%__1cNCompositeFontJaddRanges6MpnHJNIEnv__pnK_jintArray__v_;
+text: .text%__1cNCompositeFontNaddMaxIndices6MpnHJNIEnv__pnK_jintArray__v_;
+text: .text%__1cNCompositeFontVregisterComponentName6MirnNJStringBuffer__v_;
+text: .text%__1cNCompositeFontHisValid6M_i_;
+text: .text%__1cMregisterFont6FnLFontFormats_pnKfontObject__v_;
+text: .text%__1cQaddToTheListHead6FipnKfontObject__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cNCompositeFontHGetName6MrH111pH_i_;
+text: .text%__1cKfontObjectLGetFileName6kMri_pkH_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/CompositeFont.o;
+text: .text%__SLIP.FINAL__A: t2kScalerContext.o;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__2T6M_v_;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__FReset6M_v_;
+# Test LoadFrame
+text: .text%Java_sun_awt_font_NativeFontWrapper_initializeFont;
+text: .text%FindFontObject;
+text: .text%__1cVequalUnicodeToAsciiNC6FpkHipkci_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cGfindFO6FpkHii_pnKfontObject__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cNCompositeFontJMatchName6MipkHi_c_;
+text: .text%__1cKfontObjectMGetRealStyle6M_kH_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/CompositeFont.o;
+text: .text%__1cKsetFontPtr6FpnHJNIEnv__pnI_jobject_pnKfontObject__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/FontWrapper.o;
+# Test LoadJFrame
+# Test JHello
+text: .text%Java_sun_awt_font_NativeFontWrapper_getFontMetrics;
+text: .text%__1cKgetFontPtr6FpnHJNIEnv__pnI_jobject__pnKfontObject__;
+text: .text%__1cKfontObjectJgetStrike6MrnNFontTransform_CC_rnGStrike__;
+text: .text%__1cKfontObjectLgetScalerID6MrnNFontTransform_CC_nLFontFormats__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/CompositeFont.o;
+text: .text%__1cGStrike2t6MrnKfontObject_rnNFontTransform_CC_v_;
+text: .text%__1cGStrikeNGetLineHeight6MrnNhsFixedPoint2_2222_v_;
+text: .text%__1cNCompositeFontKcountSlots6M_i_;
+text: .text%__1cGStrikeWcompositeStrikeForSlot6Mi_pnOhsGGlyphStrike__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%__1cGStrikeZcompositeStrikeForSlotInt6Miri_pnOhsGGlyphStrike__;
+text: .text%__1cGStrikePallocateStrikes6M_v_;
+text: .text%__1cGStrikeNallocateDescs6M_v_;
+text: .text%__1cNCompositeFontLgetSlotFont6Mi_pnKfontObject__;
+text: .text%__1cSsfntFileFontObjectJMatchName6MipkHi_c_;
+text: .text%__1cGStrikeQalgorithmicStyle6FrknNCompositeFont_rknKfontObject_i_i_;
+text: .text%__1cNCompositeFontLGetFontName6Mri_pkH_;
+text: .text%__1cOisUniformScale6FrnNFontTransform__i_;
+text: .text%__1cPuseNativeScaler6F_i_;
+text: .text%__1cOfileFontObjectWGetNumberOfNativeNames6kM_ki_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cHCStrike2t6MrnKfontObject_rnNFontTransform_CC_v_;
+text: .text%__1cQhsDescriptor_New6FLpkL_pnShsDescriptorHeader__;
+text: .text%__1cYhsDescriptor_ComputeSize6FLpkL_L_;
+text: .text%__1cQhsDescriptor_New6FL_pnShsDescriptorHeader__;
+text: .text%__1cIHSMemoryDNew6FL_pv_;
+text: .text%__1cShsDescriptor_Reset6FpnShsDescriptorHeader__v_;
+text: .text%__1cQhsDescriptor_Add6FpnShsDescriptorHeader_LL_pv_;
+text: .text%__1cKVALID_DESC6FpknShsDescriptorHeader__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/hsDescriptor.o;
+text: .text%__1cbBhsDescriptor_UpdateCheckSum6FpnShsDescriptorHeader__v_;
+text: .text%__1cOhsGGlyphStrikeJRefStrike6FpknShsDescriptorHeader__p0_;
+text: .text%__1cOhsDynamicArray4CpnOhsGGlyphStrike__2t6Ml_v_;
+text: .text%__1cIMemCache2t6MHHLc_v_;
+text: .text%__1cIMemEntry2t6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/MemCache.o;
+text: .text%__1cNhsGGlyphCacheKFindStrike6MpknShsDescriptorHeader__pnOhsGGlyphStrike__;
+text: .text%__1cOhsGGlyphStrike2t6MpknShsDescriptorHeader__v_;
+text: .text%__1cRhsDescriptor_Copy6FpknShsDescriptorHeader_p0_3_;
+text: .text%__1cThsDescriptor_Find326FpknShsDescriptorHeader_L_L_;
+text: .text%__1cRhsDescriptor_Find6FpknShsDescriptorHeader_LpLpv_pkv_;
+text: .text%__1cNhsGFontScalerEFind6FL_p0_;
+text: .text%__1cOhsDynamicArray4nOFontScalerPair__DGet6kMl_rkn0A__;
+text: .text%__1cNt2kFontScalerNCreateContext6MpknShsDescriptorHeader__pnQhsGScalerContext__;
+text: .text%__1cQt2kScalerContext2t6MpnKfontObject_pkfcci_v_;
+text: .text%__1cLhsGT2KCacheIRefEntry6FpnKfontObject_ll_pnIT2KEntry__;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__HForEach6MpFr1pv4_c44_p1_;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__GAppend6Mrk1_l_;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__2F6Ml_r1_;
+text: .text%__1cIT2KEntryGGetT2K6M_pnDT2K__;
+text: .text%tsi_NewMemhandler;
+text: .text%t2k_malloc;
+text: .text%__1cIHSMemoryHSoftNew6FL_pv_;
+text: .text%__1cJhsSoftNew4CL_6FrpTAI_1_;
+text: .text%FOGetDataLength;
+text: .text%__1cOfileFontObjectNGetDataLength6M_L_;
+text: .text%New_NonRamInputStream;
+text: .text%tsi_AllocMem;
+text: .text%New_sfntClassLogical;
+text: .text%SetStyling: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%CacheKeyTables_sfntClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_ttcfClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_sfnt_OffsetTable: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_headClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_hheaClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_hmtxClass;
+text: .text%Delete_maxpClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_locaClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_fpgmClass;
+text: .text%Delete_prepClass;
+text: .text%Delete_cvtClass;
+text: .text%Delete_blocClass;
+text: .text%Delete_ebscClass;
+text: .text%New_ttcfClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%ReadInt32;
+text: .text%ReadFileDataFunc: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2kScalerContext.o;
+text: .text%Rewind_InputStream;
+text: .text%New_sfnt_OffsetTable: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%ReadInt16;
+text: .text%New_sfnt_DirectoryEntry: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%GetTableDirEntry_sfntClass;
+text: .text%New_InputStream2;
+text: .text%PreLoadT2KInputStream;
+text: .text%New_headClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Delete_InputStream;
+text: .text%tsi_DeAllocMem;
+text: .text%t2k_free;
+text: .text%__1cIHSMemoryGDelete6Fpv_v_;
+text: .text%New_hheaClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%New_maxpClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%New_locaClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%PrimeT2KInputStream;
+text: .text%GetNumGlyphs_sfntClass;
+text: .text%New_hmtxClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%New_hmtxEmptyClass;
+text: .text%New_cvtClass;
+text: .text%New_cvtEmptyClass;
+text: .text%Read_cvtClass;
+text: .text%New_fpgmClass;
+text: .text%New_fpgmEmptyClass;
+text: .text%Read_fpgmClass;
+text: .text%ReadSegment;
+text: .text%New_prepClass;
+text: .text%New_prepEmptyClass;
+text: .text%Read_prepClass;
+text: .text%Seek_InputStream;
+text: .text%New_blocClass;
+text: .text%Tell_InputStream;
+text: .text%New_bitmapSizeTable: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2ksbit.o;
+text: .text%NewT2K;
+text: .text%NewTTHintFontForT2K;
+text: .text%NewTTSHintcalerFont;
+text: .text%OnceOnlyTTFDefInit: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/TTHintFont.o;
+text: .text%fnt_DefaultJumpTable;
+text: .text%ComputeElementSizes;
+text: .text%LargestElementCounts: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/TTHintFont.o;
+text: .text%FixedMultiply;
+text: .text%util_FixMul;
+text: .text%TTScalerNewVariationDefault;
+text: .text%TTScalerNewVariation1Dot1;
+text: .text%InitTTHintTranForT2K;
+text: .text%TTHintTransformAllocation: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/HintTran.o;
+text: .text%InitTheKeyByVary;
+text: .text%InitTheKeyByFont;
+text: .text%InitTheKeyByScaler;
+text: .text%SetupDebugPointers: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/TTHintFont.o;
+text: .text%GetPerFontMemory;
+text: .text%GetPerFontMemoryAllocator;
+text: .text%TTScalerTTHintTranDefault;
+text: .text%SetupScalerDefaultTTD: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/HintTran.o;
+text: .text%TTScalerTTHintTranDeep: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/HintTran.o;
+text: .text%SetupScalerTransform: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/HintTran.o;
+text: .text%SetupGXMatrixFromT2K: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/HintTran.o;
+text: .text%ResetMapping;
+text: .text%TTScalerTTHintTran;
+text: .text%FillBytes;
+text: .text%Magnitude;
+text: .text%MultiplyDivide;
+text: .text%WideMul: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/FixMulDiv.o;
+text: .text%WideDiv: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/FixMulDiv.o;
+text: .text%MapMapping;
+text: .text%convertFixedMatrixToTGraf;
+text: .text%FixedToGCoordinate: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/PinkGlue.o;
+text: .text%FractToGCoordinate: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/PinkGlue.o;
+text: .text%concatTGrafMatrices;
+text: .text%convertTGrafMatrixToFixed;
+text: .text%GCoordinateToFixed: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/PinkGlue.o;
+text: .text%GCoordinateToFract: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/PinkGlue.o;
+text: .text%FixedDivide;
+text: .text%SetGlobalGSDefaults;
+text: .text%InitContourData;
+text: .text%NeededAllocationContourBytes: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/OrientDB.o;
+text: .text%NeededContourWords: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/OrientDB.o;
+text: .text%SetupAllocatedContourData: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/OrientDB.o;
+text: .text%__1cQt2kScalerContextLCountGlyphs6M_L_;
+text: .text%__1cOhsGGlyphStrikeLinitEntries6MpnThsGGlyphStrikeEntry_i_v_;
+text: .text%__1cQt2kScalerContextNGetLineHeight6MpnNhsFixedPoint2_2222_v_;
+text: .text%__1cQt2kScalerContextKSetupTrans6M_pnDT2K__;
+text: .text%T2K_NewTransformation;
+text: .text%GetUPEM;
+text: .text%util_EuclidianDistance;
+text: .text%util_FixDiv;
+text: .text%NewTTHintTranForT2K;
+text: .text%ExtractUnitVectors;
+text: .text%SetOneUnitAxis: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2k.o;
+text: .text%T2K_NewTransformationInternal: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2k.o;
+text: .text%T2KDoGriddingSetUp: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2k.o;
+text: .text%GetMaxPoints;
+text: .text%ag_HintInit;
+text: .text%GetStreamForTable;
+text: .text%ComputeGlobalHints;
+text: .text%MedianHeight: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/ghints.o;
+text: .text%GetGlyphByCharCode;
+text: .text%LoadCMAP: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%New_cmapClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%SizeInStream;
+text: .text%Compute_cmapClass_GlyphIndex: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%Compute_cmapClass_Index0: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%GetGlyphByIndex;
+text: .text%New_GlyphClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%GetYMax: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/ghints.o;
+text: .text%Delete_GlyphClass;
+text: .text%util_SortShortArray;
+text: .text%GetYMin: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/ghints.o;
+text: .text%ag_AutoFindStems;
+text: .text%ag_IsHinthandle: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_ProcessOutline: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_AnalyzeChar: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_ComputeTangents: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_DoubleNorm: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_MarkPoints: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_FindXandYExtrema: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_PrevDifferentXValue: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_PrevDifferentYValue: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_YDist: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_XDist: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_FindInflections: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_FDist: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_FindPointPairs: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_BlackAndParallell: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_Height;
+text: .text%ag_FindLinks: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%ag_GetStems: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%Purge_cmapMemory;
+text: .text%Delete_cmapClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%ag_SetHintInfo;
+text: .text%ag_SetScale;
+text: .text%ag_SetUpCvt: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/autogrid.o;
+text: .text%GetFontWideOutlineMetrics;
+text: .text%T2K_TransformYFunits;
+text: .text%T2K_TransformXFunits;
+text: .text%__1cLhsMagnitude6Fll_l_;
+text: .text%__1cGhsWideDMul6Mll_p0_;
+text: .text%__1cGhsWideESqrt6kM_l_;
+text: .text%__1cJhsFracDiv6Fll_l_;
+text: .text%__1cGhsWideDDiv6Ml_p0_;
+text: .text%__1cRProjectUnitVector6FllllllpnNhsFixedPoint2__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2kScalerContext.o;
+text: .text%__1cJhsFracMul6Fll_l_;
+text: .text%__1cNhsGGlyphCacheJAddStrike6MpnOhsGGlyphStrike__v_;
+text: .text%__1cOhsDynamicArray4CpnOhsGGlyphStrike__GAppend6Mrk1_l_;
+text: .text%__1cThsDescriptor_Delete6FpnShsDescriptorHeader__v_;
+text: .text%__1cOhsGGlyphStrikeNGetLineHeight6MpnNhsFixedPoint2_2222_v_;
+text: .text%__1cGuseMin6FrnNhsFixedPoint2_1_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%__1cGuseMax6FrnNhsFixedPoint2_1_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%DefaultFontObject;
+text: .text%__1cJdefaultFO6F_pnKfontObject__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cNCompositeFontJReadChunk6MLLpv_pkv_;
+text: .text%__1cTtype1FileFontObjectJMatchName6MipkHi_c_;
+text: .text%__1cKu_strncmpi6FpkHp0i_i_;
+text: .text%__1cSsfntFileFontObjectLgetScalerID6MrnNFontTransform_CC_nLFontFormats__;
+text: .text%__1cShsDescriptor_Equal6FpknShsDescriptorHeader_2_c_;
+text: .text%__1cKfindByFont6FrpnIT2KEntry_pv3_c_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2kScalerContext.o;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getCharMetrics;
+text: .text%getMetrics;
+text: .text%__1cCTXGconcat6Mrk0_v_;
+text: .text%__1cRDefaultCharMapperHmapChar6kML_L_;
+text: .text%__1cGStrikeLCharToGlyph6ML_L_;
+text: .text%__1cGStrikeJgetMapper6kM_pnRCharToGlyphMapper__;
+text: .text%__1cUCompositeGlyphMapperNCharsToGlyphs6kMipkLpL_v_;
+text: .text%__1cUCompositeGlyphMapperTgetMissingGlyphCode6kM_i_;
+text: .text%__1cOhsGGlyphStrikeJgetMapper6M_pnRCharToGlyphMapper__;
+text: .text%__1cQt2kScalerContextJgetMapper6M_pnRCharToGlyphMapper__;
+text: .text%__1cRCharToGlyphMapperTgetMissingGlyphCode6kM_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%__1cUCompositeGlyphMapperSgetCachedGlyphCode6kMkL_L_;
+text: .text%__1cNCompositeFontOisExcludedChar6MiL_i_;
+text: .text%__1cKCMAPMapperNCharsToGlyphs6kMipkLpL_v_;
+text: .text%__1cWConvertUnicodeToGlyphs6FrnSsfntFileFontObject_rpCipkLpL_v_;
+text: .text%__1cUCompositeGlyphMapperSsetCachedGlyphCode6kMkL1ki_v_;
+text: .text%__1cGStrikeKgetMetrics6MirnIhsGGlyph_rnNhsFixedPoint2__c_;
+text: .text%__1cGStrikebCcompositeStrikeForGlyphImage6Mri_pnOhsGGlyphStrike__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%__1cHCStrikeRgetStrikeForGlyph6Mri_pnOhsGGlyphStrike__;
+text: .text%__1cGStrike2t6MrnKfontObject_nLFontFormats_rnNFontTransform_CCi_v_;
+text: .text%__1cMnrFontScalerNCreateContext6MpknShsDescriptorHeader__pnQhsGScalerContext__;
+text: .text%__1cSX11nrScalerContext2t6MpnKfontObject_pkfccii_v_;
+text: .text%__1cSX11nrScalerContextLCountGlyphs6M_L_;
+text: .text%__1cOfileFontObjectRGetFontNativeName6kMi_pkc_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cSX11nrScalerContextNGetLineHeight6MpnNhsFixedPoint2_2222_v_;
+text: .text%__1cGStrikeMGetNumGlyphs6M_i_;
+text: .text%__1cSX11nrScalerContextJgetMapper6M_pnRCharToGlyphMapper__;
+text: .text%__1cOhsDynamicArray4nKMapperPair__2t6Ml_v_;
+text: .text%__1cQMakeNativeMapper6Fpkc_v_;
+text: .text%__1cOhsDynamicArray4nKMapperPair__EFind6kMrkn0A__l_;
+text: .text%__1cUX11CharToGlyphMapper2t6MpkchpcHH_v_;
+text: .text%__1cOhsDynamicArray4nKMapperPair__GAppend6Mrkn0A__l_;
+text: .text%__1cKMapperPair2t6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/s8_6EXsXdaPU71oqAxuU.o;
+text: .text%__1cOhsDynamicArray4nKMapperPair__DGet6kMl_rkn0A__;
+text: .text%__1cTnrCharToGlyphMapper2t6MpnUX11CharToGlyphMapper_pnRCharToGlyphMapper_ii_v_;
+text: .text%__1cTnrCharToGlyphMapperNCharsToGlyphs6kMipkLpL_v_;
+text: .text%__1cUX11CharToGlyphMapperNCharsToGlyphs6kMipkLpL_v_;
+text: .text%__1cGStrikeTgetMissingGlyphCode6kM_i_;
+text: .text%__1cOhsGGlyphStrikeKGetMetrics6MHpnIhsGGlyph_pnNhsFixedPoint2__v_;
+text: .text%__1cOhsGGlyphStrikeIgetEntry6Mi_pnThsGGlyphStrikeEntry__;
+text: .text%__1cSX11nrScalerContextPGenerateMetrics6MHpnIhsGGlyph_pnNhsFixedPoint2__v_;
+text: .text%__1cTnrCharToGlyphMapperMgetXCharCode6Mi_i_;
+text: .text%Java_sun_awt_font_NativeFontWrapper_populateAndLayoutGlyphVector;
+text: .text%__1cLGlyphLayout2t6MpnHJNIEnv__pnL_jcharArray_iiipnN_jdoubleArray_6CCpnKfontObject__v_;
+text: .text%__1cNcharsToGlyphs6FpkHlpnGStrike_pL_v_;
+text: .text%__1cJScriptRunEnext6M_c_;
+text: .text%__1cJScriptRunNgetScriptCode6FL_l_;
+text: .text%__1cJScriptRunKsameScript6Fll_c_;
+text: .text%__1cNgetScriptFont6FpnKfontObject_l_1_;
+text: .text%__1cKfontObjectJsetStrike6MpnGStrike_rnNFontTransform_CC_v_;
+text: .text%__1cTFontInstanceAdapter2t6MpnKfontObject_pnGStrike_pnNFontTransform_ll_v_;
+text: .text%__1cOfileFontObjectNGetUnitsPerEM6M_kH_;
+text: .text%__1cTFontInstanceAdapterReuclidianDistance6Mff_f_;
+text: .text%__1cMLayoutEngineTlayoutEngineFactory6FpknOLEFontInstance_llrnLLEErrorCode__p0_;
+text: .text%__1cTFontInstanceAdapterMgetFontTable6kML_pkv_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/FontInstanceAdapter.o;
+text: .text%__1cSsfntFileFontObjectIGetTable6ML_pkv_;
+text: .text%__1cMLayoutEngine2t6MpknOLEFontInstance_ll_v_;
+text: .text%__1cMLayoutEngineLlayoutChars6MpkHlllcffrnLLEErrorCode__l_;
+text: .text%__1cMLayoutEngineNcomputeGlyphs6MpkHlllcrpHrplrnLLEErrorCode__l_;
+text: .text%__1cMLayoutEngineQmapCharsToGlyphs6MpkHllccrpHrplrnLLEErrorCode__v_;
+text: .text%__1cTFontInstanceAdapterQmapCharsToGlyphs6kMpkHllcpknMLECharMapper_pH_v_;
+text: .text%__1cTFontInstanceAdapterOmapCharToGlyph6kMLpknMLECharMapper__H_;
+text: .text%__1cROpenTypeUtilitiesGsearch6FLpkLl_l_;
+text: .text%__1cROpenTypeUtilitiesHhighBit6Fl_W_;
+text: .text%__1cMLayoutEngineOpositionGlyphs6MpkHlffrpfrnLLEErrorCode__v_;
+text: .text%__1cTFontInstanceAdapterPgetGlyphAdvance6kMHrnHLEPoint__v_;
+text: .text%__1cQt2kScalerContextPGenerateMetrics6MHpnIhsGGlyph_pnNhsFixedPoint2__v_;
+text: .text%T2K_RenderGlyph;
+text: .text%T2K_GetSbits: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2k.o;
+text: .text%FindGlyph_blocClass;
+text: .text%FindBitmapSizeTable: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2ksbit.o;
+text: .text%T2K_RenderGlyphInternal: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2k.o;
+text: .text%T2K_PurgeMemoryInternal: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2k.o;
+text: .text%IsFigure;
+text: .text%IsFigure_cmapClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/truetype.o;
+text: .text%AccumulateGlyphContours;
+text: .text%MatrixTimesVector: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2k.o;
+text: .text%TTScalerHintGlyph;
+text: .text%InitTheKeyByTrans;
+text: .text%SetElementPointers;
+text: .text%CopyBytes;
+text: .text%AdjustPhantoms: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/HintGlyph.o;
+text: .text%AdjustPhantomAxis: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/HintGlyph.o;
+text: .text%OffsetAxis: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/HintGlyph.o;
+text: .text%CreateGlyphElement: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/HintGlyph.o;
+text: .text%RunFontProgram;
+text: .text%SetUpProgramPtrs: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/InterpreterGlue.o;
+text: .text%SetGlobalGSStackData: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/InterpreterGlue.o;
+text: .text%fnt_Execute;
+text: .text%fnt_InnerExecute;
+text: .text%fnt_NPUSHB;
+text: .text%fnt_PushSomeBytes: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Fnt.o;
+text: .text%fnt_FDEF;
+text: .text%fnt_SkipPushCrap;
+text: .text%PrepareTheCVT;
+text: .text%ScaleCVT: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/InterpreterGlue.o;
+text: .text%FixedMultiplyRound;
+text: .text%util_FixMulRoundPositive: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/PinkGlue.o;
+text: .text%RunPreProgram;
+text: .text%SetGlobalGSMapping;
+text: .text%fnt_NPUSHW;
+text: .text%fnt_PushSomeWords: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Fnt.o;
+text: .text%fnt_PUSHB;
+text: .text%fnt_PUSHW0;
+text: .text%fnt_PUSHW;
+text: .text%fnt_PUSHB0;
+text: .text%fnt_SPVTCA;
+text: .text%fnt_Check_PF_Proj;
+text: .text%fnt_MPPEM;
+text: .text%fnt_ProjectIntegerPPEM: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Fnt.o;
+text: .text%GrowStackForPush;
+text: .text%fnt_BinaryOperand;
+text: .text%fnt_WS;
+text: .text%fnt_SVTCA_1;
+text: .text%Mul26Dot6;
+text: .text%fnt_SVTCA_0;
+text: .text%Div26Dot6;
+text: .text%fnt_DUP;
+text: .text%fnt_SWAP;
+text: .text%fnt_SetRoundState;
+text: .text%fnt_CALL;
+text: .text%fnt_RS;
+text: .text%fnt_IF;
+text: .text%fnt_ELSE;
+text: .text%fnt_GETINFO;
+text: .text%fnt_SCANCTRL;
+text: .text%fnt_SCANTYPE;
+text: .text%fnt_EIF;
+text: .text%fnt_SetElementPtr;
+text: .text%fnt_SROUND;
+text: .text%fnt_SetRoundValues: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/FntRare.o;
+text: .text%fnt_MIAP;
+text: .text%fnt_GetCVTEntryFast;
+text: .text%ShortFracMul;
+text: .text%fnt_YProject;
+text: .text%fnt_SuperRound;
+text: .text%fnt_YMovePoint;
+text: .text%fnt_RoundToGrid;
+text: .text%fnt_SRP2;
+text: .text%fnt_SRP1;
+text: .text%fnt_IP;
+text: .text%fnt_GC;
+text: .text%fnt_WCVTP;
+text: .text%fnt_RCVT;
+text: .text%fnt_ROUND;
+text: .text%fnt_ROLL;
+text: .text%fnt_POP;
+text: .text%fnt_SCVTCI;
+text: .text%fnt_UnaryOperand;
+text: .text%fnt_CINDEX;
+text: .text%fnt_MINDEX;
+text: .text%fnt_SRP0;
+text: .text%fnt_WCVTF;
+text: .text%fnt_XProject;
+text: .text%fnt_XMovePoint;
+text: .text%fnt_DELTAC1;
+text: .text%fnt_DeltaEngine: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Fnt.o;
+text: .text%fnt_DELTAC2;
+text: .text%fnt_SDB;
+text: .text%fnt_DELTAC3;
+text: .text%RunGlyphProgram;
+text: .text%fnt_JROF;
+text: .text%fnt_MIRP;
+text: .text%fnt_DELTAP1;
+text: .text%fnt_DELTAP2;
+text: .text%fnt_ALIGNRP;
+text: .text%fnt_MDAP;
+text: .text%fnt_RoundToDoubleGrid;
+text: .text%fnt_MDRP;
+text: .text%fnt_IUP;
+text: .text%CorrectUnscaledOutline;
+text: .text%fs_CalculateBounds;
+text: .text%fs_FindBitMapSize4;
+text: .text%fs_dropOutVal;
+text: .text%sc_FindExtrema4;
+text: .text%ReleasePerFontMemory;
+text: .text%fs_ContourScan3;
+text: .text%sc_ScanChar2;
+text: .text%sc_lineInit: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/sc.o;
+text: .text%sc_DrawParabola: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/sc.o;
+text: .text%sc_lineGenRows: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/sc.o;
+text: .text%sc_markRows: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/sc.o;
+text: .text%sortRows: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/sc.o;
+text: .text%sc_wnNrowFill: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/sc.o;
+text: .text%tsi_DeleteScanConv;
+text: .text%T2K_PurgeMemory;
+text: .text%fnt_FLIPOFF;
+text: .text%fnt_FLIPON;
+text: .text%fnt_JMPR;
+text: .text%fnt_GPV;
+text: .text%fnt_SPVFS;
+text: .text%fnt_ComputeAndCheck_PF_Proj;
+text: .text%ShortFracDot;
+text: .text%fnt_Project;
+text: .text%fnt_MovePoint;
+text: .text%__1cMLayoutEngineUadjustGlyphPositions6MpkHllcpHlpfrnLLEErrorCode__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/LayoutEngine.o;
+text: .text%__1cLGlyphLayoutRupdateGlyphVector6MpnHJNIEnv__pnI_jobject_i_v_;
+text: .text%__1cJinitGVIDs6FpnHJNIEnv__pnI_jobject__c_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/GlyphLayout.o;
+text: .text%__1cMLayoutEngineJgetGlyphs6kMpLLrnLLEErrorCode__v_;
+text: .text%__1cMLayoutEngineOgetCharIndices6kMpllrnLLEErrorCode__v_;
+text: .text%__1cLGlyphLayout2T6M_v_;
+text: .text%__SLIP.DELETER__A: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/BOyhlP1XkHISKWzbx4EZ.o;
+text: .text%__1cMLayoutEngine2T6M_v_;
+text: .text%__1cMLayoutEngineFreset6M_v_;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getGlyphVectorOutline;
+text: .text%__1cLGlyphVector2t6MpnHJNIEnv__pnN_jdoubleArray_4CCpnKfontObject__v_;
+text: .text%__1cLGlyphVectorOgetGlyphVector6MpnI_jobject__v_;
+text: .text%__1cLGlyphVectorNgetGlyphCodes6MpnI_jobject__v_;
+text: .text%__1cLGlyphVectorNsetGlyphCodes6MpnK_jintArray__v_;
+text: .text%__1cLGlyphVectorOallocateGlyphs6Mi_v_;
+text: .text%__1cLGlyphVectorMsetNumGlyphs6Mi_v_;
+text: .text%__1cLGlyphVectorMgetPositions6MpnI_jobject__v_;
+text: .text%__1cLGlyphVectorMsetPositions6MpnM_jfloatArray__v_;
+text: .text%__1cLGlyphVectorRallocatePositions6M_v_;
+text: .text%__1cLGlyphVectorNgetTransforms6MpnI_jobject__v_;
+text: .text%__1cLGlyphVectorNsetTransforms6MpnN_jdoubleArray_pnK_jintArray__v_;
+text: .text%__1cLGlyphVectorKgetOutline6Mff_pnI_jobject__;
+text: .text%__1cLGlyphVectorQgetGlyphsOutline6Miiff_pnI_jobject__;
+text: .text%__1cLStrikeTable2t6MrknLGlyphVector_pnCTX__v_;
+text: .text%__1cLGlyphVectorOgetGlyphStrike6kMpnCTX__rnGStrike__;
+text: .text%__1cLGeneralPath2t6Mi_v_;
+text: .text%__1cLGlyphVectorJscanGlyph6FrnLGeneralPath_rnGStrike_rnMhsPathSpline_rnLCurveWalker_ffi_v_;
+text: .text%__1cGStrikePGetGlyphOutline6MirnMhsPathSpline__v_;
+text: .text%__1cGStrikeXcompositeStrikeForGlyph6Mri_pnOhsGGlyphStrike__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%__1cOhsGGlyphStrikeHGetPath6MHpnMhsPathSpline_pnNhsFixedPoint2__v_;
+text: .text%__1cQt2kScalerContextMGeneratePath6MHpnMhsPathSpline_pnNhsFixedPoint2__v_;
+text: .text%ApplyPostStyle;
+text: .text%__1cSConvertGlyphToPath6FpknKGlyphClass_pnMhsPathSpline__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/t2kScalerContext.o;
+text: .text%__1cIHSMemoryFClear6FpvL_v_;
+text: .text%__1cGStrikeLGetPathType6Mi_nMhsPathSplineEType__;
+text: .text%__1cOhsGGlyphStrikeLGetPathType6kM_nMhsPathSplineEType__;
+text: .text%__1cLCurveWalkerEInit6MpknNhsPathContour_c_v_;
+text: .text%__1cLCurveWalkerINextQdDuad6M_c_;
+text: .text%__1cLGeneralPathIneedRoom6Mii_C_;
+text: .text%__1cMhsPathSplineGDelete6Fp0_v_;
+text: .text%__1cLGeneralPathIgetShape6MpnHJNIEnv___pnI_jobject__;
+text: .text%__1cHJNIEnv_JNewObject6MpnH_jclass_pnK_jmethodID_E_pnI_jobject__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/FontWrapper.o;
+text: .text%__1cLGeneralPath2T6M_v_;
+text: .text%__1cLStrikeTable2T6M_v_;
+text: .text%__1cLGlyphVector2T6M_v_;
+# SwingSet
+text: .text%Java_sun_awt_font_NativeFontWrapper_getNumFonts;
+text: .text%CountFontObjects;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getFamilyNameByIndex;
+text: .text%__1cNGetFontObject6FI_pnKfontObject__;
+text: .text%__1cPgetNodeByNumber6Fi_pnMfontListNode__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/fontObject.o;
+text: .text%__1cGStrikeVneedsAlgorithmicStyle6FrknNCompositeFont_ipc_v_;
+text: .text%__1cSsfntFileFontObjectLGetFontName6Mri_pkH_;
+text: .text%__1cSsfntFileFontObjectJReadNames6M_v_;
+text: .text%__1cJmakeNameU6FpCih_pH_;
+text: .text%__1cTEqualUnicodeStrings6FpkHip0i_c_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%__1cQCompAsciiUnicode6FpkcpkHi_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%tsi_SHAPET_BOLD_METRICS;
+text: .text%GetDoubleDeltaMetric: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/shapet.o;
+text: .text%ApplyDeltaToHMTX: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/shapet.o;
+text: .text%__1cGStrike2T6M_v_;
+text: .text%__SLIP.DELETER__C: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%__1cUCompositeGlyphMapper2T6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/Strike.o;
+text: .text%__SLIP.DELETER__B: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/ArabicShaping.o;
+text: .text%__1cHCStrike2T6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj/CStrike.o;
+text: .text%__1cIhsRefCntFUnRef6M_v_;
+text: .text%__1cGStrike2T5B6M_v_;
+text: .text%Java_sun_awt_font_GlyphList_initIDs;
+text: .text%Java_sun_awt_font_GlyphList_setupCharData;
+text: .text%__1cLGlyphVectorHsetText6MpnL_jcharArray_ii_v_;
+text: .text%__1cLGlyphVectorKinitGlyphs6MpkHi_v_;
+text: .text%__1cLGlyphVectorNcharsToGlyphs6FrnGStrike_pkHpLi_C_;
+text: .text%__1cLGlyphVectorUpositionAndGetImages6Mff_v_;
+text: .text%__1cLGlyphVectorRallocateImageRefs6M_v_;
+text: .text%__1cGStrikeMprepareCache6Mipc_v_;
+text: .text%__1cOhsGGlyphStrikeMPrepareCache6MLpc_v_;
+text: .text%__1cNGlyphMemCacheNreserveGlyphs6MHLpc_v_;
+text: .text%__1cIMemCacheMreserveSpace6MHLpc_v_;
+text: .text%__1cGStrikeTgetMetricsWithImage6MirnIhsGGlyph_rnNhsFixedPoint2_pc_c_;
+text: .text%__1cOhsGGlyphStrikeTGetMetricsWithImage6MHpnIhsGGlyph_pnNhsFixedPoint2_pc_v_;
+text: .text%__1cOhsGGlyphStrikeNgetEntryImage6MpnThsGGlyphStrikeEntry_Hpc_v_;
+text: .text%__1cNGlyphMemCacheNgetGlyphImage6MLrHpc_pkv_;
+text: .text%__1cIMemCacheJgetMemory6MLrHpc_pkv_;
+text: .text%__1cSX11nrScalerContextYGenerateMetricsWithImage6MHpnIhsGGlyph_pnNhsFixedPoint2__v_;
+text: .text%__1cSX11nrScalerContextNGenerateImage6MHpknIhsGGlyph_pv_v_;
+text: .text%__1cOhsGGlyphStrikeQassignEntryImage6MpnThsGGlyphStrikeEntry_Hpc_v_;
+text: .text%__1cNGlyphMemCacheQassignGlyphImage6MLrnIhsGGlyph_pc_H_;
+text: .text%__1cIMemCacheMassignMemory6MLLpvpc_H_;
+text: .text%__1cIMemCacheIsetEntry6MrnIMemEntry_LpvLpc_v_;
+text: .text%__1cIMemCacheMreleaseEntry6MrnIMemEntry_pc_v_;
+text: .text%Java_sun_awt_font_X11TextRenderer_doDrawGlyphList;
+text: .text%RefineBounds;
+text: .text%Java_sun_awt_font_GlyphList_discardData;
+text: .text%Java_sun_awt_font_GlyphList_setupStringData;
+text: .text%__1cLGlyphVectorJsetString6MpnI_jstring__v_;
diff --git a/jdk/make/sun/font/reorder-sparcv9 b/jdk/make/sun/font/reorder-sparcv9
new file mode 100644
index 0000000..0786bdb
--- /dev/null
+++ b/jdk/make/sun/font/reorder-sparcv9
@@ -0,0 +1,478 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/t2kScalerContext.o;
+text: .text%__SLIP.INIT_A: t2kScalerContext.o;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__2t6Mi_v_;
+text: .text%JNI_OnLoad;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getType1FontVar;
+text: .text%Java_sun_awt_font_NativeFontWrapper_registerFonts;
+text: .text%__1cHJNIEnv_QCallObjectMethod6MpnI_jobject_pnK_jmethodID_E_2_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cSsfntFileFontObjectEInit6MpkHipkc4nLFontFormats_i_c_;
+text: .text%__1cOfileFontObjectJReadChunk6MIIpv_pkv_;
+text: .text%__1cSfontfilecachecheck6FpnKfontObject__v_;
+text: .text%__1cOfileFontObjectMReleaseChunk6Mpkv_v_;
+text: .text%__1cNReadNameTable6FpnSsfntFileFontObject__c_;
+text: .text%__1cKfontObjectJReadTable6MIpI_pkv_;
+text: .text%__1cSsfntFileFontObjectNFindTableSize6MIpI_I_;
+text: .text%__1cSVerifyTrueTypeFile6FpnSsfntFileFontObject__c_;
+text: .text%__1cOInitializeCMAP6FrnSsfntFileFontObject_rpC_v_;
+text: .text%__1cOfileFontObjectJreadBlock6MLLpc_v_;
+text: .text%__1cQaddToTheListTail6FipnKfontObject__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cMsetRealStyle6FpnKfontObject__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cSsfntFileFontObjectHGetName6MrH111pH_i_;
+text: .text%__1cMAssignStyles6FipH_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cOUnicodeToLower6FpHi_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cUstrDupASCIItoUNICODE6Fpkcrii_pH_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cScopyAsciiToUnicode6FpkcpHi_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cVUnicodeStringContains6FpHh0h_c_;
+text: .text%__1cQMakeNativeMapper6Fpkc_v_;
+text: .text%__1cOhsDynamicArray4nKMapperPair__2t6Mi_v_;
+text: .text%__1cUX11CharToGlyphMapper2t6MpkchpcHH_v_;
+text: .text%__1cOhsDynamicArray4nKMapperPair__GAppend6Mrkn0A__i_;
+text: .text%__1cKMapperPair2t6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/oBLL8MjgwxxRvfmec0-h.o;
+text: .text%__1cNhsGFontScalerIRegister6FIp0_v_;
+text: .text%__1cOhsDynamicArray4nOFontScalerPair__2t6Mi_v_;
+text: .text%__1cIhsRefCntDRef6M_v_;
+text: .text%__1cOhsDynamicArray4nOFontScalerPair__GAppend6Mrkn0A__i_;
+text: .text%__1cOFontScalerPair2t6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/JSaw_24qJCs_1iN_isFx.o;
+text: .text%__1cOhsDynamicArray4nOFontScalerPair__EFind6kMrkn0A__i_;
+text: .text%__1cTGetNativeFontObject6F_pnOfileFontObject__;
+text: .text%__1cOfileFontObjectEInit6MpkHipkc4nLFontFormats_i_c_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cNX11FontObjectHGetName6MrH111pH_i_;
+text: .text%__1cNX11FontObjectMMakeFontName6M_i_;
+text: .text%__1cOfileFontObjectRGetFontNativeName6kM_pkc_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cOhsDynamicArray4nKMapperPair__EFind6kMrkn0A__i_;
+text: .text%__1cHJNIEnv_JNewObject6MpnH_jclass_pnK_jmethodID_E_pnI_jobject__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/FontWrapper.o;
+text: .text%__1cHJNIEnv_OCallVoidMethod6MpnI_jobject_pnK_jmethodID_E_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/cmaps.o;
+text: .text%__1cHJNIEnv_NCallIntMethod6MpnI_jobject_pnK_jmethodID_E_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cKMapperPair2T6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/oBLL8MjgwxxRvfmec0-h.o;
+text: .text%__1cOfileFontObjectJFileClose6M_v_;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getFullNameByFileName;
+text: .text%__1cNGetFontObject6FpkHi_pnKfontObject__;
+text: .text%__1cOfileFontObjectLGetFileName6kMri_pkH_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%Java_sun_awt_font_NativeFontWrapper_registerCompositeFont;
+text: .text%__1cNCompositeFont2t6MpnHJNIEnv__pnI_jstring__v_;
+text: .text%__1cNCompositeFontJaddRanges6MpnHJNIEnv__pnK_jintArray__v_;
+text: .text%__1cNCompositeFontNaddMaxIndices6MpnHJNIEnv__pnK_jintArray__v_;
+text: .text%__1cNCompositeFontVregisterComponentName6MirnNJStringBuffer__v_;
+text: .text%__1cNCompositeFontHisValid6M_i_;
+text: .text%__1cMregisterFont6FnLFontFormats_pnKfontObject__v_;
+text: .text%__1cQaddToTheListHead6FipnKfontObject__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cNCompositeFontHGetName6MrH111pH_i_;
+text: .text%__1cKfontObjectLGetFileName6kMri_pkH_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/CompositeFont.o;
+text: .text%__SLIP.FINAL__A: t2kScalerContext.o;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__2T6M_v_;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__FReset6M_v_;
+# Test LoadFrame
+text: .text%Java_sun_awt_font_NativeFontWrapper_initializeFont;
+text: .text%FindFontObject;
+text: .text%__1cVequalUnicodeToAsciiNC6FpkHipkci_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cGfindFO6FpkHii_pnKfontObject__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cNCompositeFontJMatchName6MipkHi_c_;
+text: .text%__1cKfontObjectMGetRealStyle6M_kH_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/CompositeFont.o;
+text: .text%__1cKsetFontPtr6FpnHJNIEnv__pnI_jobject_pnKfontObject__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/FontWrapper.o;
+# Test LoadJFrame
+# Test JHello
+text: .text%Java_sun_awt_font_NativeFontWrapper_getFontMetrics;
+text: .text%__1cKgetFontPtr6FpnHJNIEnv__pnI_jobject__pnKfontObject__;
+text: .text%__1cKfontObjectJgetStrike6MrnNFontTransform_CC_rnGStrike__;
+text: .text%__1cKfontObjectLgetScalerID6MrnNFontTransform_CC_nLFontFormats__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/CompositeFont.o;
+text: .text%__1cGStrike2t6MrnKfontObject_rnNFontTransform_CC_v_;
+text: .text%__1cGStrikeNGetLineHeight6MrnNhsFixedPoint2_2222_v_;
+text: .text%__1cNCompositeFontKcountSlots6M_i_;
+text: .text%__1cGStrikeWcompositeStrikeForSlot6Mi_pnOhsGGlyphStrike__;
+text: .text%__1cGStrikePallocateStrikes6M_v_;
+text: .text%__1cGStrikeNallocateDescs6M_v_;
+text: .text%__1cNCompositeFontLgetSlotFont6Mi_pnKfontObject__;
+text: .text%__1cSsfntFileFontObjectJMatchName6MipkHi_c_;
+text: .text%__1cGStrikeQalgorithmicStyle6FrknNCompositeFont_rknKfontObject_i_i_;
+text: .text%__1cNCompositeFontLGetFontName6Mri_pkH_;
+text: .text%__1cSsfntFileFontObjectLgetScalerID6MrnNFontTransform_CC_nLFontFormats__;
+text: .text%__1cPuseNativeScaler6F_i_;
+text: .text%__1cUttContainsHintsTable6FpnSsfntFileFontObject__C_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cGStrike2t6MrnKfontObject_nLFontFormats_rnNFontTransform_CC_v_;
+text: .text%__1cQhsDescriptor_New6FIpkI_pnShsDescriptorHeader__;
+text: .text%__1cYhsDescriptor_ComputeSize6FIpkI_I_;
+text: .text%__1cQhsDescriptor_New6FI_pnShsDescriptorHeader__;
+text: .text%__1cIHSMemoryDNew6FI_pv_;
+text: .text%__1cShsDescriptor_Reset6FpnShsDescriptorHeader__v_;
+text: .text%__1cQhsDescriptor_Add6FpnShsDescriptorHeader_II_pv_;
+text: .text%__1cKVALID_DESC6FpknShsDescriptorHeader__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/hsDescriptor.o;
+text: .text%__1cbBhsDescriptor_UpdateCheckSum6FpnShsDescriptorHeader__v_;
+text: .text%__1cOhsGGlyphStrikeJRefStrike6FpknShsDescriptorHeader__p0_;
+text: .text%__1cOhsDynamicArray4CpnOhsGGlyphStrike__2t6Mi_v_;
+text: .text%__1cIMemCache2t6MHHIc_v_;
+text: .text%__1cIMemEntry2t6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/MemCache.o;
+text: .text%__1cNhsGGlyphCacheKFindStrike6MpknShsDescriptorHeader__pnOhsGGlyphStrike__;
+text: .text%__1cOhsGGlyphStrike2t6MpknShsDescriptorHeader__v_;
+text: .text%__1cRhsDescriptor_Copy6FpknShsDescriptorHeader_p0_3_;
+text: .text%__1cThsDescriptor_Find326FpknShsDescriptorHeader_I_I_;
+text: .text%__1cRhsDescriptor_Find6FpknShsDescriptorHeader_IpIpv_pkv_;
+text: .text%__1cNhsGFontScalerEFind6FI_p0_;
+text: .text%__1cOhsDynamicArray4nOFontScalerPair__DGet6kMi_rkn0A__;
+text: .text%__1cMnrFontScalerNCreateContext6MpknShsDescriptorHeader__pnQhsGScalerContext__;
+text: .text%__1cSX11nrScalerContext2t6MpnKfontObject_pkfcci_v_;
+text: .text%__1cQt2kScalerContext2t6MpnKfontObject_pkfcci_v_;
+text: .text%__1cLhsGT2KCacheIRefEntry6FpnKfontObject_ii_pnIT2KEntry__;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__HForEach6MpFr1pv4_c44_p1_;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__GAppend6Mrk1_i_;
+text: .text%__1cOhsDynamicArray4CpnIT2KEntry__2F6Mi_r1_;
+text: .text%__1cIT2KEntryGGetT2K6M_pnDT2K__;
+text: .text%tsi_NewMemhandler;
+text: .text%t2k_malloc;
+text: .text%__1cIHSMemoryHSoftNew6FI_pv_;
+text: .text%__1cJhsSoftNew4CI_6FrpTAI_1_;
+text: .text%FOGetDataLength;
+text: .text%__1cOfileFontObjectNGetDataLength6M_I_;
+text: .text%New_NonRamInputStream;
+text: .text%tsi_AllocMem;
+text: .text%New_sfntClassLogical;
+text: .text%SetStyling: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%CacheKeyTables_sfntClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%Delete_ttcfClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%Delete_sfnt_OffsetTable: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%Delete_headClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%Delete_hheaClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%Delete_hmtxClass;
+text: .text%Delete_maxpClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%Delete_locaClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%Delete_fpgmClass;
+text: .text%Delete_prepClass;
+text: .text%Delete_cvtClass;
+text: .text%Delete_blocClass;
+text: .text%Delete_ebscClass;
+text: .text%New_ttcfClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%ReadInt32;
+text: .text%ReadFileDataFunc: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/t2kScalerContext.o;
+text: .text%Rewind_InputStream;
+text: .text%New_sfnt_OffsetTable: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%ReadInt16;
+text: .text%New_sfnt_DirectoryEntry: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%GetTableDirEntry_sfntClass;
+text: .text%New_InputStream2;
+text: .text%PreLoadT2KInputStream;
+text: .text%New_headClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%Delete_InputStream;
+text: .text%tsi_DeAllocMem;
+text: .text%t2k_free;
+text: .text%__1cIHSMemoryGDelete6Fpv_v_;
+text: .text%New_hheaClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%New_maxpClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%New_locaClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%GetNumGlyphs_sfntClass;
+text: .text%New_hmtxClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%New_hmtxEmptyClass;
+text: .text%PrimeT2KInputStream;
+text: .text%New_cvtClass;
+text: .text%New_cvtEmptyClass;
+text: .text%Read_cvtClass;
+text: .text%New_fpgmClass;
+text: .text%New_fpgmEmptyClass;
+text: .text%Read_fpgmClass;
+text: .text%ReadSegment;
+text: .text%New_prepClass;
+text: .text%New_prepEmptyClass;
+text: .text%Read_prepClass;
+text: .text%NewT2K;
+text: .text%NewTTHintFontForT2K;
+text: .text%NewTTSHintcalerFont;
+text: .text%OnceOnlyTTFDefInit: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/TTHintFont.o;
+text: .text%fnt_DefaultJumpTable;
+text: .text%ComputeElementSizes;
+text: .text%LargestElementCounts: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/TTHintFont.o;
+text: .text%FixedMultiply;
+text: .text%util_FixMul;
+text: .text%TTScalerNewVariationDefault;
+text: .text%TTScalerNewVariation1Dot1;
+text: .text%InitTTHintTranForT2K;
+text: .text%TTHintTransformAllocation: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/HintTran.o;
+text: .text%InitTheKeyByVary;
+text: .text%InitTheKeyByFont;
+text: .text%InitTheKeyByScaler;
+text: .text%SetupDebugPointers: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/TTHintFont.o;
+text: .text%GetPerFontMemory;
+text: .text%GetPerFontMemoryAllocator;
+text: .text%TTScalerTTHintTranDefault;
+text: .text%SetupScalerDefaultTTD: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/HintTran.o;
+text: .text%TTScalerTTHintTranDeep: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/HintTran.o;
+text: .text%SetupScalerTransform: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/HintTran.o;
+text: .text%SetupGXMatrixFromT2K: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/HintTran.o;
+text: .text%ResetMapping;
+text: .text%TTScalerTTHintTran;
+text: .text%FillBytes;
+text: .text%Magnitude;
+text: .text%MultiplyDivide;
+text: .text%WideMul: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/FixMulDiv.o;
+text: .text%WideDiv: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/FixMulDiv.o;
+text: .text%MapMapping;
+text: .text%convertFixedMatrixToTGraf;
+text: .text%FixedToGCoordinate: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/PinkGlue.o;
+text: .text%FractToGCoordinate: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/PinkGlue.o;
+text: .text%concatTGrafMatrices;
+text: .text%convertTGrafMatrixToFixed;
+text: .text%GCoordinateToFixed: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/PinkGlue.o;
+text: .text%GCoordinateToFract: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/PinkGlue.o;
+text: .text%FixedDivide;
+text: .text%SetGlobalGSDefaults;
+text: .text%InitContourData;
+text: .text%NeededAllocationContourBytes: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/OrientDB.o;
+text: .text%NeededContourWords: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/OrientDB.o;
+text: .text%SetupAllocatedContourData: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/OrientDB.o;
+text: .text%__1cSX11nrScalerContextLCountGlyphs6M_I_;
+text: .text%__1cQt2kScalerContextLCountGlyphs6M_I_;
+text: .text%__1cOhsGGlyphStrikeLinitEntries6MpnThsGGlyphStrikeEntry_i_v_;
+text: .text%__1cSX11nrScalerContextNGetLineHeight6MpnNhsFixedPoint2_2222_v_;
+text: .text%__1cNhsGGlyphCacheJAddStrike6MpnOhsGGlyphStrike__v_;
+text: .text%__1cOhsDynamicArray4CpnOhsGGlyphStrike__GAppend6Mrk1_i_;
+text: .text%__1cThsDescriptor_Delete6FpnShsDescriptorHeader__v_;
+text: .text%__1cGStrikeMGetNumGlyphs6M_i_;
+text: .text%__1cKfontObjectJsetStrike6MpnGStrike_rnNFontTransform_CC_v_;
+text: .text%__1cShsDescriptor_Equal6FpknShsDescriptorHeader_2_c_;
+text: .text%__1cOhsGGlyphStrikeNGetLineHeight6MpnNhsFixedPoint2_2222_v_;
+text: .text%__1cGuseMin6FrnNhsFixedPoint2_1_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/Strike.o;
+text: .text%__1cGuseMax6FrnNhsFixedPoint2_1_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/Strike.o;
+text: .text%__1cNX11FontObjectJMatchName6MipkHi_c_;
+text: .text%__1cNX11FontObjectLgetScalerID6MrnNFontTransform_CC_nLFontFormats__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject_md.o;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getCharMetrics;
+text: .text%getMetrics;
+text: .text%__1cCTXGconcat6Mrk0_v_;
+text: .text%__1cGStrikeLCharToGlyph6MI_I_;
+text: .text%__1cGStrikeJgetMapper6kM_pnRCharToGlyphMapper__;
+text: .text%__1cUCompositeGlyphMapperNCharsToGlyphs6kMipkIpI_v_;
+text: .text%__1cUCompositeGlyphMapperTgetMissingGlyphCode6kM_i_;
+text: .text%__1cOhsGGlyphStrikeJgetMapper6M_pnRCharToGlyphMapper__;
+text: .text%__1cSX11nrScalerContextJgetMapper6M_pnRCharToGlyphMapper__;
+text: .text%__1cOhsDynamicArray4nKMapperPair__DGet6kMi_rkn0A__;
+text: .text%__1cQt2kScalerContextJgetMapper6M_pnRCharToGlyphMapper__;
+text: .text%__1cTnrCharToGlyphMapper2t6MpnUX11CharToGlyphMapper_pnRCharToGlyphMapper_ii_v_;
+text: .text%__1cRCharToGlyphMapperTgetMissingGlyphCode6kM_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/t2kScalerContext.o;
+text: .text%__1cUCompositeGlyphMapperSgetCachedGlyphCode6kMkI_I_;
+text: .text%__1cNCompositeFontOisExcludedChar6MiI_i_;
+text: .text%__1cTnrCharToGlyphMapperNCharsToGlyphs6kMipkIpI_v_;
+text: .text%__1cKCMAPMapperNCharsToGlyphs6kMipkIpI_v_;
+text: .text%__1cWConvertUnicodeToGlyphs6FrnSsfntFileFontObject_rpCipkIpI_v_;
+text: .text%__1cIgetGlyph6FpCI_H_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/cmaps.o;
+text: .text%__1cJgetGlyph46FpCI_H_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/cmaps.o;
+text: .text%__1cUX11CharToGlyphMapperNCharsToGlyphs6kMipkIpI_v_;
+text: .text%__1cUCompositeGlyphMapperSsetCachedGlyphCode6kMkI1ki_v_;
+text: .text%__1cGStrikeKgetMetrics6MirnIhsGGlyph_rnNhsFixedPoint2__c_;
+text: .text%__1cGStrikeXcompositeStrikeForGlyph6Mri_pnOhsGGlyphStrike__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/Strike.o;
+text: .text%__1cOhsGGlyphStrikeKGetMetrics6MHpnIhsGGlyph_pnNhsFixedPoint2__v_;
+text: .text%__1cOhsGGlyphStrikeIgetEntry6Mi_pnThsGGlyphStrikeEntry__;
+text: .text%__1cSX11nrScalerContextPGenerateMetrics6MHpnIhsGGlyph_pnNhsFixedPoint2__v_;
+text: .text%__1cTnrCharToGlyphMapperMgetXCharCode6Mi_i_;
+text: .text%Java_sun_awt_font_NativeFontWrapper_populateAndLayoutGlyphVector;
+text: .text%__1cLGlyphLayout2t6MpnHJNIEnv__pnL_jcharArray_iiipnN_jdoubleArray_6CCpnKfontObject__v_;
+text: .text%__1cJScriptRunEnext6M_c_;
+text: .text%__1cJScriptRunNgetScriptCode6FI_i_;
+text: .text%__1cJScriptRunKsameScript6Fii_c_;
+text: .text%__1cNgetScriptFont6FpnKfontObject_iripc_1_;
+text: .text%__1cNCompositeFontNgetScriptSlot6Mi_i_;
+text: .text%__1cKfontObjectJgetStrike6M_rnGStrike__;
+text: .text%__1cGStrikeTgetMissingGlyphCode6kM_i_;
+text: .text%__1cJScriptRunVgetScriptRangeOffsets6Fi_pkh_;
+text: .text%__1cTFontInstanceAdapter2t6MpnKfontObject_pnGStrike_pnNFontTransform_ii_v_;
+text: .text%__1cNCompositeFontNGetUnitsPerEM6M_kH_;
+text: .text%__1cTFontInstanceAdapterReuclidianDistance6Mff_f_;
+text: .text%__1cVCompositeLayoutEngine2t6MpknTFontInstanceAdapter_ii_v_;
+text: .text%__1cMLayoutEngine2t6MpknOLEFontInstance_ii_v_;
+text: .text%__1cVCompositeLayoutEngineLlayoutChars6MpkHiiicffrnLLEErrorCode__i_;
+text: .text%__1cVCompositeLayoutEngineNcomputeGlyphs6MpkHiiicrpIrpirnLLEErrorCode__i_;
+text: .text%__1cVCompositeLayoutEngineQmapCharsToGlyphs6MpkHiiccrpIrpirnLLEErrorCode__v_;
+text: .text%__1cTFontInstanceAdapterUmapCharsToWideGlyphs6kMpkHiicpknMLECharMapper_pI_v_;
+text: .text%__1cTFontInstanceAdapterSmapCharToWideGlyph6kMIpknMLECharMapper__I_;
+text: .text%__1cRDefaultCharMapperHmapChar6kMI_I_;
+text: .text%__1cROpenTypeUtilitiesGsearch6FIpkIi_i_;
+text: .text%__1cROpenTypeUtilitiesHhighBit6Fi_W_;
+text: .text%__1cVCompositeLayoutEngineOpositionGlyphs6MpkIiffrpfrnLLEErrorCode__v_;
+text: .text%__1cTFontInstanceAdapterTgetWideGlyphAdvance6kMIrnHLEPoint__v_;
+text: .text%__1cLGlyphLayoutRupdateGlyphVector6MpnHJNIEnv__pnI_jobject_i_v_;
+text: .text%__1cJinitGVIDs6FpnHJNIEnv__pnI_jobject__c_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/GlyphLayout.o;
+text: .text%__1cVCompositeLayoutEngineJgetGlyphs6kMpIIrnLLEErrorCode__v_;
+text: .text%__1cMLayoutEngineOgetCharIndices6kMpiirnLLEErrorCode__v_;
+text: .text%__1cLGlyphLayout2T6M_v_;
+text: .text%__SLIP.DELETER__A: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/BOyhlP1XkHISKWzbx4EZ.o;
+text: .text%__1cVCompositeLayoutEngine2T6M_v_;
+text: .text%__1cVCompositeLayoutEngineFreset6M_v_;
+text: .text%__1cMLayoutEngineFreset6M_v_;
+text: .text%__1cMLayoutEngine2T5B6M_v_;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getGlyphVectorOutline;
+text: .text%__1cLGlyphVector2t6MpnHJNIEnv__pnN_jdoubleArray_4CCpnKfontObject__v_;
+text: .text%__1cLGlyphVectorOgetGlyphVector6MpnI_jobject__v_;
+text: .text%__1cLGlyphVectorNgetGlyphCodes6MpnI_jobject__v_;
+text: .text%__1cLGlyphVectorNsetGlyphCodes6MpnK_jintArray__v_;
+text: .text%__1cLGlyphVectorOallocateGlyphs6Mi_v_;
+text: .text%__1cLGlyphVectorMsetNumGlyphs6Mi_v_;
+text: .text%__1cLGlyphVectorMgetPositions6MpnI_jobject__v_;
+text: .text%__1cLGlyphVectorMsetPositions6MpnM_jfloatArray__v_;
+text: .text%__1cLGlyphVectorRallocatePositions6M_v_;
+text: .text%__1cLGlyphVectorNgetTransforms6MpnI_jobject__v_;
+text: .text%__1cLGlyphVectorNsetTransforms6MpnN_jdoubleArray_pnK_jintArray__v_;
+text: .text%__1cLGlyphVectorKgetOutline6Mff_pnI_jobject__;
+text: .text%__1cLGlyphVectorQgetGlyphsOutline6Miiff_pnI_jobject__;
+text: .text%__1cLStrikeTable2t6MrknLGlyphVector_pnCTX__v_;
+text: .text%__1cLGlyphVectorOgetGlyphStrike6kMpnCTX__rnGStrike__;
+text: .text%__1cLGeneralPath2t6Mi_v_;
+text: .text%__1cLGlyphVectorJscanGlyph6FrnLGeneralPath_rnGStrike_rnMhsPathSpline_rnLCurveWalker_ffi_v_;
+text: .text%__1cGStrikePGetGlyphOutline6MirnMhsPathSpline__v_;
+text: .text%__1cOhsGGlyphStrikeHGetPath6MHpnMhsPathSpline_pnNhsFixedPoint2__v_;
+text: .text%__1cSX11nrScalerContextMGeneratePath6MHpnMhsPathSpline_pnNhsFixedPoint2__v_;
+text: .text%__1cQt2kScalerContextMGeneratePath6MHpnMhsPathSpline_pnNhsFixedPoint2__v_;
+text: .text%__1cQt2kScalerContextKSetupTrans6M_pnDT2K__;
+text: .text%T2K_NewTransformation;
+text: .text%GetUPEM;
+text: .text%util_EuclidianDistance;
+text: .text%util_FixDiv;
+text: .text%NewTTHintTranForT2K;
+text: .text%ExtractUnitVectors;
+text: .text%SetOneUnitAxis: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/t2k.o;
+text: .text%T2K_NewTransformationInternal: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/t2k.o;
+text: .text%T2KDoGriddingSetUp: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/t2k.o;
+text: .text%GetMaxPoints;
+text: .text%ag_HintInit;
+text: .text%GetStreamForTable;
+text: .text%ComputeGlobalHints;
+text: .text%MedianHeight: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/ghints.o;
+text: .text%GetGlyphByCharCode;
+text: .text%LoadCMAP: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%New_cmapClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%SizeInStream;
+text: .text%Compute_cmapClass_GlyphIndex: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%Compute_cmapClass_Index0: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%GetGlyphByIndex;
+text: .text%New_GlyphClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%GetYMax: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/ghints.o;
+text: .text%Delete_GlyphClass;
+text: .text%util_SortShortArray;
+text: .text%GetYMin: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/ghints.o;
+text: .text%ag_AutoFindStems;
+text: .text%ag_IsHinthandle: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_ProcessOutline: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_AnalyzeChar: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_ComputeTangents: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_DoubleNorm: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_MarkPoints: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_FindXandYExtrema: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_PrevDifferentXValue: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_PrevDifferentYValue: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_YDist: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_XDist: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_FindInflections: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_FDist: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_FindPointPairs: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_BlackAndParallell: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_Height;
+text: .text%ag_FindLinks: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%ag_GetStems: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%Purge_cmapMemory;
+text: .text%Delete_cmapClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%ag_SetHintInfo;
+text: .text%ag_SetScale;
+text: .text%ag_SetUpCvt: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/autogrid.o;
+text: .text%GetFontWideOutlineMetrics;
+text: .text%T2K_TransformYFunits;
+text: .text%T2K_TransformXFunits;
+text: .text%T2K_RenderGlyph;
+text: .text%T2K_RenderGlyphInternal: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/t2k.o;
+text: .text%T2K_PurgeMemoryInternal: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/t2k.o;
+text: .text%IsFigure;
+text: .text%IsFigure_cmapClass: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/truetype.o;
+text: .text%AccumulateGlyphContours;
+text: .text%ApplyPostStyle;
+text: .text%__1cSConvertGlyphToPath6FpknKGlyphClass_pnMhsPathSpline__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/t2kScalerContext.o;
+text: .text%__1cIHSMemoryFClear6FpvI_v_;
+text: .text%T2K_PurgeMemory;
+text: .text%__1cGStrikeLGetPathType6Mi_nMhsPathSplineEType__;
+text: .text%__1cOhsGGlyphStrikeLGetPathType6kM_nMhsPathSplineEType__;
+text: .text%__1cLCurveWalkerEInit6MpknNhsPathContour_c_v_;
+text: .text%__1cLCurveWalkerINextQdDuad6M_c_;
+text: .text%__1cLGeneralPathIneedRoom6Mii_C_;
+text: .text%__1cMhsPathSplineGDelete6Fp0_v_;
+text: .text%__1cLGeneralPathIgetShape6MpnHJNIEnv___pnI_jobject__;
+text: .text%__1cLGeneralPath2T6M_v_;
+text: .text%__1cLStrikeTable2T6M_v_;
+text: .text%__1cLGlyphVector2T6M_v_;
+# SwingSet
+text: .text%__1cGStrikeVneedsAlgorithmicStyle6FrknNCompositeFont_ipc_v_;
+text: .text%__1cSsfntFileFontObjectLGetFontName6Mri_pkH_;
+text: .text%__1cSsfntFileFontObjectJReadNames6M_v_;
+text: .text%__1cJmakeNameU6FpCih_pH_;
+text: .text%__1cTEqualUnicodeStrings6FpkHip0i_c_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/Strike.o;
+text: .text%__1cNX11FontObjectLGetFontName6Mri_pkH_;
+text: .text%__1cUstrDupASCIItoUNICODE6Fpkcrii_pH_;
+text: .text%__1cQCompAsciiUnicode6FpkcpkHi_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/Strike.o;
+text: .text%__1cTtype1FileFontObjectLGetFontInfo6M_pnKt1FontInfo__;
+text: .text%__1cOfileFontObjectYGetFontLocalPlatformName6kM_pkc_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cTtype1FileFontObjectIOpenFont6MpkcpnLsDataRecord__i_;
+text: .text%__1cTtype1FileFontObjectINextChar6MpnLsDataRecord__i_;
+text: .text%__1cTtype1FileFontObjectJNextToken6MpnLsDataRecord_pci_i_;
+text: .text%__1cTtype1FileFontObjectKSkipSpaces6MpnLsDataRecord__i_;
+text: .text%__1cTtype1FileFontObjectJCloseFont6MpnLsDataRecord__v_;
+text: .text%__1cTtype1FileFontObjectODeleteFontInfo6MpnKt1FontInfo__v_;
+text: .text%__1cTtype1FileFontObjectHGetName6MrH111pH_i_;
+text: .text%__1cJustr_copy6FpH0_i_;
+text: .text%GetConverter: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/cmaps.o;
+text: .text%makeNativeToUnicodeArray;
+text: .text%__1cKCreateCMAP6FpCpH_0_;
+text: .text%__1cJgetGlyph26FpCI_H_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/cmaps.o;
+text: .text%__1cUX11CharToGlyphMapperNAddAsciiChars6M_v_;
+text: .text%__1cMj_strcasestr6Fpkc1_pc_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/cmaps.o;
+text: .text%__1cJupcasestr6Fpc_0_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/cmaps.o;
+text: .text%__1cQCreateSymbolCMAP6FpCpH_0_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/cmaps.o;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getNumFonts;
+text: .text%CountFontObjects;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getFamilyNameByIndex;
+text: .text%__1cNGetFontObject6FI_pnKfontObject__;
+text: .text%__1cPgetNodeByNumber6Fi_pnMfontListNode__: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/fontObject.o;
+text: .text%__1cKfindByFont6FrpnIT2KEntry_pv3_c_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/t2kScalerContext.o;
+text: .text%__1cGStrike2T6M_v_;
+text: .text%__SLIP.DELETER__B: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/ArabicLayoutEngine.o;
+text: .text%__1cUCompositeGlyphMapper2T6M_v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/Strike.o;
+text: .text%__1cIhsRefCntFUnRef6M_v_;
+text: .text%__1cNt2kFontScalerNCreateContext6MpknShsDescriptorHeader__pnQhsGScalerContext__;
+text: .text%__1cQt2kScalerContextNGetLineHeight6MpnNhsFixedPoint2_2222_v_;
+text: .text%__1cLhsMagnitude6Fii_i_;
+text: .text%__1cGhsWideDMul6Mii_p0_;
+text: .text%__1cGhsWideESqrt6kM_i_;
+text: .text%__1cJhsFracDiv6Fii_i_;
+text: .text%__1cGhsWideDDiv6Mi_p0_;
+text: .text%__1cGhsWideGAsLong6kM_i_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/hsFixMath.o;
+text: .text%__1cRProjectUnitVector6FiiiiiipnNhsFixedPoint2__v_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/t2kScalerContext.o;
+text: .text%__1cJhsFracMul6Fii_i_;
+text: .text%__1cLgetGlyph1046FpCI_H_: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/cmaps.o;
+text: .text%Java_sun_awt_font_GlyphList_initIDs;
+text: .text%Java_sun_awt_font_GlyphList_setupCharData;
+text: .text%__1cLGlyphVectorHsetText6MpnL_jcharArray_ii_v_;
+text: .text%__1cLGlyphVectorKinitGlyphs6MpkHi_v_;
+text: .text%__1cLGlyphVectorNcharsToGlyphs6FrnGStrike_pkHpIi_C_;
+text: .text%__1cLGlyphVectorUpositionAndGetImages6Mff_v_;
+text: .text%__1cLGlyphVectorRallocateImageRefs6M_v_;
+text: .text%__1cGStrikeMprepareCache6Mipc_v_;
+text: .text%__1cOhsGGlyphStrikeMPrepareCache6MIpc_v_;
+text: .text%__1cNGlyphMemCacheNreserveGlyphs6MHIpc_v_;
+text: .text%__1cIMemCacheMreserveSpace6MHIpc_v_;
+text: .text%__1cGStrikeTgetMetricsWithImage6MirnIhsGGlyph_rnNhsFixedPoint2_pc_c_;
+text: .text%__1cOhsGGlyphStrikeTGetMetricsWithImage6MHpnIhsGGlyph_pnNhsFixedPoint2_pc_v_;
+text: .text%__1cOhsGGlyphStrikeNgetEntryImage6MpnThsGGlyphStrikeEntry_Hpc_v_;
+text: .text%__1cNGlyphMemCacheNgetGlyphImage6MIrHpc_pkv_;
+text: .text%__1cIMemCacheJgetMemory6MIrHpc_pkv_;
+text: .text%__1cSX11nrScalerContextYGenerateMetricsWithImage6MHpnIhsGGlyph_pnNhsFixedPoint2__v_;
+text: .text%__1cSX11nrScalerContextNGenerateImage6MHpknIhsGGlyph_pv_v_;
+text: .text%__1cOhsGGlyphStrikeQassignEntryImage6MpnThsGGlyphStrikeEntry_Hpc_v_;
+text: .text%__1cNGlyphMemCacheQassignGlyphImage6MIrnIhsGGlyph_pc_H_;
+text: .text%__1cIMemCacheMassignMemory6MIIpvpc_H_;
+text: .text%__1cIMemCacheIsetEntry6MrnIMemEntry_IpvIpc_v_;
+text: .text%__1cIMemCacheMreleaseEntry6MrnIMemEntry_pc_v_;
+text: .text%Java_sun_java2d_loops_DrawGlyphList_DrawGlyphList;
+text: .text%drawGlyphList: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/DrawGlyphList.o;
+text: .text%Java_sun_awt_font_GlyphList_discardData;
+text: .text%Java_sun_awt_font_GlyphList_setupStringData;
+text: .text%__1cLGlyphVectorJsetString6MpnI_jstring__v_;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getFamilyName;
+text: .text%lookupName: OUTPUTDIR/tmp/sun/sun.awt.font/fontmanager/obj64/FontWrapper.o;
diff --git a/jdk/make/sun/font/t2k/FILES_c.gmk b/jdk/make/sun/font/t2k/FILES_c.gmk
new file mode 100644
index 0000000..65605d7
--- /dev/null
+++ b/jdk/make/sun/font/t2k/FILES_c.gmk
@@ -0,0 +1,67 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c_shared = \
+ autogrid.c \
+ ghints.c \
+ glyph.c \
+ hstrat97.c \
+ t2ksc.c \
+ scoder.c \
+ shapet.c \
+ t1.c \
+ t1hint.c \
+ t2k.c \
+ t2kstrm.c \
+ truetype.c \
+ tsimem.c \
+ util.c \
+ t2ksbit.c \
+ FixMulDiv.c \
+ Fnt.c \
+ FntDebug.c \
+ FntInit.c \
+ FntRare.c \
+ FntUtilities.c \
+ FontMath.c \
+ GlyphOutline.c \
+ HintGlyph.c \
+ HintIO.c \
+ HintTran.c \
+ InterpreterGlue.c \
+ PinkGlue.c \
+ TTHintFont.c \
+ HintScan.c \
+ sc.c \
+ Orient.c \
+ OrientDB.c \
+ scalerMethods.c
+
+FILES_cpp_shared = \
+ GeneralPath.cpp \
+ t2kScalerMethods.cpp
+
+FILES_c = $(FILES_c_shared) $(FILES_c_platform)
+FILES_cpp = $(FILES_cpp_shared) $(FILES_cpp_platform)
diff --git a/jdk/make/sun/font/t2k/Makefile b/jdk/make/sun/font/t2k/Makefile
new file mode 100644
index 0000000..93d2e59
--- /dev/null
+++ b/jdk/make/sun/font/t2k/Makefile
@@ -0,0 +1,126 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# WARNING: Make sure the OPENJDK plugs are up-to-date, see make/common/internal/BinaryPlugs.gmk
+
+#
+# Makefile for building t2k rasteriser.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.font
+LIBRARY = t2k
+PRODUCT = sun
+
+# Indicate we want the C++ compiler to do the linking.
+CPLUSPLUSLIBRARY=true
+
+# Part of the sun.font package, but doesn't rebuild classes (except
+# for a few ones with native methods) so shouldn't clobber them.
+DONT_CLOBBER_CLASSES=true
+
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Use higher optimization level
+#
+_OPT = $(CC_HIGHER_OPT)
+
+#
+# Files
+#
+include FILES_c.gmk
+
+FILES_export = \
+ java/awt/Font.java \
+ sun/font/FileFont.java \
+ sun/font/FontManager.java \
+ sun/font/GlyphList.java \
+ sun/font/NativeFont.java \
+ sun/font/StrikeCache.java \
+ sun/font/T2KFontScaler.java
+
+ifeq ($(PLATFORM), windows)
+
+ # Files built here do not compile with warning level 3 if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+
+ # t2k imports several shared methods from fontmanager.dll
+ LDLIBS += user32.lib $(OBJDIR)/../../../sun.font/fontmanager/$(OBJDIRNAME)/fontmanager.lib
+
+ OTHER_CFLAGS += -DCC_NOEX
+ OTHER_CXXFLAGS += -DCC_NOEX
+
+endif # PLATFORM
+
+#
+# In the OpenJDK mode we are not building anything
+#
+ifndef OPENJDK
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+endif
+
+#
+# Add to the ambient vpath to pick up files in subdirectories
+#
+vpath %.c $(SHARE_SRC)/share/native/$(PKGDIR)
+vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)
+vpath %.c $(CLOSED_SRC)/share/native/$(PKGDIR)
+vpath %.c $(CLOSED_SRC)/share/native/$(PKGDIR)/t2k
+vpath %.c $(CLOSED_SRC)/share/native/$(PKGDIR)/t2k/ttHints
+
+vpath %.cpp $(SHARE_SRC)/native/$(PKGDIR)
+vpath %.cpp $(CLOSED_SRC)/share/native/$(PKGDIR)
+
+# Libraries to link, and other C flags.
+#
+# setup the list of libraries to link in...
+ifneq ($(PLATFORM), windows)
+ OTHER_LDLIBS += $(LIBM) $(LIBCXX) -lfontmanager
+ ifeq ($(PLATFORM), linux)
+ ifeq ("$(CC_VER_MAJOR)", "3")
+ OTHER_LDLIBS += -Wl,-Bstatic -lgcc_eh -Wl,-Bdynamic
+ endif
+ else
+ ifeq ($(PLATFORM), solaris)
+ OTHER_LDLIBS += -lawt -L$(LIBDIR)/$(LIBARCH)/xawt -lmawt
+ endif
+ endif
+endif
+
+
+# set up compile flags..
+
+CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR) \
+ -I$(CLOSED_SRC)/share/native/$(PKGDIR)/t2k \
+ -I$(CLOSED_SRC)/share/native/$(PKGDIR) \
+ -I$(SHARE_SRC)/share/native/$(PKGDIR) \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR) \
+ -I$(SHARE_SRC)/native/sun/java2d/loops \
+ -I$(SHARE_SRC)/native/sun/java2d/pipe \
+ -I$(PLATFORM_SRC)/native/sun/java2d \
+ -I$(SHARE_SRC)/native/sun/java2d \
+ -I$(TEMPDIR)/../fontmanager/CClassHeaders
diff --git a/jdk/make/sun/font/t2k/mapfile-vers b/jdk/make/sun/font/t2k/mapfile-vers
new file mode 100644
index 0000000..81c90c4
--- /dev/null
+++ b/jdk/make/sun/font/t2k/mapfile-vers
@@ -0,0 +1,49 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_sun_font_T2KFontScaler_createScalerContextNative;
+ Java_sun_font_T2KFontScaler_disposeNativeScaler;
+ Java_sun_font_T2KFontScaler_getFontMetricsNative;
+ Java_sun_font_T2KFontScaler_getGlyphAdvanceNative;
+ Java_sun_font_T2KFontScaler_getGlyphCodeNative;
+ Java_sun_font_T2KFontScaler_getGlyphImageNative;
+ Java_sun_font_T2KFontScaler_getGlyphMetricsNative;
+ Java_sun_font_T2KFontScaler_getGlyphOutlineBoundsNative;
+ Java_sun_font_T2KFontScaler_getGlyphOutlineNative;
+ Java_sun_font_T2KFontScaler_getGlyphVectorOutlineNative;
+ Java_sun_font_T2KFontScaler_getLayoutTableCacheNative;
+ Java_sun_font_T2KFontScaler_getMissingGlyphCodeNative;
+ Java_sun_font_T2KFontScaler_getNumGlyphsNative;
+ Java_sun_font_T2KFontScaler_getUnitsPerEMNative;
+ Java_sun_font_T2KFontScaler_initIDs;
+ Java_sun_font_T2KFontScaler_initNativeScaler;
+ Java_sun_font_T2KFontScaler_getGlyphPointNative;
+ local:
+ *;
+};
diff --git a/jdk/make/sun/headless/Makefile b/jdk/make/sun/headless/Makefile
new file mode 100644
index 0000000..b1e1ebf
--- /dev/null
+++ b/jdk/make/sun/headless/Makefile
@@ -0,0 +1,46 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+HEADLESS = true
+NO_ROBOT = true
+MOTIF_VERSION = none
+MOTIF_VERSION_STRING=none
+LIB_LOCATION = $(LIBDIR)/$(LIBARCH)/headless
+
+PACKAGE = sun.awt
+LIBRARY = mawt
+LIBRARY_OUTPUT = headless
+PRODUCT = sun
+
+include $(BUILDDIR)/common/Defs.gmk
+
+ifdef BUILD_HEADLESS
+ include $(BUILDDIR)/sun/awt/mawt.gmk
+else
+ all build clean clobber ::
+ # do nothing case
+endif
+
diff --git a/jdk/make/sun/headless/mapfile-vers b/jdk/make/sun/headless/mapfile-vers
new file mode 100644
index 0000000..f27f007
--- /dev/null
+++ b/jdk/make/sun/headless/mapfile-vers
@@ -0,0 +1,106 @@
+#
+# Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ JNI_OnLoad;
+
+ Java_sun_java2d_x11_X11PMBlitLoops_nativeBlit;
+ Java_sun_java2d_x11_X11PMBlitBgLoops_nativeBlitBg;
+ Java_sun_java2d_x11_X11Renderer_XFillSpans;
+ Java_sun_java2d_x11_X11Renderer_XDrawArc;
+ Java_sun_java2d_x11_X11Renderer_XDrawLine;
+ Java_sun_java2d_x11_X11Renderer_XDrawOval;
+ Java_sun_java2d_x11_X11Renderer_XDrawPoly;
+ Java_sun_java2d_x11_X11Renderer_XDrawRect;
+ Java_sun_java2d_x11_X11Renderer_XDrawRoundRect;
+ Java_sun_java2d_x11_X11Renderer_XDoPath;
+ Java_sun_java2d_x11_X11Renderer_XFillArc;
+ Java_sun_java2d_x11_X11Renderer_XFillOval;
+ Java_sun_java2d_x11_X11Renderer_XFillPoly;
+ Java_sun_java2d_x11_X11Renderer_XFillRect;
+ Java_sun_java2d_x11_X11Renderer_XFillRoundRect;
+ Java_sun_java2d_x11_X11Renderer_devCopyArea;
+ Java_sun_java2d_x11_X11SurfaceData_initIDs;
+ Java_sun_java2d_x11_X11SurfaceData_initOps;
+ Java_sun_java2d_x11_X11SurfaceData_isDrawableValid;
+ Java_sun_java2d_x11_X11SurfaceData_initSurface;
+ Java_sun_java2d_x11_X11SurfaceData_setInvalid;
+ Java_sun_java2d_x11_X11SurfaceData_XCreateGC;
+ Java_sun_java2d_x11_X11SurfaceData_XResetClip;
+ Java_sun_java2d_x11_X11SurfaceData_XSetClip;
+ Java_sun_java2d_x11_X11SurfaceData_XSetCopyMode;
+ Java_sun_java2d_x11_X11SurfaceData_XSetXorMode;
+ Java_sun_java2d_x11_X11SurfaceData_XSetForeground;
+
+ X11SurfaceData_GetOps;
+ Java_java_awt_Font_initIDs;
+ Java_sun_font_FontManager_getFontConfig;
+ Java_sun_font_FontManager_getFontConfigAASettings;
+ Java_sun_font_FontManager_getFontPath;
+ Java_sun_font_FontManager_setNativeFontPath;
+ Java_sun_font_FontManager_populateFontFileNameMap;
+
+ Java_sun_awt_FontDescriptor_initIDs;
+ Java_sun_awt_PlatformFont_initIDs;
+
+ Java_sun_print_CUPSPrinter_initIDs;
+ Java_sun_print_CUPSPrinter_getCupsServer;
+ Java_sun_print_CUPSPrinter_getCupsPort;
+ Java_sun_print_CUPSPrinter_canConnect;
+ Java_sun_print_CUPSPrinter_getMedia;
+ Java_sun_print_CUPSPrinter_getPageSizes;
+
+ # libfontmanager entry points
+ AWTIsHeadless;
+ AWTCountFonts;
+ AWTLoadFont;
+ AWTFreeFont;
+ AWTFontAscent;
+ AWTFontDescent;
+ AWTFontMinByte1;
+ AWTFontMaxByte1;
+ AWTFontMinCharOrByte2;
+ AWTFontMaxCharOrByte2;
+ AWTFontDefaultChar;
+ AWTFontPerChar;
+ AWTFontMaxBounds;
+ AWTFontTextExtents16;
+ AWTFreeChar;
+ AWTFontGenerateImage;
+ AWTCharAdvance;
+ AWTCharLBearing;
+ AWTCharRBearing;
+ AWTCharAscent;
+ AWTCharDescent;
+ AWTDrawGlyphList;
+
+
+ local:
+ *;
+};
+
diff --git a/jdk/make/sun/headless/reorder-i586 b/jdk/make/sun/headless/reorder-i586
new file mode 100644
index 0000000..84e923b
--- /dev/null
+++ b/jdk/make/sun/headless/reorder-i586
@@ -0,0 +1 @@
+# Temporary file for headless
diff --git a/jdk/make/sun/headless/reorder-sparc b/jdk/make/sun/headless/reorder-sparc
new file mode 100644
index 0000000..84e923b
--- /dev/null
+++ b/jdk/make/sun/headless/reorder-sparc
@@ -0,0 +1 @@
+# Temporary file for headless
diff --git a/jdk/make/sun/headless/reorder-sparcv9 b/jdk/make/sun/headless/reorder-sparcv9
new file mode 100644
index 0000000..84e923b
--- /dev/null
+++ b/jdk/make/sun/headless/reorder-sparcv9
@@ -0,0 +1 @@
+# Temporary file for headless
diff --git a/jdk/make/sun/image/Makefile b/jdk/make/sun/image/Makefile
new file mode 100644
index 0000000..0a264b6
--- /dev/null
+++ b/jdk/make/sun/image/Makefile
@@ -0,0 +1,48 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the generic and vis versions of medialib
+#
+
+BUILDDIR = ../..
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = generic
+
+# solaris-sparc and solaris-sparcv9 both build 'vis'
+ifeq ($(PLATFORM),solaris)
+ ifeq ($(ARCH),sparc)
+ SUBDIRS += vis
+ endif
+ ifeq ($(ARCH),sparcv9)
+ SUBDIRS += vis
+ endif
+endif
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/sun/image/generic/FILES_c.gmk b/jdk/make/sun/image/generic/FILES_c.gmk
new file mode 100644
index 0000000..1486337
--- /dev/null
+++ b/jdk/make/sun/image/generic/FILES_c.gmk
@@ -0,0 +1,96 @@
+#
+# Copyright 1998-2003 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+IMAGE_AFFINE_FILES = \
+ mlib_ImageAffine_NN.c \
+ mlib_ImageAffine_NN_Bit.c \
+ mlib_ImageAffine_BC_S32.c \
+ mlib_ImageAffine_BC_D64.c \
+ mlib_ImageAffine_BC_F32.c \
+ mlib_ImageAffine_BL_S32.c \
+ mlib_ImageAffine_BL_D64.c \
+ mlib_ImageAffine_BL_F32.c \
+ mlib_c_ImageAffine_NN.c \
+ mlib_c_ImageAffine_BL.c \
+ mlib_c_ImageAffine_BL_S16.c \
+ mlib_c_ImageAffine_BL_U16.c \
+ mlib_c_ImageAffine_BC.c \
+ mlib_c_ImageAffine_BC_S16.c \
+ mlib_c_ImageAffine_BC_U16.c \
+ mlib_c_ImageAffineIndex_BC.c \
+ mlib_c_ImageAffineIndex_BL.c \
+ mlib_ImageAffineEdge.c \
+ mlib_ImageScanPoly.c \
+ mlib_ImageColorTrue2Index.c \
+ mlib_ImageDivTables.c \
+ mlib_c_ImageThresh1_U8.c \
+ mlib_ImageFilters.c \
+
+IMAGE_LOOKUP_FILES = \
+ mlib_c_ImageLookUp_f.c \
+ mlib_ImageLookUp_64.c \
+ mlib_ImageLookUp_Bit.c \
+ mlib_c_ImageCopy.c \
+
+IMAGE_CONV_FILES = \
+ mlib_ImageConv_16ext.c \
+ mlib_ImageConv_u16ext.c \
+ mlib_ImageConvMxN_ext.c \
+ mlib_ImageConvMxN_Fp.c \
+ mlib_ImageConv_8ext.c \
+ mlib_c_ImageConv_f.c \
+ mlib_ImageClipping.c \
+ mlib_c_ImageConvCopyEdge.c \
+ mlib_c_ImageConvClearEdge.c \
+ mlib_ImageConv_8nw.c \
+ mlib_ImageConv_16nw.c \
+ mlib_ImageConv_u16nw.c \
+ mlib_ImageConv_32nw.c \
+ mlib_ImageConv_F32nw.c \
+ mlib_ImageConv_D64nw.c \
+ mlib_ImageConv2x2_f.c \
+ mlib_ImageConvClearEdge_Fp.c \
+ mlib_ImageConvCopyEdge_Bit.c \
+ mlib_ImageConvClearEdge_Bit.c \
+ mlib_ImageCopy_Bit.c \
+ mlib_c_ImageConvVersion.c \
+
+
+SHARE_SYS_FILES = \
+ mlib_sys.c \
+ mlib_ImageUtils.c \
+
+
+FILES_c = \
+ mlib_ImageAffine.c \
+ mlib_ImageCreate.c \
+ mlib_c_ImageLookUp.c \
+ mlib_ImageConvMxN.c \
+ mlib_ImageConvKernelConvert.c \
+ $(IMAGE_AFFINE_FILES) \
+ $(IMAGE_LOOKUP_FILES) \
+ $(IMAGE_CONV_FILES) \
+ $(SHARE_SYS_FILES) \
+
diff --git a/jdk/make/sun/image/generic/Makefile b/jdk/make/sun/image/generic/Makefile
new file mode 100644
index 0000000..6157c79
--- /dev/null
+++ b/jdk/make/sun/image/generic/Makefile
@@ -0,0 +1,73 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the generic version of medialib
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.awt.medialib
+LIBRARY = mlib_image
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Use highest level of optimization on this library
+#
+_OPT = $(CC_HIGHEST_OPT)
+
+#
+# Use mapfile
+#
+FILES_m = mapfile-vers
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+#
+# Files
+#
+include FILES_c.gmk
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# set compile options for solaris 32- or 64-bit build
+#
+ifeq ($(ARCH_DATA_MODEL), 64)
+ CFLAGS += -DMLIB_OS64BIT
+endif # ARCH_DATA_MODEL
+
+ifneq ($(PLATFORM), sparc)
+ OTHER_CFLAGS += -DMLIB_NO_LIBSUNMATH
+endif
+
+CPPFLAGS += \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/medialib
+
+OTHER_CFLAGS += -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES
+OTHER_LDLIBS = $(LIBM) -ldl
+
diff --git a/jdk/make/sun/image/generic/mapfile-vers b/jdk/make/sun/image/generic/mapfile-vers
new file mode 100644
index 0000000..f55b558
--- /dev/null
+++ b/jdk/make/sun/image/generic/mapfile-vers
@@ -0,0 +1,39 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ j2d_mlib_ImageDelete;
+ j2d_mlib_ImageCreateStruct;
+ j2d_mlib_ImageLookUp;
+ j2d_mlib_ImageCreate;
+ j2d_mlib_ImageConvMxN;
+ j2d_mlib_ImageAffine;
+ j2d_mlib_ImageConvKernelConvert;
+ local:
+ *;
+};
diff --git a/jdk/make/sun/image/vis/FILES_c.gmk b/jdk/make/sun/image/vis/FILES_c.gmk
new file mode 100644
index 0000000..dff0986
--- /dev/null
+++ b/jdk/make/sun/image/vis/FILES_c.gmk
@@ -0,0 +1,162 @@
+#
+# Copyright 1998-2003 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+REQUIRED_NATIVE_FILES = \
+ mlib_v_ImageLookUp.c \
+
+REQUIRED_SHARE_FILES = \
+ mlib_ImageCreate.c \
+ mlib_ImageAffine.c \
+ mlib_ImageConvMxN.c \
+ mlib_ImageConvKernelConvert.c \
+
+SYS_SHARE_FILES = \
+ mlib_sys.c \
+
+RADIO_SHARE_FILES = \
+ mlib_ImageLookUp_64.c \
+ mlib_ImageLookUp_Bit.c \
+ mlib_ImageColorTrue2Index.c \
+ mlib_c_ImageThresh1_U8.c \
+
+
+RADIO_NATIVE_FILES = \
+ mlib_v_ImageLookUpS16S16Func.c \
+ mlib_v_ImageLookUpS16S32Func.c \
+ mlib_v_ImageLookUpS16U16Func.c \
+ mlib_v_ImageLookUpS16U8Func.c \
+ mlib_v_ImageLookUpS32S16Func.c \
+ mlib_v_ImageLookUpS32S32Func.c \
+ mlib_v_ImageLookUpS32U16Func.c \
+ mlib_v_ImageLookUpS32U8Func.c \
+ mlib_v_ImageLookUpSIS16S16Func.c \
+ mlib_v_ImageLookUpSIS16S32Func.c \
+ mlib_v_ImageLookUpSIS16U16Func.c \
+ mlib_v_ImageLookUpSIS16U8Func.c \
+ mlib_v_ImageLookUpSIS32S16Func.c \
+ mlib_v_ImageLookUpSIS32S32Func.c \
+ mlib_v_ImageLookUpSIS32U16Func.c \
+ mlib_v_ImageLookUpSIS32U8Func.c \
+ mlib_v_ImageLookUpSIU16S16Func.c \
+ mlib_v_ImageLookUpSIU16S32Func.c \
+ mlib_v_ImageLookUpSIU16U16Func.c \
+ mlib_v_ImageLookUpSIU16U8Func.c \
+ mlib_v_ImageLookUpSIU8S16Func.c \
+ mlib_v_ImageLookUpSIU8S32Func.c \
+ mlib_v_ImageLookUpSIU8U16Func.c \
+ mlib_v_ImageLookUpSIU8U8Func.c \
+ mlib_v_ImageLookUpU16S16Func.c \
+ mlib_v_ImageLookUpU16S32Func.c \
+ mlib_v_ImageLookUpU16U16Func.c \
+ mlib_v_ImageLookUpU16U8Func.c \
+ mlib_v_ImageLookUpU8S16Func.c \
+ mlib_v_ImageLookUpU8S32Func.c \
+ mlib_v_ImageLookUpU8U16Func.c \
+ mlib_v_ImageLookUpU8U8Func.c \
+
+GEOM_NATIVE_FILES = \
+ mlib_v_ImageAffineIndex_BC.c \
+ mlib_v_ImageAffine_BC.c \
+ mlib_v_ImageAffine_BC_S16.c \
+ mlib_v_ImageAffine_BC_U16.c \
+ mlib_v_ImageAffine_BL.c \
+ mlib_v_ImageAffine_BL_S16.c \
+ mlib_v_ImageAffine_BL_U16.c \
+ mlib_v_ImageAffine_NN.c \
+ mlib_v_ImageFilters.c \
+
+GEOM_SHARE_FILES = \
+ mlib_ImageAffineEdge.c \
+ mlib_ImageAffine_BC_D64.c \
+ mlib_ImageAffine_BC_F32.c \
+ mlib_ImageAffine_BC_S32.c \
+ mlib_ImageAffine_BL_D64.c \
+ mlib_ImageAffine_BL_F32.c \
+ mlib_ImageAffine_BL_S32.c \
+ mlib_ImageAffine_NN.c \
+ mlib_ImageAffine_NN_Bit.c \
+ mlib_ImageFilters.c \
+ mlib_ImageScanPoly.c \
+
+SPATIAL_SHARED_FILES = \
+ mlib_ImageConv_8nw.c \
+ mlib_ImageConv_8ext.c \
+ mlib_ImageConv_16nw.c \
+ mlib_ImageConv_16ext.c \
+ mlib_ImageConv_u16nw.c \
+ mlib_ImageConv_u16ext.c \
+ mlib_ImageConv_32nw.c \
+ mlib_ImageConv_F32nw.c \
+ mlib_ImageConvMxN_Fp.c \
+ mlib_ImageConvMxN_ext.c \
+ mlib_ImageConv_D64nw.c \
+ mlib_ImageClipping.c \
+ mlib_ImageConvCopyEdge_Bit.c \
+ mlib_ImageConvClearEdge_Bit.c \
+ mlib_ImageConv2x2_f.c \
+ mlib_ImageConvClearEdge_Fp.c \
+
+SPATIAL_NATIVE_FILES = \
+ mlib_v_ImageConvMxN_8.c \
+ mlib_v_ImageConvClearEdge.c \
+ mlib_v_ImageConvCopyEdge.c \
+ mlib_v_ImageConvMxN_8ext.c \
+ mlib_v_ImageConvVersion.c \
+ mlib_v_ImageConv_8nw.c \
+ mlib_ImageConvCopyEdge_Fp.c \
+
+FORMAT_NATIVE_FILES = \
+ mlib_v_ImageChannelInsert_1.c \
+ mlib_v_ImageChannelExtract_43.c \
+ mlib_v_ImageChannelExtract_1.c \
+
+COPY_SHARED_FILES = \
+ mlib_ImageCopy_Bit.c \
+
+COPY_NATIVE_FILES = \
+ mlib_v_ImageCopy_f.c \
+
+COMMON_SHARED_FILES = \
+ mlib_ImageUtils.c \
+ mlib_ImageDivTables.c \
+
+NATIVE_FILES = \
+ $(REQUIRED_NATIVE_FILES) \
+
+FILES_c = \
+ $(REQUIRED_NATIVE_FILES) \
+ $(REQUIRED_SHARE_FILES) \
+ $(RADIO_SHARE_FILES) \
+ $(RADIO_NATIVE_FILES) \
+ $(GEOM_NATIVE_FILES) \
+ $(GEOM_SHARE_FILES) \
+ $(SPATIAL_SHARED_FILES) \
+ $(SPATIAL_NATIVE_FILES) \
+ $(FORMAT_NATIVE_FILES) \
+ $(SYS_SHARE_FILES) \
+ $(COPY_SHARED_FILES) \
+ $(COPY_NATIVE_FILES) \
+ $(COMMON_SHARED_FILES) \
+
diff --git a/jdk/make/sun/image/vis/Makefile b/jdk/make/sun/image/vis/Makefile
new file mode 100644
index 0000000..00c11c3
--- /dev/null
+++ b/jdk/make/sun/image/vis/Makefile
@@ -0,0 +1,76 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the VIS (solaris-only) version of medialib
+#
+BUILDDIR = ../../..
+PACKAGE = sun.awt.medialib
+LIBRARY = mlib_image_v
+PRODUCT = sun
+
+#
+# Tell Defs.gmk we need VIS instructions
+#
+VIS_NEEDED=true
+
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Select highest level of optimization for this library
+#
+_OPT = $(CC_HIGHEST_OPT)
+
+#
+# Use generic mapfile
+#
+FILES_m = ../generic/mapfile-vers
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+#
+# Files
+#
+include FILES_c.gmk
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Library.gmk
+
+vpath %.s $(PLATFORM_SRC)/native/sun/awt/medialib
+vpath %.c $(SHARE_SRC)/native/sun/awt/medialib
+
+#
+# set compile options for solaris 32- or 64-bit build
+#
+ASFLAGS += -P
+CFLAGS_sparcv9 = -DMLIB_OS64BIT
+INLINE = $(PLATFORM_SRC)/native/sun/awt/medialib/vis_$(ARCH_DATA_MODEL).il
+
+CFLAGS += $(CFLAGS_$(ARCH)) $(INLINE) -I$(PLATFORM_SRC)/native/sun/awt/medialib -I$(SHARE_SRC)/native/sun/awt/medialib
+
+OTHER_CFLAGS += -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES
+OTHER_LDLIBS = $(LIBM) -ldl
+
diff --git a/jdk/make/sun/jar/Makefile b/jdk/make/sun/jar/Makefile
new file mode 100644
index 0000000..3917187
--- /dev/null
+++ b/jdk/make/sun/jar/Makefile
@@ -0,0 +1,50 @@
+#
+# Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building jar utility.
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.tools
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = sun/tools/jar
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+RESOURCE_BUNDLES_COMPILED_PROPERTIES = sun/tools/jar/resources/jar.properties
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/sun/javazic/Makefile b/jdk/make/sun/javazic/Makefile
new file mode 100644
index 0000000..96a2df1
--- /dev/null
+++ b/jdk/make/sun/javazic/Makefile
@@ -0,0 +1,74 @@
+#
+# Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Makefile for building javazic utility & TimeZone resource files
+
+
+BUILDDIR = ../..
+PACKAGE = sun.javazic
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+# Time zone data file creation
+TZDATA = ./tzdata/
+TZDATA_VER = `$(GREP) '^tzdata' $(TZDATA)VERSION`
+TZFILE = \
+ africa antarctica asia australasia europe northamerica \
+ pacificnew southamerica backward \
+ etcetera solar87 solar88 solar89 systemv
+JDKTZDATA = ./tzdata_jdk/
+JDKTZFILES = gmt jdk11_backward
+TZFILES = \
+ $(addprefix $(TZDATA),$(TZFILE)) \
+ $(addprefix $(JDKTZDATA),$(JDKTZFILES))
+
+WORKDIR = $(TEMPDIR)/zi
+INSTALLDIR = $(LIBDIR)/zi
+MAPFILE = ZoneInfoMappings
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+# Add to the build rule
+build: $(INSTALLDIR)/$(MAPFILE)
+
+$(BUILDTOOLJARDIR)/javazic.jar:
+ ($(CD) $(BUILDDIR)/tools/javazic && $(MAKE))
+
+$(WORKDIR)/$(MAPFILE): $(BUILDTOOLJARDIR)/javazic.jar $(TZFILES)
+ $(RM) -r $(@D)
+ $(prep-target)
+ $(BOOT_JAVA_CMD) -jar $(BUILDTOOLJARDIR)/javazic.jar -V "$(TZDATA_VER)" -d $(WORKDIR) $(TZFILES)
+ @$(java-vm-cleanup)
+
+$(INSTALLDIR)/$(MAPFILE): $(WORKDIR)/$(MAPFILE)
+ $(RM) -r $(@D)
+ $(prep-target)
+ $(CP) -r $(WORKDIR)/* $(@D)
+
+clean clobber::
+ $(RM) -r $(TEMPDIR) $(INSTALLDIR)
diff --git a/jdk/make/sun/javazic/javatz/fullset.txt b/jdk/make/sun/javazic/javatz/fullset.txt
new file mode 100644
index 0000000..e8f8248
--- /dev/null
+++ b/jdk/make/sun/javazic/javatz/fullset.txt
@@ -0,0 +1,427 @@
+#
+# Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+Africa/Abidjan
+Africa/Accra
+Africa/Addis_Ababa
+Africa/Algiers
+Africa/Asmera
+Africa/Bamako
+Africa/Bangui
+Africa/Banjul
+Africa/Bissau
+Africa/Blantyre
+Africa/Brazzaville
+Africa/Bujumbura
+Africa/Cairo
+Africa/Casablanca
+Africa/Ceuta
+Africa/Conakry
+Africa/Dakar
+Africa/Dar_es_Salaam
+Africa/Djibouti
+Africa/Douala
+Africa/El_Aaiun
+Africa/Freetown
+Africa/Gaborone
+Africa/Harare
+Africa/Johannesburg
+Africa/Kampala
+Africa/Khartoum
+Africa/Kigali
+Africa/Kinshasa
+Africa/Lagos
+Africa/Libreville
+Africa/Lome
+Africa/Luanda
+Africa/Lubumbashi
+Africa/Lusaka
+Africa/Malabo
+Africa/Maputo
+Africa/Maseru
+Africa/Mbabane
+Africa/Mogadishu
+Africa/Monrovia
+Africa/Nairobi
+Africa/Ndjamena
+Africa/Niamey
+Africa/Nouakchott
+Africa/Ouagadougou
+Africa/Porto-Novo
+Africa/Sao_Tome
+Africa/Timbuktu
+Africa/Tripoli
+Africa/Tunis
+Africa/Windhoek
+America/Adak
+America/Anchorage
+America/Anguilla
+America/Antigua
+America/Araguaina
+America/Aruba
+America/Asuncion
+America/Barbados
+America/Belem
+America/Belize
+America/Boa_Vista
+America/Bogota
+America/Boise
+America/Buenos_Aires
+America/Cambridge_Bay
+America/Cancun
+America/Caracas
+America/Catamarca
+America/Cayenne
+America/Cayman
+America/Chicago
+America/Chihuahua
+America/Cordoba
+America/Costa_Rica
+America/Cuiaba
+America/Curacao
+America/Dawson
+America/Dawson_Creek
+America/Denver
+America/Detroit
+America/Dominica
+America/Edmonton
+America/El_Salvador
+America/Fortaleza
+America/Glace_Bay
+America/Godthab
+America/Goose_Bay
+America/Grand_Turk
+America/Grenada
+America/Guadeloupe
+America/Guatemala
+America/Guayaquil
+America/Guyana
+America/Halifax
+America/Havana
+America/Hermosillo
+America/Indiana/Knox
+America/Indiana/Marengo
+America/Indiana/Vevay
+America/Indianapolis
+America/Inuvik
+America/Iqaluit
+America/Jamaica
+America/Jujuy
+America/Juneau
+America/La_Paz
+America/Lima
+America/Los_Angeles
+America/Louisville
+America/Maceio
+America/Managua
+America/Manaus
+America/Martinique
+America/Mazatlan
+America/Mendoza
+America/Menominee
+America/Mexico_City
+America/Miquelon
+America/Montevideo
+America/Montreal
+America/Montserrat
+America/Nassau
+America/New_York
+America/Nipigon
+America/Nome
+America/Noronha
+America/Panama
+America/Pangnirtung
+America/Paramaribo
+America/Phoenix
+America/Port-au-Prince
+America/Port_of_Spain
+America/Porto_Acre
+America/Porto_Velho
+America/Puerto_Rico
+America/Rainy_River
+America/Rankin_Inlet
+America/Regina
+America/Rosario
+America/Santiago
+America/Santo_Domingo
+America/Sao_Paulo
+America/Scoresbysund
+America/St_Johns
+America/St_Kitts
+America/St_Lucia
+America/St_Thomas
+America/St_Vincent
+America/Swift_Current
+America/Tegucigalpa
+America/Thule
+America/Thunder_Bay
+America/Tijuana
+America/Tortola
+America/Vancouver
+America/Whitehorse
+America/Winnipeg
+America/Yakutat
+America/Yellowknife
+Antarctica/Casey
+Antarctica/Davis
+Antarctica/DumontDUrville
+Antarctica/Mawson
+Antarctica/McMurdo
+Antarctica/Palmer
+Antarctica/Syowa
+Asia/Aden
+Asia/Almaty
+Asia/Amman
+Asia/Anadyr
+Asia/Aqtau
+Asia/Aqtobe
+Asia/Ashkhabad
+Asia/Baghdad
+Asia/Bahrain
+Asia/Baku
+Asia/Bangkok
+Asia/Beirut
+Asia/Bishkek
+Asia/Brunei
+Asia/Calcutta
+Asia/Chungking
+Asia/Colombo
+Asia/Dacca
+Asia/Damascus
+Asia/Dili
+Asia/Dubai
+Asia/Dushanbe
+Asia/Gaza
+Asia/Harbin
+Asia/Hong_Kong
+Asia/Hovd
+Asia/Irkutsk
+Asia/Jakarta
+Asia/Jayapura
+Asia/Jerusalem
+Asia/Kabul
+Asia/Kamchatka
+Asia/Karachi
+Asia/Kashgar
+Asia/Katmandu
+Asia/Krasnoyarsk
+Asia/Kuala_Lumpur
+Asia/Kuching
+Asia/Kuwait
+Asia/Macao
+Asia/Magadan
+Asia/Manila
+Asia/Muscat
+Asia/Nicosia
+Asia/Novosibirsk
+Asia/Omsk
+Asia/Phnom_Penh
+Asia/Pyongyang
+Asia/Qatar
+Asia/Rangoon
+Asia/Riyadh
+Asia/Riyadh87
+Asia/Riyadh88
+Asia/Riyadh89
+Asia/Saigon
+Asia/Samarkand
+Asia/Seoul
+Asia/Shanghai
+Asia/Singapore
+Asia/Taipei
+Asia/Tashkent
+Asia/Tbilisi
+Asia/Tehran
+Asia/Thimbu
+Asia/Tokyo
+Asia/Ujung_Pandang
+Asia/Ulaanbaatar
+Asia/Urumqi
+Asia/Vientiane
+Asia/Vladivostok
+Asia/Yakutsk
+Asia/Yekaterinburg
+Asia/Yerevan
+Atlantic/Azores
+Atlantic/Bermuda
+Atlantic/Canary
+Atlantic/Cape_Verde
+Atlantic/Faeroe
+Atlantic/Jan_Mayen
+Atlantic/Madeira
+Atlantic/Reykjavik
+Atlantic/South_Georgia
+Atlantic/St_Helena
+Atlantic/Stanley
+Australia/Adelaide
+Australia/Brisbane
+Australia/Broken_Hill
+Australia/Darwin
+Australia/Hobart
+Australia/Lindeman
+Australia/Lord_Howe
+Australia/Melbourne
+Australia/Perth
+Australia/Sydney
+CET
+EET
+Etc/GMT
+#Etc/GMT+1
+#Etc/GMT+10
+#Etc/GMT+11
+#Etc/GMT+12
+#Etc/GMT+2
+#Etc/GMT+3
+#Etc/GMT+4
+#Etc/GMT+5
+#Etc/GMT+6
+#Etc/GMT+7
+#Etc/GMT+8
+#Etc/GMT+9
+#Etc/GMT-1
+#Etc/GMT-10
+#Etc/GMT-11
+#Etc/GMT-12
+#Etc/GMT-13
+#Etc/GMT-14
+#Etc/GMT-2
+#Etc/GMT-3
+#Etc/GMT-4
+#Etc/GMT-5
+#Etc/GMT-6
+#Etc/GMT-7
+#Etc/GMT-8
+#Etc/GMT-9
+Etc/UCT
+Etc/UTC
+Europe/Amsterdam
+Europe/Andorra
+Europe/Athens
+Europe/Belfast
+Europe/Belgrade
+Europe/Berlin
+Europe/Brussels
+Europe/Bucharest
+Europe/Budapest
+Europe/Chisinau
+Europe/Copenhagen
+Europe/Dublin
+Europe/Gibraltar
+Europe/Helsinki
+Europe/Istanbul
+Europe/Kaliningrad
+Europe/Kiev
+Europe/Lisbon
+Europe/London
+Europe/Luxembourg
+Europe/Madrid
+Europe/Malta
+Europe/Minsk
+Europe/Monaco
+Europe/Moscow
+Europe/Oslo
+Europe/Paris
+Europe/Prague
+Europe/Riga
+Europe/Rome
+Europe/Samara
+Europe/Simferopol
+Europe/Sofia
+Europe/Stockholm
+Europe/Tallinn
+Europe/Tirane
+Europe/Tiraspol
+Europe/Uzhgorod
+Europe/Vaduz
+Europe/Vienna
+Europe/Vilnius
+Europe/Warsaw
+Europe/Zaporozhye
+Europe/Zurich
+GMT
+Indian/Antananarivo
+Indian/Chagos
+Indian/Christmas
+Indian/Cocos
+Indian/Comoro
+Indian/Kerguelen
+Indian/Mahe
+Indian/Maldives
+Indian/Mauritius
+Indian/Mayotte
+Indian/Reunion
+#MET
+Pacific/Apia
+Pacific/Auckland
+Pacific/Chatham
+Pacific/Easter
+Pacific/Efate
+Pacific/Enderbury
+Pacific/Fakaofo
+Pacific/Fiji
+Pacific/Funafuti
+Pacific/Galapagos
+Pacific/Gambier
+Pacific/Guadalcanal
+Pacific/Guam
+Pacific/Honolulu
+Pacific/Johnston
+Pacific/Kiritimati
+Pacific/Kosrae
+Pacific/Kwajalein
+Pacific/Majuro
+Pacific/Marquesas
+Pacific/Midway
+Pacific/Nauru
+Pacific/Niue
+Pacific/Norfolk
+Pacific/Noumea
+Pacific/Pago_Pago
+Pacific/Palau
+Pacific/Pitcairn
+Pacific/Ponape
+Pacific/Port_Moresby
+Pacific/Rarotonga
+Pacific/Saipan
+Pacific/Tahiti
+Pacific/Tarawa
+Pacific/Tongatapu
+Pacific/Truk
+Pacific/Wake
+Pacific/Wallis
+Pacific/Yap
+SystemV/AST4
+SystemV/AST4ADT
+SystemV/CST6
+SystemV/CST6CDT
+SystemV/EST5
+SystemV/EST5EDT
+SystemV/HST10
+SystemV/MST7
+SystemV/MST7MDT
+SystemV/PST8
+SystemV/PST8PDT
+SystemV/YST9
+SystemV/YST9YDT
+WET
diff --git a/jdk/make/sun/javazic/javatz/java_11_ids.txt b/jdk/make/sun/javazic/javatz/java_11_ids.txt
new file mode 100644
index 0000000..3ca785d
--- /dev/null
+++ b/jdk/make/sun/javazic/javatz/java_11_ids.txt
@@ -0,0 +1,86 @@
+#
+# Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# Time zone IDs of JDK1.1.x
+#
+Australia/Darwin
+ACT
+Australia/Sydney
+AET
+America/Buenos_Aires
+AGT
+Africa/Cairo
+ART
+America/Anchorage
+AST
+America/Sao_Paulo
+BET
+Asia/Dacca
+BST
+Africa/Harare
+CAT
+America/St_Johns
+CNT
+America/Chicago
+CST
+Asia/Shanghai
+CTT
+Africa/Addis_Ababa
+EAT
+Europe/Paris
+ECT
+America/New_York
+EST
+Pacific/Honolulu
+HST
+America/Indianapolis
+IET
+Asia/Calcutta
+IST
+Asia/Tokyo
+JST
+Pacific/Apia
+MIT
+America/Denver
+MST
+Asia/Yerevan
+NET
+Pacific/Auckland
+NST
+Asia/Karachi
+PLT
+America/Phoenix
+PNT
+America/Puerto_Rico
+PRT
+America/Los_Angeles
+PST
+Pacific/Guadalcanal
+SST
+Asia/Saigon
+VST
+GMT
+UTC
+Asia/Tehran
+MET
diff --git a/jdk/make/sun/javazic/javatz/java_us_ids.txt b/jdk/make/sun/javazic/javatz/java_us_ids.txt
new file mode 100644
index 0000000..241d1d8
--- /dev/null
+++ b/jdk/make/sun/javazic/javatz/java_us_ids.txt
@@ -0,0 +1,67 @@
+#
+# Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# U.S. and Canada zone IDs
+#
+# United States
+America/New_York
+EST
+America/Chicago
+CST
+America/Denver
+MST
+America/Los_Angeles
+PST
+America/Anchorage
+AST
+America/Adak
+Pacific/Honolulu
+HST
+America/Phoenix
+PNT
+America/Indianapolis
+IET
+#"Atlantic time zone - Puerto Rico & Virgin Islands, no Daylight Saving"
+America/Caracas
+America/Puerto_Rico
+PRT
+America/St_Thomas
+#"Samoa time zone - American Samoa, no Daylight Saving"
+Pacific/Pago_Pago
+# Pacific Territories
+Pacific/Kosrae
+Pacific/Ponape
+Pacific/Palau
+Pacific/Guam
+Pacific/Kwajalein
+# Canada
+America/St_Johns
+CNT
+America/Halifax
+America/Montreal
+America/Winnipeg
+America/Regina
+
+GMT
+UTC
diff --git a/jdk/make/sun/javazic/javatz/java_win_ids.txt b/jdk/make/sun/javazic/javatz/java_win_ids.txt
new file mode 100644
index 0000000..cc91dc9
--- /dev/null
+++ b/jdk/make/sun/javazic/javatz/java_win_ids.txt
@@ -0,0 +1,117 @@
+#
+# Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+Africa/Cairo
+Africa/Harare
+Africa/Nairobi
+America/Anchorage
+America/Bogota
+America/Buenos_Aires
+America/Caracas
+America/Chicago
+America/Denver
+America/Halifax
+America/Indianapolis
+America/Los_Angeles
+America/Mexico_City
+America/New_York
+America/Phoenix
+America/Regina
+America/Sao_Paulo
+America/St_Johns
+Asia/Bangkok
+Asia/Calcutta
+Asia/Colombo
+Asia/Dacca
+Asia/Jerusalem
+Asia/Kabul
+Asia/Karachi
+Asia/Muscat
+Asia/Riyadh
+Asia/Seoul
+Asia/Shanghai
+Asia/Singapore
+Asia/Taipei
+Asia/Tbilisi
+Asia/Tehran
+Asia/Tokyo
+Asia/Vladivostok
+Asia/Yakutsk
+Asia/Yekaterinburg
+Atlantic/Azores
+Atlantic/South_Georgia
+Australia/Adelaide
+Australia/Brisbane
+Australia/Darwin
+Australia/Hobart
+Australia/Perth
+Australia/Sydney
+Europe/Athens
+Europe/Belgrade
+Europe/Berlin
+Europe/Bucharest
+Europe/Helsinki
+Europe/London
+Europe/Moscow
+Europe/Paris
+Europe/Prague
+Europe/Warsaw
+GMT
+Pacific/Apia
+Pacific/Auckland
+Pacific/Fiji
+Pacific/Guadalcanal
+Pacific/Guam
+Pacific/Honolulu
+Pacific/Majuro
+ACT
+AET
+AGT
+ART
+AST
+BET
+BST
+CAT
+CNT
+CST
+CTT
+EAT
+ECT
+EST
+HST
+IET
+IST
+JST
+MIT
+MST
+NET
+NST
+PLT
+PNT
+PRT
+PST
+SST
+VST
+UTC
+MET
diff --git a/jdk/make/sun/javazic/javatz/java_zone_ids.txt b/jdk/make/sun/javazic/javatz/java_zone_ids.txt
new file mode 100644
index 0000000..a659ff3
--- /dev/null
+++ b/jdk/make/sun/javazic/javatz/java_zone_ids.txt
@@ -0,0 +1,356 @@
+#
+# Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+ACT
+AET
+AGT
+ART
+AST
+Africa/Abidjan
+Africa/Accra
+Africa/Addis_Ababa
+Africa/Algiers
+Africa/Asmera
+Africa/Bamako
+Africa/Bangui
+Africa/Banjul
+Africa/Bissau
+Africa/Blantyre
+Africa/Bujumbura
+Africa/Cairo
+Africa/Casablanca
+Africa/Conakry
+Africa/Dakar
+Africa/Dar_es_Salaam
+Africa/Djibouti
+Africa/Douala
+Africa/Freetown
+Africa/Gaborone
+Africa/Harare
+Africa/Johannesburg
+Africa/Kampala
+Africa/Khartoum
+Africa/Kigali
+Africa/Kinshasa
+Africa/Lagos
+Africa/Libreville
+Africa/Lome
+Africa/Luanda
+Africa/Lubumbashi
+Africa/Lusaka
+Africa/Malabo
+Africa/Maputo
+Africa/Maseru
+Africa/Mbabane
+Africa/Mogadishu
+Africa/Monrovia
+Africa/Nairobi
+Africa/Ndjamena
+Africa/Niamey
+Africa/Nouakchott
+Africa/Ouagadougou
+Africa/Porto-Novo
+Africa/Sao_Tome
+Africa/Timbuktu
+Africa/Tripoli
+Africa/Tunis
+Africa/Windhoek
+America/Adak
+America/Anchorage
+America/Anguilla
+America/Antigua
+America/Argentina/Buenos_Aires
+America/Aruba
+America/Asuncion
+America/Barbados
+America/Belize
+America/Bogota
+America/Buenos_Aires
+America/Caracas
+America/Cayenne
+America/Cayman
+America/Chicago
+America/Costa_Rica
+America/Cuiaba
+America/Curacao
+America/Dawson_Creek
+America/Denver
+America/Dominica
+America/Edmonton
+America/El_Salvador
+America/Fortaleza
+America/Godthab
+America/Grand_Turk
+America/Grenada
+America/Guadeloupe
+America/Guatemala
+America/Guayaquil
+America/Guyana
+America/Halifax
+America/Havana
+America/Indiana/Indianapolis
+America/Indianapolis
+America/Jamaica
+America/La_Paz
+America/Lima
+America/Los_Angeles
+America/Managua
+America/Manaus
+America/Martinique
+America/Mazatlan
+America/Mexico_City
+America/Miquelon
+America/Montevideo
+America/Montreal
+America/Montserrat
+America/Nassau
+America/New_York
+America/Noronha
+America/Panama
+America/Paramaribo
+America/Phoenix
+America/Port-au-Prince
+America/Port_of_Spain
+America/Porto_Acre
+America/Rio_Branco
+America/Puerto_Rico
+America/Regina
+America/Santiago
+America/Santo_Domingo
+America/Sao_Paulo
+America/Scoresbysund
+America/St_Johns
+America/St_Kitts
+America/St_Lucia
+America/St_Thomas
+America/St_Vincent
+America/Tegucigalpa
+America/Thule
+America/Tijuana
+America/Tortola
+America/Vancouver
+America/Winnipeg
+Antarctica/Casey
+Antarctica/DumontDUrville
+Antarctica/Mawson
+Antarctica/McMurdo
+Antarctica/Palmer
+Asia/Aden
+Asia/Almaty
+Asia/Amman
+Asia/Anadyr
+Asia/Aqtau
+Asia/Aqtobe
+Asia/Ashgabat
+Asia/Ashkhabad
+Asia/Baghdad
+Asia/Bahrain
+Asia/Baku
+Asia/Bangkok
+Asia/Beirut
+Asia/Bishkek
+Asia/Brunei
+Asia/Calcutta
+Asia/Colombo
+Asia/Dacca
+Asia/Dhaka
+Asia/Damascus
+Asia/Dubai
+Asia/Dushanbe
+Asia/Hong_Kong
+Asia/Irkutsk
+Asia/Jakarta
+Asia/Jayapura
+Asia/Jerusalem
+Asia/Kabul
+Asia/Kamchatka
+Asia/Karachi
+Asia/Katmandu
+Asia/Krasnoyarsk
+Asia/Kuala_Lumpur
+Asia/Kuwait
+Asia/Macao
+Asia/Macau
+Asia/Magadan
+Asia/Makassar
+Asia/Manila
+Asia/Muscat
+Asia/Nicosia
+Asia/Novosibirsk
+Asia/Phnom_Penh
+Asia/Pyongyang
+Asia/Qatar
+Asia/Rangoon
+Asia/Riyadh
+Asia/Saigon
+Asia/Seoul
+Asia/Shanghai
+Asia/Singapore
+Asia/Taipei
+Asia/Tashkent
+Asia/Tbilisi
+Asia/Tehran
+Asia/Thimbu
+Asia/Thimphu
+Asia/Tokyo
+Asia/Ujung_Pandang
+Asia/Ulan_Bator
+Asia/Ulaanbaatar
+Asia/Vientiane
+Asia/Vladivostok
+Asia/Yakutsk
+Asia/Yekaterinburg
+Asia/Yerevan
+Atlantic/Azores
+Atlantic/Bermuda
+Atlantic/Canary
+Atlantic/Cape_Verde
+Atlantic/Faeroe
+Atlantic/Jan_Mayen
+Atlantic/Reykjavik
+Atlantic/South_Georgia
+Atlantic/St_Helena
+Atlantic/Stanley
+Australia/Adelaide
+Australia/Brisbane
+Australia/Broken_Hill
+Australia/Darwin
+Australia/Hobart
+Australia/Lord_Howe
+Australia/Perth
+Australia/Sydney
+BET
+BST
+CAT
+CNT
+CST
+CTT
+EAT
+ECT
+EET
+EST
+Europe/Amsterdam
+Europe/Andorra
+Europe/Athens
+Europe/Belgrade
+Europe/Berlin
+Europe/Brussels
+Europe/Bucharest
+Europe/Budapest
+Europe/Chisinau
+Europe/Copenhagen
+Europe/Dublin
+Europe/Gibraltar
+Europe/Helsinki
+Europe/Istanbul
+Europe/Kaliningrad
+Europe/Kiev
+Europe/Lisbon
+Europe/London
+Europe/Luxembourg
+Europe/Madrid
+Europe/Malta
+Europe/Minsk
+Europe/Monaco
+Europe/Moscow
+Europe/Oslo
+Europe/Paris
+Europe/Prague
+Europe/Riga
+Europe/Rome
+Europe/Samara
+Europe/Simferopol
+Europe/Sofia
+Europe/Stockholm
+Europe/Tallinn
+Europe/Tirane
+Europe/Vaduz
+Europe/Vienna
+Europe/Vilnius
+Europe/Warsaw
+Europe/Zurich
+GMT
+HST
+IET
+IST
+Indian/Antananarivo
+Indian/Chagos
+Indian/Christmas
+Indian/Cocos
+Indian/Comoro
+Indian/Kerguelen
+Indian/Mahe
+Indian/Maldives
+Indian/Mauritius
+Indian/Mayotte
+Indian/Reunion
+JST
+#MET
+MIT
+MST
+NET
+NST
+PLT
+PNT
+PRT
+PST
+Pacific/Apia
+Pacific/Auckland
+Pacific/Chatham
+Pacific/Easter
+Pacific/Efate
+Pacific/Enderbury
+Pacific/Fakaofo
+Pacific/Fiji
+Pacific/Funafuti
+Pacific/Galapagos
+Pacific/Gambier
+Pacific/Guadalcanal
+Pacific/Guam
+Pacific/Honolulu
+Pacific/Kiritimati
+Pacific/Kosrae
+Pacific/Majuro
+Pacific/Marquesas
+Pacific/Nauru
+Pacific/Niue
+Pacific/Norfolk
+Pacific/Noumea
+Pacific/Pago_Pago
+Pacific/Palau
+Pacific/Pitcairn
+Pacific/Ponape
+Pacific/Port_Moresby
+Pacific/Rarotonga
+Pacific/Saipan
+Pacific/Tahiti
+Pacific/Tarawa
+Pacific/Tongatapu
+Pacific/Truk
+Pacific/Wake
+Pacific/Wallis
+SST
+UTC
+VST
+WET
diff --git a/jdk/make/sun/javazic/javatz/jdk1.1.x_zone_ids.txt b/jdk/make/sun/javazic/javatz/jdk1.1.x_zone_ids.txt
new file mode 100644
index 0000000..8bff718
--- /dev/null
+++ b/jdk/make/sun/javazic/javatz/jdk1.1.x_zone_ids.txt
@@ -0,0 +1,61 @@
+#
+# Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# Olson time zone IDs used as of JDK1.1.8
+#
+Pacific/Apia
+Pacific/Honolulu
+America/Anchorage
+America/Los_Angeles
+America/Phoenix
+America/Denver
+America/Chicago
+America/Indianapolis
+America/New_York
+America/Caracas
+America/Halifax
+America/St_Johns
+America/Buenos_Aires
+America/Sao_Paulo
+Atlantic/Cape_Verde
+Atlantic/Azores
+Africa/Casablanca
+Europe/Paris
+Europe/Istanbul
+Africa/Cairo
+Asia/Riyadh
+Asia/Tehran
+Asia/Yerevan
+Asia/Karachi
+Asia/Calcutta
+Asia/Dacca
+Asia/Bangkok
+Asia/Shanghai
+Asia/Tokyo
+Australia/Darwin
+Australia/Adelaide
+Australia/Sydney
+Pacific/Guadalcanal
+Pacific/Fiji
+Pacific/Auckland
diff --git a/jdk/make/sun/javazic/tzdata/VERSION b/jdk/make/sun/javazic/tzdata/VERSION
new file mode 100644
index 0000000..95ed6ee
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/VERSION
@@ -0,0 +1,24 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+tzdata2007h
diff --git a/jdk/make/sun/javazic/tzdata/africa b/jdk/make/sun/javazic/tzdata/africa
new file mode 100644
index 0000000..f1f4b5f
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/africa
@@ -0,0 +1,695 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# <pre>
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@elsie.nci.nih.gov for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+#
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually. Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Another source occasionally used is Edward W. Whitman, World Time Differences,
+# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+# I found in the UCLA library.
+#
+# A reliable and entertaining source about time zones is
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+#
+# Previous editions of this database used WAT, CAT, SAT, and EAT
+# for +0:00 through +3:00, respectively,
+# but Mark R V Murray reports that
+# `SAST' is the official abbreviation for +2:00 in the country of South Africa,
+# `CAT' is commonly used for +2:00 in countries north of South Africa, and
+# `WAT' is probably the best name for +1:00, as the common phrase for
+# the area that includes Nigeria is ``West Africa''.
+# He has heard of ``Western Sahara Time'' for +0:00 but can find no reference.
+#
+# To make things confusing, `WAT' seems to have been used for -1:00 long ago;
+# I'd guess that this was because people needed _some_ name for -1:00,
+# and at the time, far west Africa was the only major land area in -1:00.
+# This usage is now obsolete, as the last use of -1:00 on the African
+# mainland seems to have been 1976 in Western Sahara.
+#
+# To summarize, the following abbreviations seem to have some currency:
+# -1:00 WAT West Africa Time (no longer used)
+# 0:00 GMT Greenwich Mean Time
+# 2:00 CAT Central Africa Time
+# 2:00 SAST South Africa Standard Time
+# and Murray suggests the following abbreviation:
+# 1:00 WAT West Africa Time
+# I realize that this leads to `WAT' being used for both -1:00 and 1:00
+# for times before 1976, but this is the best I can think of
+# until we get more information.
+#
+# I invented the following abbreviations; corrections are welcome!
+# 2:00 WAST West Africa Summer Time
+# 2:30 BEAT British East Africa Time (no longer used)
+# 2:44:45 BEAUT British East Africa Unified Time (no longer used)
+# 3:00 CAST Central Africa Summer Time (no longer used)
+# 3:00 SAST South Africa Summer Time (no longer used)
+# 3:00 EAT East Africa Time
+# 4:00 EAST East Africa Summer Time (no longer used)
+
+# Algeria
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Algeria 1916 only - Jun 14 23:00s 1:00 S
+Rule Algeria 1916 1919 - Oct Sun>=1 23:00s 0 -
+Rule Algeria 1917 only - Mar 24 23:00s 1:00 S
+Rule Algeria 1918 only - Mar 9 23:00s 1:00 S
+Rule Algeria 1919 only - Mar 1 23:00s 1:00 S
+Rule Algeria 1920 only - Feb 14 23:00s 1:00 S
+Rule Algeria 1920 only - Oct 23 23:00s 0 -
+Rule Algeria 1921 only - Mar 14 23:00s 1:00 S
+Rule Algeria 1921 only - Jun 21 23:00s 0 -
+Rule Algeria 1939 only - Sep 11 23:00s 1:00 S
+Rule Algeria 1939 only - Nov 19 1:00 0 -
+Rule Algeria 1944 1945 - Apr Mon>=1 2:00 1:00 S
+Rule Algeria 1944 only - Oct 8 2:00 0 -
+Rule Algeria 1945 only - Sep 16 1:00 0 -
+Rule Algeria 1971 only - Apr 25 23:00s 1:00 S
+Rule Algeria 1971 only - Sep 26 23:00s 0 -
+Rule Algeria 1977 only - May 6 0:00 1:00 S
+Rule Algeria 1977 only - Oct 21 0:00 0 -
+Rule Algeria 1978 only - Mar 24 1:00 1:00 S
+Rule Algeria 1978 only - Sep 22 3:00 0 -
+Rule Algeria 1980 only - Apr 25 0:00 1:00 S
+Rule Algeria 1980 only - Oct 31 2:00 0 -
+# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+# more precise 0:09:21.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01
+ 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
+ 0:00 Algeria WE%sT 1940 Feb 25 2:00
+ 1:00 Algeria CE%sT 1946 Oct 7
+ 0:00 - WET 1956 Jan 29
+ 1:00 - CET 1963 Apr 14
+ 0:00 Algeria WE%sT 1977 Oct 21
+ 1:00 Algeria CE%sT 1979 Oct 26
+ 0:00 Algeria WE%sT 1981 May
+ 1:00 - CET
+
+# Angola
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Luanda 0:52:56 - LMT 1892
+ 0:52:04 - AOT 1911 May 26 # Angola Time
+ 1:00 - WAT
+
+# Benin
+# Whitman says they switched to 1:00 in 1946, not 1934;
+# go with Shanks & Pottenger.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Porto-Novo 0:10:28 - LMT 1912
+ 0:00 - GMT 1934 Feb 26
+ 1:00 - WAT
+
+# Botswana
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Gaborone 1:43:40 - LMT 1885
+ 2:00 - CAT 1943 Sep 19 2:00
+ 2:00 1:00 CAST 1944 Mar 19 2:00
+ 2:00 - CAT
+
+# Burkina Faso
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Ouagadougou -0:06:04 - LMT 1912
+ 0:00 - GMT
+
+# Burundi
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Bujumbura 1:57:28 - LMT 1890
+ 2:00 - CAT
+
+# Cameroon
+# Whitman says they switched to 1:00 in 1920; go with Shanks & Pottenger.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Douala 0:38:48 - LMT 1912
+ 1:00 - WAT
+
+# Cape Verde
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Atlantic/Cape_Verde -1:34:04 - LMT 1907 # Praia
+ -2:00 - CVT 1942 Sep
+ -2:00 1:00 CVST 1945 Oct 15
+ -2:00 - CVT 1975 Nov 25 2:00
+ -1:00 - CVT
+
+# Central African Republic
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Bangui 1:14:20 - LMT 1912
+ 1:00 - WAT
+
+# Chad
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Ndjamena 1:00:12 - LMT 1912
+ 1:00 - WAT 1979 Oct 14
+ 1:00 1:00 WAST 1980 Mar 8
+ 1:00 - WAT
+
+# Comoros
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Comoro 2:53:04 - LMT 1911 Jul # Moroni, Gran Comoro
+ 3:00 - EAT
+
+# Democratic Republic of Congo
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Kinshasa 1:01:12 - LMT 1897 Nov 9
+ 1:00 - WAT
+Zone Africa/Lubumbashi 1:49:52 - LMT 1897 Nov 9
+ 2:00 - CAT
+
+# Republic of the Congo
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Brazzaville 1:01:08 - LMT 1912
+ 1:00 - WAT
+
+# Cote D'Ivoire
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Abidjan -0:16:08 - LMT 1912
+ 0:00 - GMT
+
+# Djibouti
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Djibouti 2:52:36 - LMT 1911 Jul
+ 3:00 - EAT
+
+###############################################################################
+
+# Egypt
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Egypt 1940 only - Jul 15 0:00 1:00 S
+Rule Egypt 1940 only - Oct 1 0:00 0 -
+Rule Egypt 1941 only - Apr 15 0:00 1:00 S
+Rule Egypt 1941 only - Sep 16 0:00 0 -
+Rule Egypt 1942 1944 - Apr 1 0:00 1:00 S
+Rule Egypt 1942 only - Oct 27 0:00 0 -
+Rule Egypt 1943 1945 - Nov 1 0:00 0 -
+Rule Egypt 1945 only - Apr 16 0:00 1:00 S
+Rule Egypt 1957 only - May 10 0:00 1:00 S
+Rule Egypt 1957 1958 - Oct 1 0:00 0 -
+Rule Egypt 1958 only - May 1 0:00 1:00 S
+Rule Egypt 1959 1981 - May 1 1:00 1:00 S
+Rule Egypt 1959 1965 - Sep 30 3:00 0 -
+Rule Egypt 1966 1994 - Oct 1 3:00 0 -
+Rule Egypt 1982 only - Jul 25 1:00 1:00 S
+Rule Egypt 1983 only - Jul 12 1:00 1:00 S
+Rule Egypt 1984 1988 - May 1 1:00 1:00 S
+Rule Egypt 1989 only - May 6 1:00 1:00 S
+Rule Egypt 1990 1994 - May 1 1:00 1:00 S
+# IATA (after 1990) says transitions are at 0:00.
+# Go with IATA starting in 1995, except correct 1995 entry from 09-30 to 09-29.
+Rule Egypt 1995 max - Apr lastFri 0:00s 1:00 S
+Rule Egypt 1995 2005 - Sep lastThu 23:00s 0 -
+# From Steffen Thorsen (2006-09-19):
+# The Egyptian Gazette, issue 41,090 (2006-09-18), page 1, reports:
+# Egypt will turn back clocks by one hour at the midnight of Thursday
+# after observing the daylight saving time since May.
+# http://news.gom.com.eg/gazette/pdf/2006/09/18/01.pdf
+Rule Egypt 2006 only - Sep 21 23:00s 0 -
+# From Dirk Losch (2007-08-14):
+# I received a mail from an airline which says that the daylight
+# saving time in Egypt will end in the night of 2007-09-06 to 2007-09-07.
+# From Jesper Norgaard Welen (2007-08-15): [The following agree:]
+# http://www.nentjes.info/Bill/bill5.htm
+# http://www.timeanddate.com/worldclock/city.html?n=53
+# From Steffen Thorsen (2007-09-04): The official information...:
+# http://www.sis.gov.eg/En/EgyptOnline/Miscellaneous/000002/0207000000000000001580.htm
+Rule Egypt 2007 only - Sep Thu>=1 23:00s 0 -
+# From Abdelrahman Hassan (2007-09-06):
+# Due to the Hijri (lunar Islamic calendar) year being 11 days shorter
+# than the year of the Gregorian calendar, Ramadan shifts earlier each
+# year. This year it will be observed September 13 (September is quite
+# hot in Egypt), and the idea is to make fasting easier for workers by
+# shifting business hours one hour out of daytime heat. Consequently,
+# unless discontinued, next DST may end Thursday 28 August 2008.
+# From Paul Eggert (2007-08-17):
+# For lack of better info, assume the new rule is last Thursday in August.
+Rule Egypt 2008 max - Aug lastThu 23:00s 0 -
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Cairo 2:05:00 - LMT 1900 Oct
+ 2:00 Egypt EE%sT
+
+# Equatorial Guinea
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Malabo 0:35:08 - LMT 1912
+ 0:00 - GMT 1963 Dec 15
+ 1:00 - WAT
+
+# Eritrea
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Asmara 2:35:32 - LMT 1870
+ 2:35:32 - AMT 1890 # Asmara Mean Time
+ 2:35:20 - ADMT 1936 May 5 # Adis Dera MT
+ 3:00 - EAT
+
+# Ethiopia
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that Ethiopia had six narrowly-spaced time zones
+# between 1870 and 1890, and that they merged to 38E50 (2:35:20) in 1890.
+# We'll guess that 38E50 is for Adis Dera.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Addis_Ababa 2:34:48 - LMT 1870
+ 2:35:20 - ADMT 1936 May 5 # Adis Dera MT
+ 3:00 - EAT
+
+# Gabon
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Libreville 0:37:48 - LMT 1912
+ 1:00 - WAT
+
+# Gambia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Banjul -1:06:36 - LMT 1912
+ -1:06:36 - BMT 1935 # Banjul Mean Time
+ -1:00 - WAT 1964
+ 0:00 - GMT
+
+# Ghana
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# Whitman says DST was observed from 1931 to ``the present'';
+# go with Shanks & Pottenger.
+Rule Ghana 1936 1942 - Sep 1 0:00 0:20 GHST
+Rule Ghana 1936 1942 - Dec 31 0:00 0 GMT
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Accra -0:00:52 - LMT 1918
+ 0:00 Ghana %s
+
+# Guinea
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Conakry -0:54:52 - LMT 1912
+ 0:00 - GMT 1934 Feb 26
+ -1:00 - WAT 1960
+ 0:00 - GMT
+
+# Guinea-Bissau
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Bissau -1:02:20 - LMT 1911 May 26
+ -1:00 - WAT 1975
+ 0:00 - GMT
+
+# Kenya
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Nairobi 2:27:16 - LMT 1928 Jul
+ 3:00 - EAT 1930
+ 2:30 - BEAT 1940
+ 2:44:45 - BEAUT 1960
+ 3:00 - EAT
+
+# Lesotho
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Maseru 1:50:00 - LMT 1903 Mar
+ 2:00 - SAST 1943 Sep 19 2:00
+ 2:00 1:00 SAST 1944 Mar 19 2:00
+ 2:00 - SAST
+
+# Liberia
+# From Paul Eggert (2006-03-22):
+# In 1972 Liberia was the last country to switch
+# from a UTC offset that was not a multiple of 15 or 20 minutes.
+# Howse reports that it was in honor of their president's birthday.
+# Shank & Pottenger report the date as May 1, whereas Howse reports Jan;
+# go with Shanks & Pottenger.
+# For Liberia before 1972, Shanks & Pottenger report -0:44, whereas Howse and
+# Whitman each report -0:44:30; go with the more precise figure.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Monrovia -0:43:08 - LMT 1882
+ -0:43:08 - MMT 1919 Mar # Monrovia Mean Time
+ -0:44:30 - LRT 1972 May # Liberia Time
+ 0:00 - GMT
+
+###############################################################################
+
+# Libya
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Libya 1951 only - Oct 14 2:00 1:00 S
+Rule Libya 1952 only - Jan 1 0:00 0 -
+Rule Libya 1953 only - Oct 9 2:00 1:00 S
+Rule Libya 1954 only - Jan 1 0:00 0 -
+Rule Libya 1955 only - Sep 30 0:00 1:00 S
+Rule Libya 1956 only - Jan 1 0:00 0 -
+Rule Libya 1982 1984 - Apr 1 0:00 1:00 S
+Rule Libya 1982 1985 - Oct 1 0:00 0 -
+Rule Libya 1985 only - Apr 6 0:00 1:00 S
+Rule Libya 1986 only - Apr 4 0:00 1:00 S
+Rule Libya 1986 only - Oct 3 0:00 0 -
+Rule Libya 1987 1989 - Apr 1 0:00 1:00 S
+Rule Libya 1987 1989 - Oct 1 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Tripoli 0:52:44 - LMT 1920
+ 1:00 Libya CE%sT 1959
+ 2:00 - EET 1982
+ 1:00 Libya CE%sT 1990 May 4
+# The following entries are from Shanks & Pottenger;
+# the IATA SSIM data contain some obvious errors.
+ 2:00 - EET 1996 Sep 30
+ 1:00 - CET 1997 Apr 4
+ 1:00 1:00 CEST 1997 Oct 4
+ 2:00 - EET
+
+# Madagascar
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Antananarivo 3:10:04 - LMT 1911 Jul
+ 3:00 - EAT 1954 Feb 27 23:00s
+ 3:00 1:00 EAST 1954 May 29 23:00s
+ 3:00 - EAT
+
+# Malawi
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Blantyre 2:20:00 - LMT 1903 Mar
+ 2:00 - CAT
+
+# Mali
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Bamako -0:32:00 - LMT 1912
+ 0:00 - GMT 1934 Feb 26
+ -1:00 - WAT 1960 Jun 20
+ 0:00 - GMT
+
+# Mauritania
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Nouakchott -1:03:48 - LMT 1912
+ 0:00 - GMT 1934 Feb 26
+ -1:00 - WAT 1960 Nov 28
+ 0:00 - GMT
+
+# Mauritius
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
+ 4:00 - MUT # Mauritius Time
+# Agalega Is, Rodriguez
+# no information; probably like Indian/Mauritius
+
+# Mayotte
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Mayotte 3:00:56 - LMT 1911 Jul # Mamoutzou
+ 3:00 - EAT
+
+# Morocco
+# See the `europe' file for Spanish Morocco (Africa/Ceuta).
+# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Morocco 1939 only - Sep 12 0:00 1:00 S
+Rule Morocco 1939 only - Nov 19 0:00 0 -
+Rule Morocco 1940 only - Feb 25 0:00 1:00 S
+Rule Morocco 1945 only - Nov 18 0:00 0 -
+Rule Morocco 1950 only - Jun 11 0:00 1:00 S
+Rule Morocco 1950 only - Oct 29 0:00 0 -
+Rule Morocco 1967 only - Jun 3 12:00 1:00 S
+Rule Morocco 1967 only - Oct 1 0:00 0 -
+Rule Morocco 1974 only - Jun 24 0:00 1:00 S
+Rule Morocco 1974 only - Sep 1 0:00 0 -
+Rule Morocco 1976 1977 - May 1 0:00 1:00 S
+Rule Morocco 1976 only - Aug 1 0:00 0 -
+Rule Morocco 1977 only - Sep 28 0:00 0 -
+Rule Morocco 1978 only - Jun 1 0:00 1:00 S
+Rule Morocco 1978 only - Aug 4 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
+ 0:00 Morocco WE%sT 1984 Mar 16
+ 1:00 - CET 1986
+ 0:00 - WET
+# Western Sahara
+Zone Africa/El_Aaiun -0:52:48 - LMT 1934 Jan
+ -1:00 - WAT 1976 Apr 14
+ 0:00 - WET
+
+# Mozambique
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Maputo 2:10:20 - LMT 1903 Mar
+ 2:00 - CAT
+
+# Namibia
+# The 1994-04-03 transition is from Shanks & Pottenger.
+# Shanks & Pottenger report no DST after 1998-04; go with IATA.
+
+# From Petronella Sibeene (2007-03-30) in
+# <http://allafrica.com/stories/200703300178.html>:
+# While the entire country changes its time, Katima Mulilo and other
+# settlements in Caprivi unofficially will not because the sun there
+# rises and sets earlier compared to other regions. Chief of
+# Forecasting Riaan van Zyl explained that the far eastern parts of
+# the country are close to 40 minutes earlier in sunrise than the rest
+# of the country.
+#
+# From Paul Eggert (2007-03-31):
+# Apparently the Caprivi Strip informally observes Botswana time, but
+# we have no details. In the meantime people there can use Africa/Gaborone.
+
+# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Namibia 1994 max - Sep Sun>=1 2:00 1:00 S
+Rule Namibia 1995 max - Apr Sun>=1 2:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8
+ 1:30 - SWAT 1903 Mar # SW Africa Time
+ 2:00 - SAST 1942 Sep 20 2:00
+ 2:00 1:00 SAST 1943 Mar 21 2:00
+ 2:00 - SAST 1990 Mar 21 # independence
+ 2:00 - CAT 1994 Apr 3
+ 1:00 Namibia WA%sT
+
+# Niger
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Niamey 0:08:28 - LMT 1912
+ -1:00 - WAT 1934 Feb 26
+ 0:00 - GMT 1960
+ 1:00 - WAT
+
+# Nigeria
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Lagos 0:13:36 - LMT 1919 Sep
+ 1:00 - WAT
+
+# Reunion
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Reunion 3:41:52 - LMT 1911 Jun # Saint-Denis
+ 4:00 - RET # Reunion Time
+#
+# Scattered Islands (Iles Eparses) administered from Reunion are as follows.
+# The following information about them is taken from
+# Iles Eparses (www.outre-mer.gouv.fr/domtom/ile.htm, 1997-07-22, in French;
+# no longer available as of 1999-08-17).
+# We have no info about their time zone histories.
+#
+# Bassas da India - uninhabited
+# Europa Island - inhabited from 1905 to 1910 by two families
+# Glorioso Is - inhabited until at least 1958
+# Juan de Nova - uninhabited
+# Tromelin - inhabited until at least 1958
+
+# Rwanda
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Kigali 2:00:16 - LMT 1935 Jun
+ 2:00 - CAT
+
+# St Helena
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Atlantic/St_Helena -0:22:48 - LMT 1890 # Jamestown
+ -0:22:48 - JMT 1951 # Jamestown Mean Time
+ 0:00 - GMT
+# The other parts of the St Helena territory are similar:
+# Tristan da Cunha: on GMT, say Whitman and the CIA
+# Ascension: on GMT, says usno1995 and the CIA
+# Gough (scientific station since 1955; sealers wintered previously):
+# on GMT, says the CIA
+# Inaccessible, Nightingale: no information, but probably GMT
+
+# Sao Tome and Principe
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Sao_Tome 0:26:56 - LMT 1884
+ -0:36:32 - LMT 1912 # Lisbon Mean Time
+ 0:00 - GMT
+
+# Senegal
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Dakar -1:09:44 - LMT 1912
+ -1:00 - WAT 1941 Jun
+ 0:00 - GMT
+
+# Seychelles
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Mahe 3:41:48 - LMT 1906 Jun # Victoria
+ 4:00 - SCT # Seychelles Time
+# From Paul Eggert (2001-05-30):
+# Aldabra, Farquhar, and Desroches, originally dependencies of the
+# Seychelles, were transferred to the British Indian Ocean Territory
+# in 1965 and returned to Seychelles control in 1976. We don't know
+# whether this affected their time zone, so omit this for now.
+# Possibly the islands were uninhabited.
+
+# Sierra Leone
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# Whitman gives Mar 31 - Aug 31 for 1931 on; go with Shanks & Pottenger.
+Rule SL 1935 1942 - Jun 1 0:00 0:40 SLST
+Rule SL 1935 1942 - Oct 1 0:00 0 WAT
+Rule SL 1957 1962 - Jun 1 0:00 1:00 SLST
+Rule SL 1957 1962 - Sep 1 0:00 0 GMT
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Freetown -0:53:00 - LMT 1882
+ -0:53:00 - FMT 1913 Jun # Freetown Mean Time
+ -1:00 SL %s 1957
+ 0:00 SL %s
+
+# Somalia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Mogadishu 3:01:28 - LMT 1893 Nov
+ 3:00 - EAT 1931
+ 2:30 - BEAT 1957
+ 3:00 - EAT
+
+# South Africa
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule SA 1942 1943 - Sep Sun>=15 2:00 1:00 -
+Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Johannesburg 1:52:00 - LMT 1892 Feb 8
+ 1:30 - SAST 1903 Mar
+ 2:00 SA SAST
+# Marion and Prince Edward Is
+# scientific station since 1947
+# no information
+
+# Sudan
+#
+# From <a href="http://www.sunanews.net/sn13jane.html">
+# Sudan News Agency (2000-01-13)
+# </a>, also reported by Michael De Beukelaer-Dossche via Steffen Thorsen:
+# Clocks will be moved ahead for 60 minutes all over the Sudan as of noon
+# Saturday.... This was announced Thursday by Caretaker State Minister for
+# Manpower Abdul-Rahman Nur-Eddin.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Sudan 1970 only - May 1 0:00 1:00 S
+Rule Sudan 1970 1985 - Oct 15 0:00 0 -
+Rule Sudan 1971 only - Apr 30 0:00 1:00 S
+Rule Sudan 1972 1985 - Apr lastSun 0:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Khartoum 2:10:08 - LMT 1931
+ 2:00 Sudan CA%sT 2000 Jan 15 12:00
+ 3:00 - EAT
+
+# Swaziland
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Mbabane 2:04:24 - LMT 1903 Mar
+ 2:00 - SAST
+
+# Tanzania
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Dar_es_Salaam 2:37:08 - LMT 1931
+ 3:00 - EAT 1948
+ 2:44:45 - BEAUT 1961
+ 3:00 - EAT
+
+# Togo
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Lome 0:04:52 - LMT 1893
+ 0:00 - GMT
+
+# Tunisia
+
+# From Gwillim Law (2005-04-30):
+# My correspondent, Risto Nykanen, has alerted me to another adoption of DST,
+# this time in Tunisia. According to Yahoo France News
+# <http://fr.news.yahoo.com/050426/5/4dumk.html>, in a story attributed to AP
+# and dated 2005-04-26, "Tunisia has decided to advance its official time by
+# one hour, starting on Sunday, May 1. Henceforth, Tunisian time will be
+# UTC+2 instead of UTC+1. The change will take place at 23:00 UTC next
+# Saturday." (My translation)
+#
+# From Oscar van Vlijmen (2005-05-02):
+# LaPresse, the first national daily newspaper ...
+# <http://www.lapresse.tn/archives/archives280405/actualites/lheure.html>
+# ... DST for 2005: on: Sun May 1 0h standard time, off: Fri Sept. 30,
+# 1h standard time.
+#
+# From Atef Loukil (2006-03-28):
+# The daylight saving time will be the same each year:
+# Beginning : the last Sunday of March at 02:00
+# Ending : the last Sunday of October at 03:00 ...
+# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=1188&Itemid=50
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Tunisia 1939 only - Apr 15 23:00s 1:00 S
+Rule Tunisia 1939 only - Nov 18 23:00s 0 -
+Rule Tunisia 1940 only - Feb 25 23:00s 1:00 S
+Rule Tunisia 1941 only - Oct 6 0:00 0 -
+Rule Tunisia 1942 only - Mar 9 0:00 1:00 S
+Rule Tunisia 1942 only - Nov 2 3:00 0 -
+Rule Tunisia 1943 only - Mar 29 2:00 1:00 S
+Rule Tunisia 1943 only - Apr 17 2:00 0 -
+Rule Tunisia 1943 only - Apr 25 2:00 1:00 S
+Rule Tunisia 1943 only - Oct 4 2:00 0 -
+Rule Tunisia 1944 1945 - Apr Mon>=1 2:00 1:00 S
+Rule Tunisia 1944 only - Oct 8 0:00 0 -
+Rule Tunisia 1945 only - Sep 16 0:00 0 -
+Rule Tunisia 1977 only - Apr 30 0:00s 1:00 S
+Rule Tunisia 1977 only - Sep 24 0:00s 0 -
+Rule Tunisia 1978 only - May 1 0:00s 1:00 S
+Rule Tunisia 1978 only - Oct 1 0:00s 0 -
+Rule Tunisia 1988 only - Jun 1 0:00s 1:00 S
+Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
+Rule Tunisia 1989 only - Mar 26 0:00s 1:00 S
+Rule Tunisia 1990 only - May 1 0:00s 1:00 S
+Rule Tunisia 2005 only - May 1 0:00s 1:00 S
+Rule Tunisia 2005 only - Sep 30 1:00s 0 -
+Rule Tunisia 2006 max - Mar lastSun 2:00s 1:00 S
+Rule Tunisia 2006 max - Oct lastSun 2:00s 0 -
+# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+# more precise 0:09:21.
+# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Tunis 0:40:44 - LMT 1881 May 12
+ 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
+ 1:00 Tunisia CE%sT
+
+# Uganda
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Kampala 2:09:40 - LMT 1928 Jul
+ 3:00 - EAT 1930
+ 2:30 - BEAT 1948
+ 2:44:45 - BEAUT 1957
+ 3:00 - EAT
+
+# Zambia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Lusaka 1:53:08 - LMT 1903 Mar
+ 2:00 - CAT
+
+# Zimbabwe
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Harare 2:04:12 - LMT 1903 Mar
+ 2:00 - CAT
diff --git a/jdk/make/sun/javazic/tzdata/antarctica b/jdk/make/sun/javazic/tzdata/antarctica
new file mode 100644
index 0000000..bed6d44
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/antarctica
@@ -0,0 +1,349 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# <pre>
+
+# From Paul Eggert (1999-11-15):
+# To keep things manageable, we list only locations occupied year-round; see
+# <a href="http://www.comnap.aq/comnap/comnap.nsf/P/Stations/">
+# COMNAP - Stations and Bases
+# </a>
+# and
+# <a href="http://www.spri.cam.ac.uk/bob/periant.htm">
+# Summary of the Peri-Antarctic Islands (1998-07-23)
+# </a>
+# for information.
+# Unless otherwise specified, we have no time zone information.
+#
+# Except for the French entries,
+# I made up all time zone abbreviations mentioned here; corrections welcome!
+# FORMAT is `zzz' and GMTOFF is 0 for locations while uninhabited.
+
+# These rules are stolen from the `europe' file.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule RussAQ 1981 1984 - Apr 1 0:00 1:00 S
+Rule RussAQ 1981 1983 - Oct 1 0:00 0 -
+Rule RussAQ 1984 1991 - Sep lastSun 2:00s 0 -
+Rule RussAQ 1985 1991 - Mar lastSun 2:00s 1:00 S
+Rule RussAQ 1992 only - Mar lastSat 23:00 1:00 S
+Rule RussAQ 1992 only - Sep lastSat 23:00 0 -
+Rule RussAQ 1993 max - Mar lastSun 2:00s 1:00 S
+Rule RussAQ 1993 1995 - Sep lastSun 2:00s 0 -
+Rule RussAQ 1996 max - Oct lastSun 2:00s 0 -
+
+# These rules are stolen from the `southamerica' file.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule ArgAQ 1964 1966 - Mar 1 0:00 0 -
+Rule ArgAQ 1964 1966 - Oct 15 0:00 1:00 S
+Rule ArgAQ 1967 only - Apr 2 0:00 0 -
+Rule ArgAQ 1967 1968 - Oct Sun>=1 0:00 1:00 S
+Rule ArgAQ 1968 1969 - Apr Sun>=1 0:00 0 -
+Rule ArgAQ 1974 only - Jan 23 0:00 1:00 S
+Rule ArgAQ 1974 only - May 1 0:00 0 -
+Rule ChileAQ 1972 1986 - Mar Sun>=9 3:00u 0 -
+Rule ChileAQ 1974 1987 - Oct Sun>=9 4:00u 1:00 S
+Rule ChileAQ 1987 only - Apr 12 3:00u 0 -
+Rule ChileAQ 1988 1989 - Mar Sun>=9 3:00u 0 -
+Rule ChileAQ 1988 only - Oct Sun>=1 4:00u 1:00 S
+Rule ChileAQ 1989 only - Oct Sun>=9 4:00u 1:00 S
+Rule ChileAQ 1990 only - Mar 18 3:00u 0 -
+Rule ChileAQ 1990 only - Sep 16 4:00u 1:00 S
+Rule ChileAQ 1991 1996 - Mar Sun>=9 3:00u 0 -
+Rule ChileAQ 1991 1997 - Oct Sun>=9 4:00u 1:00 S
+Rule ChileAQ 1997 only - Mar 30 3:00u 0 -
+Rule ChileAQ 1998 only - Mar Sun>=9 3:00u 0 -
+Rule ChileAQ 1998 only - Sep 27 4:00u 1:00 S
+Rule ChileAQ 1999 only - Apr 4 3:00u 0 -
+Rule ChileAQ 1999 max - Oct Sun>=9 4:00u 1:00 S
+Rule ChileAQ 2000 max - Mar Sun>=9 3:00u 0 -
+
+
+# Argentina - year-round bases
+# Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
+# Esperanza, San Martin Land, -6323-05659, since 1952-12-17
+# Jubany, Potter Peninsula, King George Island, -6414-0602320, since 1982-01
+# Marambio, Seymour I, -6414-05637, since 1969-10-29
+# Orcadas, Laurie I, -6016-04444, since 1904-02-22
+# San Martin, Debenham I, -6807-06708, since 1951-03-21
+# (except 1960-03 / 1976-03-21)
+
+# Australia - territories
+# Heard Island, McDonald Islands (uninhabited)
+# previously sealers and scientific personnel wintered
+# <a href="http://web.archive.org/web/20021204222245/http://www.dstc.qut.edu.au/DST/marg/daylight.html">
+# Margaret Turner reports
+# </a> (1999-09-30) that they're UTC+5, with no DST;
+# presumably this is when they have visitors.
+#
+# year-round bases
+# Casey, Bailey Peninsula, -6617+11032, since 1969
+# Davis, Vestfold Hills, -6835+07759, since 1957-01-13
+# (except 1964-11 - 1969-02)
+# Mawson, Holme Bay, -6736+06253, since 1954-02-13
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Antarctica/Casey 0 - zzz 1969
+ 8:00 - WST # Western (Aus) Standard Time
+Zone Antarctica/Davis 0 - zzz 1957 Jan 13
+ 7:00 - DAVT 1964 Nov # Davis Time
+ 0 - zzz 1969 Feb
+ 7:00 - DAVT
+Zone Antarctica/Mawson 0 - zzz 1954 Feb 13
+ 6:00 - MAWT # Mawson Time
+# References:
+# <a href="http://www.antdiv.gov.au/aad/exop/sfo/casey/casey_aws.html">
+# Casey Weather (1998-02-26)
+# </a>
+# <a href="http://www.antdiv.gov.au/aad/exop/sfo/davis/video.html">
+# Davis Station, Antarctica (1998-02-26)
+# </a>
+# <a href="http://www.antdiv.gov.au/aad/exop/sfo/mawson/video.html">
+# Mawson Station, Antarctica (1998-02-25)
+# </a>
+
+# Brazil - year-round base
+# Comandante Ferraz, King George Island, -6205+05824, since 1983/4
+
+# Chile - year-round bases and towns
+# Escudero, South Shetland Is, -621157-0585735, since 1994
+# Presidente Eduadro Frei, King George Island, -6214-05848, since 1969-03-07
+# General Bernardo O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02
+# Capitan Arturo Prat, -6230-05941
+# Villa Las Estrellas (a town), around the Frei base, since 1984-04-09
+# These locations have always used Santiago time; use TZ='America/Santiago'.
+
+# China - year-round bases
+# Great Wall, King George Island, -6213-05858, since 1985-02-20
+# Zhongshan, Larsemann Hills, Prydz Bay, -6922+07623, since 1989-02-26
+
+# France - year-round bases
+#
+# From Antoine Leca (1997-01-20):
+# Time data are from Nicole Pailleau at the IFRTP
+# (French Institute for Polar Research and Technology).
+# She confirms that French Southern Territories and Terre Adelie bases
+# don't observe daylight saving time, even if Terre Adelie supplies came
+# from Tasmania.
+#
+# French Southern Territories with year-round inhabitants
+#
+# Martin-de-Vivies Base, Amsterdam Island, -374105+0773155, since 1950
+# Alfred-Faure Base, Crozet Islands, -462551+0515152, since 1964
+# Port-aux-Francais, Kerguelen Islands, -492110+0701303, since 1951;
+# whaling & sealing station operated 1908/1914, 1920/1929, and 1951/1956
+#
+# St Paul Island - near Amsterdam, uninhabited
+# fishing stations operated variously 1819/1931
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Kerguelen 0 - zzz 1950 # Port-aux-Francais
+ 5:00 - TFT # ISO code TF Time
+#
+# year-round base in the main continent
+# Dumont-d'Urville, Ile des Petrels, -6640+14001, since 1956-11
+#
+# Another base at Port-Martin, 50km east, began operation in 1947.
+# It was destroyed by fire on 1952-01-14.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Antarctica/DumontDUrville 0 - zzz 1947
+ 10:00 - PMT 1952 Jan 14 # Port-Martin Time
+ 0 - zzz 1956 Nov
+ 10:00 - DDUT # Dumont-d'Urville Time
+# Reference:
+# <a href="http://en.wikipedia.org/wiki/Dumont_d'Urville_Station">
+# Dumont d'Urville Station (2005-12-05)
+# </a>
+
+# Germany - year-round base
+# Georg von Neumayer, -7039-00815
+
+# India - year-round base
+# Dakshin Gangotri, -7005+01200
+
+# Japan - year-round bases
+# Dome Fuji, -7719+03942
+# Syowa, -690022+0393524
+#
+# From Hideyuki Suzuki (1999-02-06):
+# In all Japanese stations, +0300 is used as the standard time.
+#
+# Syowa station, which is the first antarctic station of Japan,
+# was established on 1957-01-29. Since Syowa station is still the main
+# station of Japan, it's appropriate for the principal location.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Antarctica/Syowa 0 - zzz 1957 Jan 29
+ 3:00 - SYOT # Syowa Time
+# See:
+# <a href="http://www.nipr.ac.jp/english/ara01.html">
+# NIPR Antarctic Research Activities (1999-08-17)
+# </a>
+
+# S Korea - year-round base
+# King Sejong, King George Island, -6213-05847, since 1988
+
+# New Zealand - claims
+# Balleny Islands (never inhabited)
+# Scott Island (never inhabited)
+#
+# year-round base
+# Scott, Ross Island, since 1957-01, is like Antarctica/McMurdo.
+#
+# These rules for New Zealand are stolen from the `australasia' file.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule NZAQ 1974 only - Nov 3 2:00s 1:00 D
+Rule NZAQ 1975 1988 - Oct lastSun 2:00s 1:00 D
+Rule NZAQ 1989 only - Oct 8 2:00s 1:00 D
+Rule NZAQ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
+Rule NZAQ 1975 only - Feb 23 2:00s 0 S
+Rule NZAQ 1976 1989 - Mar Sun>=1 2:00s 0 S
+Rule NZAQ 1990 2007 - Mar Sun>=15 2:00s 0 S
+Rule NZAQ 2007 max - Sep lastSun 2:00s 1:00 D
+Rule NZAQ 2008 max - Apr Sun>=1 2:00s 0 S
+
+# Norway - territories
+# Bouvet (never inhabited)
+#
+# claims
+# Peter I Island (never inhabited)
+
+# Poland - year-round base
+# Arctowski, King George Island, -620945-0582745, since 1977
+
+# Russia - year-round bases
+# Bellingshausen, King George Island, -621159-0585337, since 1968-02-22
+# Mirny, Davis coast, -6633+09301, since 1956-02
+# Molodezhnaya, Alasheyev Bay, -6740+04551,
+# year-round from 1962-02 to 1999-07-01
+# Novolazarevskaya, Queen Maud Land, -7046+01150,
+# year-round from 1960/61 to 1992
+
+# Vostok, since 1957-12-16, temporarily closed 1994-02/1994-11
+# <a href="http://quest.arc.nasa.gov/antarctica/QA/computers/Directions,Time,ZIP">
+# From Craig Mundell (1994-12-15)</a>:
+# Vostok, which is one of the Russian stations, is set on the same
+# time as Moscow, Russia.
+#
+# From Lee Hotz (2001-03-08):
+# I queried the folks at Columbia who spent the summer at Vostok and this is
+# what they had to say about time there:
+# ``in the US Camp (East Camp) we have been on New Zealand (McMurdo)
+# time, which is 12 hours ahead of GMT. The Russian Station Vostok was
+# 6 hours behind that (although only 2 miles away, i.e. 6 hours ahead
+# of GMT). This is a time zone I think two hours east of Moscow. The
+# natural time zone is in between the two: 8 hours ahead of GMT.''
+#
+# From Paul Eggert (2001-05-04):
+# This seems to be hopelessly confusing, so I asked Lee Hotz about it
+# in person. He said that some Antartic locations set their local
+# time so that noon is the warmest part of the day, and that this
+# changes during the year and does not necessarily correspond to mean
+# solar noon. So the Vostok time might have been whatever the clocks
+# happened to be during their visit. So we still don't really know what time
+# it is at Vostok. But we'll guess UTC+6.
+#
+Zone Antarctica/Vostok 0 - zzz 1957 Dec 16
+ 6:00 - VOST # Vostok time
+
+# S Africa - year-round bases
+# Marion Island, -4653+03752
+# Sanae, -7141-00250
+
+# UK
+#
+# British Antarctic Territories (BAT) claims
+# South Orkney Islands
+# scientific station from 1903
+# whaling station at Signy I 1920/1926
+# South Shetland Islands
+#
+# year-round bases
+# Bird Island, South Georgia, -5400-03803, since 1983
+# Deception Island, -6259-06034, whaling station 1912/1931,
+# scientific station 1943/1967,
+# previously sealers and a scientific expedition wintered by accident,
+# and a garrison was deployed briefly
+# Halley, Coates Land, -7535-02604, since 1956-01-06
+# Halley is on a moving ice shelf and is periodically relocated
+# so that it is never more than 10km from its nominal location.
+# Rothera, Adelaide Island, -6734-6808, since 1976-12-01
+#
+# From Paul Eggert (2002-10-22)
+# <http://webexhibits.org/daylightsaving/g.html> says Rothera is -03 all year.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Antarctica/Rothera 0 - zzz 1976 Dec 1
+ -3:00 - ROTT # Rothera time
+
+# Uruguay - year round base
+# Artigas, King George Island, -621104-0585107
+
+# USA - year-round bases
+#
+# Palmer, Anvers Island, since 1965 (moved 2 miles in 1968)
+#
+# From Ethan Dicks (1996-10-06):
+# It keeps the same time as Punta Arenas, Chile, because, just like us
+# and the South Pole, that's the other end of their supply line....
+# I verified with someone who was there that since 1980,
+# Palmer has followed Chile. Prior to that, before the Falklands War,
+# Palmer used to be supplied from Argentina.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Antarctica/Palmer 0 - zzz 1965
+ -4:00 ArgAQ AR%sT 1969 Oct 5
+ -3:00 ArgAQ AR%sT 1982 May
+ -4:00 ChileAQ CL%sT
+#
+#
+# McMurdo, Ross Island, since 1955-12
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Antarctica/McMurdo 0 - zzz 1956
+ 12:00 NZAQ NZ%sT
+#
+# Amundsen-Scott, South Pole, continuously occupied since 1956-11-20
+#
+# From Paul Eggert (1996-09-03):
+# Normally it wouldn't have a separate entry, since it's like the
+# larger Antarctica/McMurdo since 1970, but it's too famous to omit.
+#
+# From Chris Carrier (1996-06-27):
+# Siple, the first commander of the South Pole station,
+# stated that he would have liked to have kept GMT at the station,
+# but that he found it more convenient to keep GMT+12
+# as supplies for the station were coming from McMurdo Sound,
+# which was on GMT+12 because New Zealand was on GMT+12 all year
+# at that time (1957). (Source: Siple's book 90 degrees SOUTH.)
+#
+# From Susan Smith
+# http://www.cybertours.com/whs/pole10.html
+# (1995-11-13 16:24:56 +1300, no longer available):
+# We use the same time as McMurdo does.
+# And they use the same time as Christchurch, NZ does....
+# One last quirk about South Pole time.
+# All the electric clocks are usually wrong.
+# Something about the generators running at 60.1hertz or something
+# makes all of the clocks run fast. So every couple of days,
+# we have to go around and set them back 5 minutes or so.
+# Maybe if we let them run fast all of the time, we'd get to leave here sooner!!
+#
+Link Antarctica/McMurdo Antarctica/South_Pole
diff --git a/jdk/make/sun/javazic/tzdata/asia b/jdk/make/sun/javazic/tzdata/asia
new file mode 100644
index 0000000..bec343b
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/asia
@@ -0,0 +1,1865 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# <pre>
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@elsie.nci.nih.gov for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+#
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually. Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Another source occasionally used is Edward W. Whitman, World Time Differences,
+# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+# I found in the UCLA library.
+#
+# A reliable and entertaining source about time zones is
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+#
+# I invented the abbreviations marked `*' in the following table;
+# the rest are from earlier versions of this file, or from other sources.
+# Corrections are welcome!
+# std dst
+# LMT Local Mean Time
+# 2:00 EET EEST Eastern European Time
+# 2:00 IST IDT Israel
+# 3:00 AST ADT Arabia*
+# 3:30 IRST IRDT Iran
+# 4:00 GST Gulf*
+# 5:30 IST India
+# 7:00 ICT Indochina*
+# 7:00 WIT west Indonesia
+# 8:00 CIT central Indonesia
+# 8:00 CST China
+# 9:00 CJT Central Japanese Time (1896/1937)*
+# 9:00 EIT east Indonesia
+# 9:00 JST JDT Japan
+# 9:00 KST KDT Korea
+# 9:30 CST (Australian) Central Standard Time
+#
+# See the `europe' file for Russia and Turkey in Asia.
+
+# From Guy Harris:
+# Incorporates data for Singapore from Robert Elz' asia 1.1, as well as
+# additional information from Tom Yap, Sun Microsystems Intercontinental
+# Technical Support (including a page from the Official Airline Guide -
+# Worldwide Edition). The names for time zones are guesses.
+
+###############################################################################
+
+# These rules are stolen from the `europe' file.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
+Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
+Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
+Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S
+Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 -
+Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
+Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 S
+Rule RussiaAsia 1981 1983 - Oct 1 0:00 0 -
+Rule RussiaAsia 1984 1991 - Sep lastSun 2:00s 0 -
+Rule RussiaAsia 1985 1991 - Mar lastSun 2:00s 1:00 S
+Rule RussiaAsia 1992 only - Mar lastSat 23:00 1:00 S
+Rule RussiaAsia 1992 only - Sep lastSat 23:00 0 -
+Rule RussiaAsia 1993 max - Mar lastSun 2:00s 1:00 S
+Rule RussiaAsia 1993 1995 - Sep lastSun 2:00s 0 -
+Rule RussiaAsia 1996 max - Oct lastSun 2:00s 0 -
+
+# Afghanistan
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Kabul 4:36:48 - LMT 1890
+ 4:00 - AFT 1945
+ 4:30 - AFT
+
+# Armenia
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger have Yerevan switching to 3:00 (with Russian DST)
+# in spring 1991, then to 4:00 with no DST in fall 1995, then
+# readopting Russian DST in 1997. Go with Shanks & Pottenger, even
+# when they disagree with others. Edgar Der-Danieliantz
+# reported (1996-05-04) that Yerevan probably wouldn't use DST
+# in 1996, though it did use DST in 1995. IATA SSIM (1991/1998) reports that
+# Armenia switched from 3:00 to 4:00 in 1998 and observed DST after 1991,
+# but started switching at 3:00s in 1998.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2
+ 3:00 - YERT 1957 Mar # Yerevan Time
+ 4:00 RussiaAsia YER%sT 1991 Mar 31 2:00s
+ 3:00 1:00 YERST 1991 Sep 23 # independence
+ 3:00 RussiaAsia AM%sT 1995 Sep 24 2:00s
+ 4:00 - AMT 1997
+ 4:00 RussiaAsia AM%sT
+
+# Azerbaijan
+# From Rustam Aliyev of the Azerbaijan Internet Forum (2005-10-23):
+# According to the resolution of Cabinet of Ministers, 1997
+# Resolution available at: http://aif.az/docs/daylight_res.pdf
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Azer 1997 max - Mar lastSun 4:00 1:00 S
+Rule Azer 1997 max - Oct lastSun 5:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Baku 3:19:24 - LMT 1924 May 2
+ 3:00 - BAKT 1957 Mar # Baku Time
+ 4:00 RussiaAsia BAK%sT 1991 Mar 31 2:00s
+ 3:00 1:00 BAKST 1991 Aug 30 # independence
+ 3:00 RussiaAsia AZ%sT 1992 Sep lastSat 23:00
+ 4:00 - AZT 1996 # Azerbaijan time
+ 4:00 EUAsia AZ%sT 1997
+ 4:00 Azer AZ%sT
+
+# Bahrain
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Bahrain 3:22:20 - LMT 1920 # Al Manamah
+ 4:00 - GST 1972 Jun
+ 3:00 - AST
+
+# Bangladesh
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Dhaka 6:01:40 - LMT 1890
+ 5:53:20 - HMT 1941 Oct # Howrah Mean Time?
+ 6:30 - BURT 1942 May 15 # Burma Time
+ 5:30 - IST 1942 Sep
+ 6:30 - BURT 1951 Sep 30
+ 6:00 - DACT 1971 Mar 26 # Dacca Time
+ 6:00 - BDT # Bangladesh Time
+
+# Bhutan
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Thimphu 5:58:36 - LMT 1947 Aug 15 # or Thimbu
+ 5:30 - IST 1987 Oct
+ 6:00 - BTT # Bhutan Time
+
+# British Indian Ocean Territory
+# Whitman and the 1995 CIA time zone map say 5:00, but the
+# 1997 and later maps say 6:00. Assume the switch occurred in 1996.
+# We have no information as to when standard time was introduced;
+# assume it occurred in 1907, the same year as Mauritius (which
+# then contained the Chagos Archipelago).
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Chagos 4:49:40 - LMT 1907
+ 5:00 - IOT 1996 # BIOT Time
+ 6:00 - IOT
+
+# Brunei
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Brunei 7:39:40 - LMT 1926 Mar # Bandar Seri Begawan
+ 7:30 - BNT 1933
+ 8:00 - BNT
+
+# Burma / Myanmar
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Rangoon 6:24:40 - LMT 1880 # or Yangon
+ 6:24:36 - RMT 1920 # Rangoon Mean Time?
+ 6:30 - BURT 1942 May # Burma Time
+ 9:00 - JST 1945 May 3
+ 6:30 - MMT # Myanmar Time
+
+# Cambodia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Phnom_Penh 6:59:40 - LMT 1906 Jun 9
+ 7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT?
+ 7:00 - ICT 1912 May
+ 8:00 - ICT 1931 May
+ 7:00 - ICT
+
+# China
+
+# From Guy Harris:
+# People's Republic of China. Yes, they really have only one time zone.
+
+# From Bob Devine (1988-01-28):
+# No they don't. See TIME mag, 1986-02-17 p.52. Even though
+# China is across 4 physical time zones, before Feb 1, 1986 only the
+# Peking (Bejing) time zone was recognized. Since that date, China
+# has two of 'em -- Peking's and Urumqi (named after the capital of
+# the Xinjiang Uyghur Autonomous Region). I don't know about DST for it.
+#
+# . . .I just deleted the DST table and this editor makes it too
+# painful to suck in another copy.. So, here is what I have for
+# DST start/end dates for Peking's time zone (info from AP):
+#
+# 1986 May 4 - Sept 14
+# 1987 mid-April - ??
+
+# From U. S. Naval Observatory (1989-01-19):
+# CHINA 8 H AHEAD OF UTC ALL OF CHINA, INCL TAIWAN
+# CHINA 9 H AHEAD OF UTC APR 17 - SEP 10
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that China (except for Hong Kong and Macau)
+# has had a single time zone since 1980 May 1, observing summer DST
+# from 1986 through 1991; this contradicts Devine's
+# note about Time magazine, though apparently _something_ happened in 1986.
+# Go with Shanks & Pottenger for now. I made up names for the other
+# pre-1980 time zones.
+
+# From Shanks & Pottenger:
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Shang 1940 only - Jun 3 0:00 1:00 D
+Rule Shang 1940 1941 - Oct 1 0:00 0 S
+Rule Shang 1941 only - Mar 16 0:00 1:00 D
+Rule PRC 1986 only - May 4 0:00 1:00 D
+Rule PRC 1986 1991 - Sep Sun>=11 0:00 0 S
+Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D
+
+# From Anthony Fok (2001-12-20):
+# BTW, I did some research on-line and found some info regarding these five
+# historic timezones from some Taiwan websites. And yes, there are official
+# Chinese names for these locales (before 1949).
+#
+# From Jesper Norgaard Welen (2006-07-14):
+# I have investigated the timezones around 1970 on the
+# http://www.astro.com/atlas site [with provinces and county
+# boundaries summarized below].... A few other exceptions were two
+# counties on the Sichuan side of the Xizang-Sichuan border,
+# counties Dege and Baiyu which lies on the Sichuan side and are
+# therefore supposed to be GMT+7, Xizang region being GMT+6, but Dege
+# county is GMT+8 according to astro.com while Baiyu county is GMT+6
+# (could be true), for the moment I am assuming that those two
+# counties are mistakes in the astro.com data.
+
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# Changbai Time ("Long-white Time", Long-white = Heilongjiang area)
+# Heilongjiang (except Mohe county), Jilin
+Zone Asia/Harbin 8:26:44 - LMT 1928 # or Haerbin
+ 8:30 - CHAT 1932 Mar # Changbai Time
+ 8:00 - CST 1940
+ 9:00 - CHAT 1966 May
+ 8:30 - CHAT 1980 May
+ 8:00 PRC C%sT
+# Zhongyuan Time ("Central plain Time")
+# most of China
+Zone Asia/Shanghai 8:05:52 - LMT 1928
+ 8:00 Shang C%sT 1949
+ 8:00 PRC C%sT
+# Long-shu Time (probably due to Long and Shu being two names of that area)
+# Guangxi, Guizhou, Hainan, Ningxia, Sichuan, Shaanxi, and Yunnan;
+# most of Gansu; west Inner Mongolia; west Qinghai; and the Guangdong
+# counties Deqing, Enping, Kaiping, Luoding, Taishan, Xinxing,
+# Yangchun, Yangjiang, Yu'nan, and Yunfu.
+Zone Asia/Chongqing 7:06:20 - LMT 1928 # or Chungking
+ 7:00 - LONT 1980 May # Long-shu Time
+ 8:00 PRC C%sT
+# Xin-zang Time ("Xinjiang-Tibet Time")
+# The Gansu counties Aksay, Anxi, Dunhuang, Subei; west Qinghai;
+# the Guangdong counties Xuwen, Haikang, Suixi, Lianjiang,
+# Zhanjiang, Wuchuan, Huazhou, Gaozhou, Maoming, Dianbai, and Xinyi;
+# east Tibet, including Lhasa, Chamdo, Shigaise, Jimsar, Shawan and Hutubi;
+# east Xinjiang, including Urumqi, Turpan, Karamay, Korla, Minfeng, Jinghe,
+# Wusu, Qiemo, Xinyan, Wulanwusu, Jinghe, Yumin, Tacheng, Tuoli, Emin,
+# Shihezi, Changji, Yanqi, Heshuo, Tuokexun, Tulufan, Shanshan, Hami,
+# Fukang, Kuitun, Kumukuli, Miquan, Qitai, and Turfan.
+Zone Asia/Urumqi 5:50:20 - LMT 1928 # or Urumchi
+ 6:00 - URUT 1980 May # Urumqi Time
+ 8:00 PRC C%sT
+# Kunlun Time
+# West Tibet, including Pulan, Aheqi, Shufu, Shule;
+# West Xinjiang, including Aksu, Atushi, Yining, Hetian, Cele, Luopu, Nileke,
+# Zhaosu, Tekesi, Gongliu, Chabuchaer, Huocheng, Bole, Pishan, Suiding,
+# and Yarkand.
+Zone Asia/Kashgar 5:03:56 - LMT 1928 # or Kashi or Kaxgar
+ 5:30 - KAST 1940 # Kashgar Time
+ 5:00 - KAST 1980 May
+ 8:00 PRC C%sT
+
+# Hong Kong (Xianggang)
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule HK 1946 only - Apr 20 3:30 1:00 S
+Rule HK 1946 only - Dec 1 3:30 0 -
+Rule HK 1947 only - Apr 13 3:30 1:00 S
+Rule HK 1947 only - Dec 30 3:30 0 -
+Rule HK 1948 only - May 2 3:30 1:00 S
+Rule HK 1948 1952 - Oct lastSun 3:30 0 -
+Rule HK 1949 1953 - Apr Sun>=1 3:30 1:00 S
+Rule HK 1953 only - Nov 1 3:30 0 -
+Rule HK 1954 1964 - Mar Sun>=18 3:30 1:00 S
+Rule HK 1954 only - Oct 31 3:30 0 -
+Rule HK 1955 1964 - Nov Sun>=1 3:30 0 -
+Rule HK 1965 1977 - Apr Sun>=16 3:30 1:00 S
+Rule HK 1965 1977 - Oct Sun>=16 3:30 0 -
+Rule HK 1979 1980 - May Sun>=8 3:30 1:00 S
+Rule HK 1979 1980 - Oct Sun>=16 3:30 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Hong_Kong 7:36:36 - LMT 1904 Oct 30
+ 8:00 HK HK%sT
+
+
+###############################################################################
+
+# Taiwan
+
+# Shanks & Pottenger write that Taiwan observed DST during 1945, when it
+# was still controlled by Japan. This is hard to believe, but we don't
+# have any other information.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Taiwan 1945 1951 - May 1 0:00 1:00 D
+Rule Taiwan 1945 1951 - Oct 1 0:00 0 S
+Rule Taiwan 1952 only - Mar 1 0:00 1:00 D
+Rule Taiwan 1952 1954 - Nov 1 0:00 0 S
+Rule Taiwan 1953 1959 - Apr 1 0:00 1:00 D
+Rule Taiwan 1955 1961 - Oct 1 0:00 0 S
+Rule Taiwan 1960 1961 - Jun 1 0:00 1:00 D
+Rule Taiwan 1974 1975 - Apr 1 0:00 1:00 D
+Rule Taiwan 1974 1975 - Oct 1 0:00 0 S
+Rule Taiwan 1980 only - Jun 30 0:00 1:00 D
+Rule Taiwan 1980 only - Sep 30 0:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Taipei 8:06:00 - LMT 1896 # or Taibei or T'ai-pei
+ 8:00 Taiwan C%sT
+
+# Macau (Macao, Aomen)
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Macau 1961 1962 - Mar Sun>=16 3:30 1:00 S
+Rule Macau 1961 1964 - Nov Sun>=1 3:30 0 -
+Rule Macau 1963 only - Mar Sun>=16 0:00 1:00 S
+Rule Macau 1964 only - Mar Sun>=16 3:30 1:00 S
+Rule Macau 1965 only - Mar Sun>=16 0:00 1:00 S
+Rule Macau 1965 only - Oct 31 0:00 0 -
+Rule Macau 1966 1971 - Apr Sun>=16 3:30 1:00 S
+Rule Macau 1966 1971 - Oct Sun>=16 3:30 0 -
+Rule Macau 1972 1974 - Apr Sun>=15 0:00 1:00 S
+Rule Macau 1972 1973 - Oct Sun>=15 0:00 0 -
+Rule Macau 1974 1977 - Oct Sun>=15 3:30 0 -
+Rule Macau 1975 1977 - Apr Sun>=15 3:30 1:00 S
+Rule Macau 1978 1980 - Apr Sun>=15 0:00 1:00 S
+Rule Macau 1978 1980 - Oct Sun>=15 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Macau 7:34:20 - LMT 1912
+ 8:00 Macau MO%sT 1999 Dec 20 # return to China
+ 8:00 PRC C%sT
+
+
+###############################################################################
+
+# Cyprus
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Cyprus 1975 only - Apr 13 0:00 1:00 S
+Rule Cyprus 1975 only - Oct 12 0:00 0 -
+Rule Cyprus 1976 only - May 15 0:00 1:00 S
+Rule Cyprus 1976 only - Oct 11 0:00 0 -
+Rule Cyprus 1977 1980 - Apr Sun>=1 0:00 1:00 S
+Rule Cyprus 1977 only - Sep 25 0:00 0 -
+Rule Cyprus 1978 only - Oct 2 0:00 0 -
+Rule Cyprus 1979 1997 - Sep lastSun 0:00 0 -
+Rule Cyprus 1981 1998 - Mar lastSun 0:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Nicosia 2:13:28 - LMT 1921 Nov 14
+ 2:00 Cyprus EE%sT 1998 Sep
+ 2:00 EUAsia EE%sT
+# IATA SSIM (1998-09) has Cyprus using EU rules for the first time.
+
+# Classically, Cyprus belongs to Asia; e.g. see Herodotus, Histories, I.72.
+# However, for various reasons many users expect to find it under Europe.
+Link Asia/Nicosia Europe/Nicosia
+
+# Georgia
+# From Paul Eggert (1994-11-19):
+# Today's _Economist_ (p 60) reports that Georgia moved its clocks forward
+# an hour recently, due to a law proposed by Zurab Murvanidze,
+# an MP who went on a hunger strike for 11 days to force discussion about it!
+# We have no details, but we'll guess they didn't move the clocks back in fall.
+#
+# From Mathew Englander, quoting AP (1996-10-23 13:05-04):
+# Instead of putting back clocks at the end of October, Georgia
+# will stay on daylight savings time this winter to save energy,
+# President Eduard Shevardnadze decreed Wednesday.
+#
+# From the BBC via Joseph S. Myers (2004-06-27):
+#
+# Georgia moved closer to Western Europe on Sunday... The former Soviet
+# republic has changed its time zone back to that of Moscow. As a result it
+# is now just four hours ahead of Greenwich Mean Time, rather than five hours
+# ahead. The switch was decreed by the pro-Western president of Georgia,
+# Mikhail Saakashvili, who said the change was partly prompted by the process
+# of integration into Europe.
+
+# From Teimuraz Abashidze (2005-11-07):
+# Government of Georgia ... decided to NOT CHANGE daylight savings time on
+# [Oct.] 30, as it was done before during last more than 10 years.
+# Currently, we are in fact GMT +4:00, as before 30 October it was GMT
+# +3:00.... The problem is, there is NO FORMAL LAW or governmental document
+# about it. As far as I can find, I was told, that there is no document,
+# because we just DIDN'T ISSUE document about switching to winter time....
+# I don't know what can be done, especially knowing that some years ago our
+# DST rules where changed THREE TIMES during one month.
+
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Tbilisi 2:59:16 - LMT 1880
+ 2:59:16 - TBMT 1924 May 2 # Tbilisi Mean Time
+ 3:00 - TBIT 1957 Mar # Tbilisi Time
+ 4:00 RussiaAsia TBI%sT 1991 Mar 31 2:00s
+ 3:00 1:00 TBIST 1991 Apr 9 # independence
+ 3:00 RussiaAsia GE%sT 1992 # Georgia Time
+ 3:00 E-EurAsia GE%sT 1994 Sep lastSun
+ 4:00 E-EurAsia GE%sT 1996 Oct lastSun
+ 4:00 1:00 GEST 1997 Mar lastSun
+ 4:00 E-EurAsia GE%sT 2004 Jun 27
+ 3:00 RussiaAsia GE%sT 2005 Mar lastSun 2:00
+ 4:00 - GET
+
+# East Timor
+
+# See Indonesia for the 1945 transition.
+
+# From Joao Carrascalao, brother of the former governor of East Timor, in
+# <a href="http://etan.org/et99c/december/26-31/30ETMAY.htm">
+# East Timor may be late for its millennium
+# </a> (1999-12-26/31):
+# Portugal tried to change the time forward in 1974 because the sun
+# rises too early but the suggestion raised a lot of problems with the
+# Timorese and I still don't think it would work today because it
+# conflicts with their way of life.
+
+# From Paul Eggert (2000-12-04):
+# We don't have any record of the above attempt.
+# Most likely our records are incomplete, but we have no better data.
+
+# <a href="http://www.hri.org/news/world/undh/last/00-08-16.undh.html">
+# From Manoel de Almeida e Silva, Deputy Spokesman for the UN Secretary-General
+# (2000-08-16)</a>:
+# The Cabinet of the East Timor Transition Administration decided
+# today to advance East Timor's time by one hour. The time change,
+# which will be permanent, with no seasonal adjustment, will happen at
+# midnight on Saturday, September 16.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Dili 8:22:20 - LMT 1912
+ 8:00 - TLT 1942 Feb 21 23:00 # E Timor Time
+ 9:00 - JST 1945 Sep 23
+ 9:00 - TLT 1976 May 3
+ 8:00 - CIT 2000 Sep 17 00:00
+ 9:00 - TLT
+
+# India
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Calcutta 5:53:28 - LMT 1880 # Kolkata
+ 5:53:20 - HMT 1941 Oct # Howrah Mean Time?
+ 6:30 - BURT 1942 May 15 # Burma Time
+ 5:30 - IST 1942 Sep
+ 5:30 1:00 IST 1945 Oct 15
+ 5:30 - IST
+# The following are like Asia/Calcutta:
+# Andaman Is
+# Lakshadweep (Laccadive, Minicoy and Amindivi Is)
+# Nicobar Is
+
+# Indonesia
+#
+# From Gwillim Law (2001-05-28), overriding Shanks & Pottenger:
+# <http://www.sumatera-inc.com/go_to_invest/about_indonesia.asp#standtime>
+# says that Indonesia's time zones changed on 1988-01-01. Looking at some
+# time zone maps, I think that must refer to Western Borneo (Kalimantan Barat
+# and Kalimantan Tengah) switching from UTC+8 to UTC+7.
+#
+# From Paul Eggert (2007-03-10):
+# Here is another correction to Shanks & Pottenger.
+# JohnTWB writes that Japanese forces did not surrender control in
+# Indonesia until 1945-09-01 00:00 at the earliest (in Jakarta) and
+# other formal surrender ceremonies were September 9, 11, and 13, plus
+# September 12 for the regional surrender to Mountbatten in Singapore.
+# These would be the earliest possible times for a change.
+# Regimes horaires pour le monde entier, by Henri Le Corre, (Editions
+# Traditionnelles, 1987, Paris) says that Java and Madura switched
+# from JST to UTC+07:30 on 1945-09-23, and gives 1944-09-01 for Jayapura
+# (Hollandia). For now, assume all Indonesian locations other than Jayapura
+# switched on 1945-09-23.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Jakarta 7:07:12 - LMT 1867 Aug 10
+# Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,
+# but this must be a typo.
+ 7:07:12 - JMT 1923 Dec 31 23:47:12 # Jakarta
+ 7:20 - JAVT 1932 Nov # Java Time
+ 7:30 - WIT 1942 Mar 23
+ 9:00 - JST 1945 Sep 23
+ 7:30 - WIT 1948 May
+ 8:00 - WIT 1950 May
+ 7:30 - WIT 1964
+ 7:00 - WIT
+Zone Asia/Pontianak 7:17:20 - LMT 1908 May
+ 7:17:20 - PMT 1932 Nov # Pontianak MT
+ 7:30 - WIT 1942 Jan 29
+ 9:00 - JST 1945 Sep 23
+ 7:30 - WIT 1948 May
+ 8:00 - WIT 1950 May
+ 7:30 - WIT 1964
+ 8:00 - CIT 1988 Jan 1
+ 7:00 - WIT
+Zone Asia/Makassar 7:57:36 - LMT 1920
+ 7:57:36 - MMT 1932 Nov # Macassar MT
+ 8:00 - CIT 1942 Feb 9
+ 9:00 - JST 1945 Sep 23
+ 8:00 - CIT
+Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov
+ 9:00 - EIT 1944 Sep 1
+ 9:30 - CST 1964
+ 9:00 - EIT
+
+# Iran
+
+# From Roozbeh Pournader (2003-03-15):
+# This is an English translation of what I just found (originally in Persian).
+# The Gregorian dates in brackets are mine:
+#
+# Official Newspaper No. 13548-1370/6/25 [1991-09-16]
+# No. 16760/T233 H 1370/6/10 [1991-09-01]
+#
+# The Rule About Change of the Official Time of the Country
+#
+# The Board of Ministers, in the meeting dated 1370/5/23 [1991-08-14],
+# based on the suggestion number 2221/D dated 1370/4/22 [1991-07-13]
+# of the Country's Organization for Official and Employment Affairs,
+# and referring to the law for equating the working hours of workers
+# and officers in the whole country dated 1359/4/23 [1980-07-14], and
+# for synchronizing the official times of the country, agreed that:
+#
+# The official time of the country will should move forward one hour
+# at the 24[:00] hours of the first day of Farvardin and should return
+# to its previous state at the 24[:00] hours of the 30th day of
+# Shahrivar.
+#
+# First Deputy to the President - Hassan Habibi
+#
+# From personal experience, that agrees with what has been followed
+# for at least the last 5 years. Before that, for a few years, the
+# date used was the first Thursday night of Farvardin and the last
+# Thursday night of Shahrivar, but I can't give exact dates....
+# I have also changed the abbreviations to what is considered correct
+# here in Iran, IRST for regular time and IRDT for daylight saving time.
+#
+# From Roozbeh Pournader (2005-04-05):
+# The text of the Iranian law, in effect since 1925, clearly mentions
+# that the true solar year is the measure, and there is no arithmetic
+# leap year calculation involved. There has never been any serious
+# plan to change that law....
+#
+# From Paul Eggert (2006-03-22):
+# Go with Shanks & Pottenger before Sept. 1991, and with Pournader thereafter.
+# I used Ed Reingold's cal-persia in GNU Emacs 21.2 to check Persian dates,
+# stopping after 2037 when 32-bit time_t's overflow.
+# That cal-persia used Birashk's approximation, which disagrees with the solar
+# calendar predictions for the year 2025, so I corrected those dates by hand.
+#
+# From Oscar van Vlijmen (2005-03-30), writing about future
+# discrepancies between cal-persia and the Iranian calendar:
+# For 2091 solar-longitude-after yields 2091-03-20 08:40:07.7 UT for
+# the vernal equinox and that gets so close to 12:00 some local
+# Iranian time that the definition of the correct location needs to be
+# known exactly, amongst other factors. 2157 is even closer:
+# 2157-03-20 08:37:15.5 UT. But the Gregorian year 2025 should give
+# no interpretation problem whatsoever. By the way, another instant
+# in the near future where there will be a discrepancy between
+# arithmetical and astronomical Iranian calendars will be in 2058:
+# vernal equinox on 2058-03-20 09:03:05.9 UT. The Java version of
+# Reingold's/Dershowitz' calculator gives correctly the Gregorian date
+# 2058-03-21 for 1 Farvardin 1437 (astronomical).
+#
+# From Steffen Thorsen (2006-03-22):
+# Several of my users have reported that Iran will not observe DST anymore:
+# http://www.irna.ir/en/news/view/line-17/0603193812164948.htm
+#
+# From Reuters (2007-09-16), with a heads-up from Jesper Norgaard Welen:
+# ... the Guardian Council ... approved a law on Sunday to re-introduce
+# daylight saving time ...
+# http://uk.reuters.com/article/oilRpt/idUKBLA65048420070916
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Iran 1978 1980 - Mar 21 0:00 1:00 D
+Rule Iran 1978 only - Oct 21 0:00 0 S
+Rule Iran 1979 only - Sep 19 0:00 0 S
+Rule Iran 1980 only - Sep 23 0:00 0 S
+Rule Iran 1991 only - May 3 0:00 1:00 D
+Rule Iran 1992 1995 - Mar 22 0:00 1:00 D
+Rule Iran 1991 1995 - Sep 22 0:00 0 S
+Rule Iran 1996 only - Mar 21 0:00 1:00 D
+Rule Iran 1996 only - Sep 21 0:00 0 S
+Rule Iran 1997 1999 - Mar 22 0:00 1:00 D
+Rule Iran 1997 1999 - Sep 22 0:00 0 S
+Rule Iran 2000 only - Mar 21 0:00 1:00 D
+Rule Iran 2000 only - Sep 21 0:00 0 S
+Rule Iran 2001 2003 - Mar 22 0:00 1:00 D
+Rule Iran 2001 2003 - Sep 22 0:00 0 S
+Rule Iran 2004 only - Mar 21 0:00 1:00 D
+Rule Iran 2004 only - Sep 21 0:00 0 S
+Rule Iran 2005 only - Mar 22 0:00 1:00 D
+Rule Iran 2005 only - Sep 22 0:00 0 S
+Rule Iran 2008 only - Mar 21 0:00 1:00 D
+Rule Iran 2008 only - Sep 21 0:00 0 S
+Rule Iran 2009 2011 - Mar 22 0:00 1:00 D
+Rule Iran 2009 2011 - Sep 22 0:00 0 S
+Rule Iran 2012 only - Mar 21 0:00 1:00 D
+Rule Iran 2012 only - Sep 21 0:00 0 S
+Rule Iran 2013 2015 - Mar 22 0:00 1:00 D
+Rule Iran 2013 2015 - Sep 22 0:00 0 S
+Rule Iran 2016 only - Mar 21 0:00 1:00 D
+Rule Iran 2016 only - Sep 21 0:00 0 S
+Rule Iran 2017 2019 - Mar 22 0:00 1:00 D
+Rule Iran 2017 2019 - Sep 22 0:00 0 S
+Rule Iran 2020 only - Mar 21 0:00 1:00 D
+Rule Iran 2020 only - Sep 21 0:00 0 S
+Rule Iran 2021 2023 - Mar 22 0:00 1:00 D
+Rule Iran 2021 2023 - Sep 22 0:00 0 S
+Rule Iran 2024 only - Mar 21 0:00 1:00 D
+Rule Iran 2024 only - Sep 21 0:00 0 S
+Rule Iran 2025 2027 - Mar 22 0:00 1:00 D
+Rule Iran 2025 2027 - Sep 22 0:00 0 S
+Rule Iran 2028 2029 - Mar 21 0:00 1:00 D
+Rule Iran 2028 2029 - Sep 21 0:00 0 S
+Rule Iran 2030 2031 - Mar 22 0:00 1:00 D
+Rule Iran 2030 2031 - Sep 22 0:00 0 S
+Rule Iran 2032 2033 - Mar 21 0:00 1:00 D
+Rule Iran 2032 2033 - Sep 21 0:00 0 S
+Rule Iran 2034 2035 - Mar 22 0:00 1:00 D
+Rule Iran 2034 2035 - Sep 22 0:00 0 S
+Rule Iran 2036 2037 - Mar 21 0:00 1:00 D
+Rule Iran 2036 2037 - Sep 21 0:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Tehran 3:25:44 - LMT 1916
+ 3:25:44 - TMT 1946 # Tehran Mean Time
+ 3:30 - IRST 1977 Nov
+ 4:00 Iran IR%sT 1979
+ 3:30 Iran IR%sT
+
+
+# Iraq
+#
+# From Jonathan Lennox (2000-06-12):
+# An article in this week's Economist ("Inside the Saddam-free zone", p. 50 in
+# the U.S. edition) on the Iraqi Kurds contains a paragraph:
+# "The three northern provinces ... switched their clocks this spring and
+# are an hour ahead of Baghdad."
+#
+# But Rives McDow (2000-06-18) quotes a contact in Iraqi-Kurdistan as follows:
+# In the past, some Kurdish nationalists, as a protest to the Iraqi
+# Government, did not adhere to daylight saving time. They referred
+# to daylight saving as Saddam time. But, as of today, the time zone
+# in Iraqi-Kurdistan is on standard time with Baghdad, Iraq.
+#
+# So we'll ignore the Economist's claim.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Iraq 1982 only - May 1 0:00 1:00 D
+Rule Iraq 1982 1984 - Oct 1 0:00 0 S
+Rule Iraq 1983 only - Mar 31 0:00 1:00 D
+Rule Iraq 1984 1985 - Apr 1 0:00 1:00 D
+Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 S
+Rule Iraq 1986 1990 - Mar lastSun 1:00s 1:00 D
+# IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the `:01' is a typo.
+# Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this.
+#
+Rule Iraq 1991 max - Apr 1 3:00s 1:00 D
+Rule Iraq 1991 max - Oct 1 3:00s 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Baghdad 2:57:40 - LMT 1890
+ 2:57:36 - BMT 1918 # Baghdad Mean Time?
+ 3:00 - AST 1982 May
+ 3:00 Iraq A%sT
+
+
+###############################################################################
+
+# Israel
+
+# From Ephraim Silverberg (2001-01-11):
+#
+# I coined "IST/IDT" circa 1988. Until then there were three
+# different abbreviations in use:
+#
+# JST Jerusalem Standard Time [Danny Braniss, Hebrew University]
+# IZT Israel Zonal (sic) Time [Prof. Haim Papo, Technion]
+# EEST Eastern Europe Standard Time [used by almost everyone else]
+#
+# Since timezones should be called by country and not capital cities,
+# I ruled out JST. As Israel is in Asia Minor and not Eastern Europe,
+# EEST was equally unacceptable. Since "zonal" was not compatible with
+# any other timezone abbreviation, I felt that 'IST' was the way to go
+# and, indeed, it has received almost universal acceptance in timezone
+# settings in Israeli computers.
+#
+# In any case, I am happy to share timezone abbreviations with India,
+# high on my favorite-country list (and not only because my wife's
+# family is from India).
+
+# From Shanks & Pottenger:
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Zion 1940 only - Jun 1 0:00 1:00 D
+Rule Zion 1942 1944 - Nov 1 0:00 0 S
+Rule Zion 1943 only - Apr 1 2:00 1:00 D
+Rule Zion 1944 only - Apr 1 0:00 1:00 D
+Rule Zion 1945 only - Apr 16 0:00 1:00 D
+Rule Zion 1945 only - Nov 1 2:00 0 S
+Rule Zion 1946 only - Apr 16 2:00 1:00 D
+Rule Zion 1946 only - Nov 1 0:00 0 S
+Rule Zion 1948 only - May 23 0:00 2:00 DD
+Rule Zion 1948 only - Sep 1 0:00 1:00 D
+Rule Zion 1948 1949 - Nov 1 2:00 0 S
+Rule Zion 1949 only - May 1 0:00 1:00 D
+Rule Zion 1950 only - Apr 16 0:00 1:00 D
+Rule Zion 1950 only - Sep 15 3:00 0 S
+Rule Zion 1951 only - Apr 1 0:00 1:00 D
+Rule Zion 1951 only - Nov 11 3:00 0 S
+Rule Zion 1952 only - Apr 20 2:00 1:00 D
+Rule Zion 1952 only - Oct 19 3:00 0 S
+Rule Zion 1953 only - Apr 12 2:00 1:00 D
+Rule Zion 1953 only - Sep 13 3:00 0 S
+Rule Zion 1954 only - Jun 13 0:00 1:00 D
+Rule Zion 1954 only - Sep 12 0:00 0 S
+Rule Zion 1955 only - Jun 11 2:00 1:00 D
+Rule Zion 1955 only - Sep 11 0:00 0 S
+Rule Zion 1956 only - Jun 3 0:00 1:00 D
+Rule Zion 1956 only - Sep 30 3:00 0 S
+Rule Zion 1957 only - Apr 29 2:00 1:00 D
+Rule Zion 1957 only - Sep 22 0:00 0 S
+Rule Zion 1974 only - Jul 7 0:00 1:00 D
+Rule Zion 1974 only - Oct 13 0:00 0 S
+Rule Zion 1975 only - Apr 20 0:00 1:00 D
+Rule Zion 1975 only - Aug 31 0:00 0 S
+Rule Zion 1985 only - Apr 14 0:00 1:00 D
+Rule Zion 1985 only - Sep 15 0:00 0 S
+Rule Zion 1986 only - May 18 0:00 1:00 D
+Rule Zion 1986 only - Sep 7 0:00 0 S
+Rule Zion 1987 only - Apr 15 0:00 1:00 D
+Rule Zion 1987 only - Sep 13 0:00 0 S
+Rule Zion 1988 only - Apr 9 0:00 1:00 D
+Rule Zion 1988 only - Sep 3 0:00 0 S
+
+# From Ephraim Silverberg
+# (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22,
+# and 2005-02-17):
+
+# According to the Office of the Secretary General of the Ministry of
+# Interior, there is NO set rule for Daylight-Savings/Standard time changes.
+# One thing is entrenched in law, however: that there must be at least 150
+# days of daylight savings time annually. From 1993-1998, the change to
+# daylight savings time was on a Friday morning from midnight IST to
+# 1 a.m IDT; up until 1998, the change back to standard time was on a
+# Saturday night from midnight daylight savings time to 11 p.m. standard
+# time. 1996 is an exception to this rule where the change back to standard
+# time took place on Sunday night instead of Saturday night to avoid
+# conflicts with the Jewish New Year. In 1999, the change to
+# daylight savings time was still on a Friday morning but from
+# 2 a.m. IST to 3 a.m. IDT; furthermore, the change back to standard time
+# was also on a Friday morning from 2 a.m. IDT to 1 a.m. IST for
+# 1999 only. In the year 2000, the change to daylight savings time was
+# similar to 1999, but although the change back will be on a Friday, it
+# will take place from 1 a.m. IDT to midnight IST. Starting in 2001, all
+# changes to/from will take place at 1 a.m. old time, but now there is no
+# rule as to what day of the week it will take place in as the start date
+# (except in 2003) is the night after the Passover Seder (i.e. the eve
+# of the 16th of Nisan in the lunar Hebrew calendar) and the end date
+# (except in 2002) is three nights before Yom Kippur [Day of Atonement]
+# (the eve of the 7th of Tishrei in the lunar Hebrew calendar).
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Zion 1989 only - Apr 30 0:00 1:00 D
+Rule Zion 1989 only - Sep 3 0:00 0 S
+Rule Zion 1990 only - Mar 25 0:00 1:00 D
+Rule Zion 1990 only - Aug 26 0:00 0 S
+Rule Zion 1991 only - Mar 24 0:00 1:00 D
+Rule Zion 1991 only - Sep 1 0:00 0 S
+Rule Zion 1992 only - Mar 29 0:00 1:00 D
+Rule Zion 1992 only - Sep 6 0:00 0 S
+Rule Zion 1993 only - Apr 2 0:00 1:00 D
+Rule Zion 1993 only - Sep 5 0:00 0 S
+
+# The dates for 1994-1995 were obtained from Office of the Spokeswoman for the
+# Ministry of Interior, Jerusalem, Israel. The spokeswoman can be reached by
+# calling the office directly at 972-2-6701447 or 972-2-6701448.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Zion 1994 only - Apr 1 0:00 1:00 D
+Rule Zion 1994 only - Aug 28 0:00 0 S
+Rule Zion 1995 only - Mar 31 0:00 1:00 D
+Rule Zion 1995 only - Sep 3 0:00 0 S
+
+# The dates for 1996 were determined by the Minister of Interior of the
+# time, Haim Ramon. The official announcement regarding 1996-1998
+# (with the dates for 1997-1998 no longer being relevant) can be viewed at:
+#
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/1996-1998.ramon.ps.gz
+#
+# The dates for 1997-1998 were altered by his successor, Rabbi Eli Suissa.
+#
+# The official announcements for the years 1997-1999 can be viewed at:
+#
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/YYYY.ps.gz
+#
+# where YYYY is the relevant year.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Zion 1996 only - Mar 15 0:00 1:00 D
+Rule Zion 1996 only - Sep 16 0:00 0 S
+Rule Zion 1997 only - Mar 21 0:00 1:00 D
+Rule Zion 1997 only - Sep 14 0:00 0 S
+Rule Zion 1998 only - Mar 20 0:00 1:00 D
+Rule Zion 1998 only - Sep 6 0:00 0 S
+Rule Zion 1999 only - Apr 2 2:00 1:00 D
+Rule Zion 1999 only - Sep 3 2:00 0 S
+
+# The Knesset Interior Committee has changed the dates for 2000 for
+# the third time in just over a year and have set new dates for the
+# years 2001-2004 as well.
+#
+# The official announcement for the start date of 2000 can be viewed at:
+#
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-start.ps.gz
+#
+# The official announcement for the end date of 2000 and the dates
+# for the years 2001-2004 can be viewed at:
+#
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Zion 2000 only - Apr 14 2:00 1:00 D
+Rule Zion 2000 only - Oct 6 1:00 0 S
+Rule Zion 2001 only - Apr 9 1:00 1:00 D
+Rule Zion 2001 only - Sep 24 1:00 0 S
+Rule Zion 2002 only - Mar 29 1:00 1:00 D
+Rule Zion 2002 only - Oct 7 1:00 0 S
+Rule Zion 2003 only - Mar 28 1:00 1:00 D
+Rule Zion 2003 only - Oct 3 1:00 0 S
+Rule Zion 2004 only - Apr 7 1:00 1:00 D
+Rule Zion 2004 only - Sep 22 1:00 0 S
+
+# The proposed law agreed upon by the Knesset Interior Committee on
+# 2005-02-14 is that, for 2005 and beyond, DST starts at 02:00 the
+# last Friday before April 2nd (i.e. the last Friday in March or April
+# 1st itself if it falls on a Friday) and ends at 02:00 on the Saturday
+# night _before_ the fast of Yom Kippur.
+#
+# Those who can read Hebrew can view the announcement at:
+#
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
+
+# From Paul Eggert (2005-02-22):
+# I used Ephraim Silverberg's dst-israel.el program
+# <ftp://ftp.cs.huji.ac.il/pub/tz/software/dst-israel.el> (2005-02-20)
+# along with Ed Reingold's cal-hebrew in GNU Emacs 21.4,
+# to generate the transitions in this list.
+# (I replaced "lastFri" with "Fri>=26" by hand.)
+# The spring transitions below all correspond to the following Rule:
+#
+# Rule Zion 2005 max - Mar Fri>=26 2:00 1:00 D
+#
+# but older zic implementations (e.g., Solaris 8) do not support
+# "Fri>=26" to mean April 1 in years like 2005, so for now we list the
+# springtime transitions explicitly.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Zion 2005 only - Apr 1 2:00 1:00 D
+Rule Zion 2005 only - Oct 9 2:00 0 S
+Rule Zion 2006 2010 - Mar Fri>=26 2:00 1:00 D
+Rule Zion 2006 only - Oct 1 2:00 0 S
+Rule Zion 2007 only - Sep 16 2:00 0 S
+Rule Zion 2008 only - Oct 5 2:00 0 S
+Rule Zion 2009 only - Sep 27 2:00 0 S
+Rule Zion 2010 only - Sep 12 2:00 0 S
+Rule Zion 2011 only - Apr 1 2:00 1:00 D
+Rule Zion 2011 only - Oct 2 2:00 0 S
+Rule Zion 2012 2015 - Mar Fri>=26 2:00 1:00 D
+Rule Zion 2012 only - Sep 23 2:00 0 S
+Rule Zion 2013 only - Sep 8 2:00 0 S
+Rule Zion 2014 only - Sep 28 2:00 0 S
+Rule Zion 2015 only - Sep 20 2:00 0 S
+Rule Zion 2016 only - Apr 1 2:00 1:00 D
+Rule Zion 2016 only - Oct 9 2:00 0 S
+Rule Zion 2017 2021 - Mar Fri>=26 2:00 1:00 D
+Rule Zion 2017 only - Sep 24 2:00 0 S
+Rule Zion 2018 only - Sep 16 2:00 0 S
+Rule Zion 2019 only - Oct 6 2:00 0 S
+Rule Zion 2020 only - Sep 27 2:00 0 S
+Rule Zion 2021 only - Sep 12 2:00 0 S
+Rule Zion 2022 only - Apr 1 2:00 1:00 D
+Rule Zion 2022 only - Oct 2 2:00 0 S
+Rule Zion 2023 2032 - Mar Fri>=26 2:00 1:00 D
+Rule Zion 2023 only - Sep 24 2:00 0 S
+Rule Zion 2024 only - Oct 6 2:00 0 S
+Rule Zion 2025 only - Sep 28 2:00 0 S
+Rule Zion 2026 only - Sep 20 2:00 0 S
+Rule Zion 2027 only - Oct 10 2:00 0 S
+Rule Zion 2028 only - Sep 24 2:00 0 S
+Rule Zion 2029 only - Sep 16 2:00 0 S
+Rule Zion 2030 only - Oct 6 2:00 0 S
+Rule Zion 2031 only - Sep 21 2:00 0 S
+Rule Zion 2032 only - Sep 12 2:00 0 S
+Rule Zion 2033 only - Apr 1 2:00 1:00 D
+Rule Zion 2033 only - Oct 2 2:00 0 S
+Rule Zion 2034 2037 - Mar Fri>=26 2:00 1:00 D
+Rule Zion 2034 only - Sep 17 2:00 0 S
+Rule Zion 2035 only - Oct 7 2:00 0 S
+Rule Zion 2036 only - Sep 28 2:00 0 S
+Rule Zion 2037 only - Sep 13 2:00 0 S
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Jerusalem 2:20:56 - LMT 1880
+ 2:20:40 - JMT 1918 # Jerusalem Mean Time?
+ 2:00 Zion I%sT
+
+
+
+###############################################################################
+
+# Japan
+
+# `9:00' and `JST' is from Guy Harris.
+
+# From Paul Eggert (1995-03-06):
+# Today's _Asahi Evening News_ (page 4) reports that Japan had
+# daylight saving between 1948 and 1951, but ``the system was discontinued
+# because the public believed it would lead to longer working hours.''
+
+# From Mayumi Negishi in the 2005-08-10 Japan Times
+# <http://www.japantimes.co.jp/cgi-bin/getarticle.pl5?nn20050810f2.htm>:
+# Occupation authorities imposed daylight-saving time on Japan on
+# [1948-05-01].... But lack of prior debate and the execution of
+# daylight-saving time just three days after the bill was passed generated
+# deep hatred of the concept.... The Diet unceremoniously passed a bill to
+# dump the unpopular system in October 1951, less than a month after the San
+# Francisco Peace Treaty was signed. (A government poll in 1951 showed 53%
+# of the Japanese wanted to scrap daylight-saving time, as opposed to 30% who
+# wanted to keep it.)
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that DST in Japan during those years was as follows:
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Japan 1948 only - May Sun>=1 2:00 1:00 D
+Rule Japan 1948 1951 - Sep Sat>=8 2:00 0 S
+Rule Japan 1949 only - Apr Sun>=1 2:00 1:00 D
+Rule Japan 1950 1951 - May Sun>=1 2:00 1:00 D
+# but the only locations using it (for birth certificates, presumably, since
+# their audience is astrologers) were US military bases. For now, assume
+# that for most purposes daylight-saving time was observed; otherwise, what
+# would have been the point of the 1951 poll?
+
+# From Hideyuki Suzuki (1998-11-09):
+# 'Tokyo' usually stands for the former location of Tokyo Astronomical
+# Observatory: E 139 44' 40".90 (9h 18m 58s.727), N 35 39' 16".0.
+# This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996'
+# edited by National Astronomical Observatory of Japan....
+# JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST).
+# The law is enacted on 1886-07-07.
+
+# From Hideyuki Suzuki (1998-11-16):
+# The ordinance No. 51 (1886) established "standard time" in Japan,
+# which stands for the time on E 135 degree.
+# In the ordinance No. 167 (1895), "standard time" was renamed to "central
+# standard time". And the same ordinance also established "western standard
+# time", which stands for the time on E 120 degree.... But "western standard
+# time" was abolished in the ordinance No. 529 (1937). In the ordinance No.
+# 167, there is no mention regarding for what place western standard time is
+# standard....
+#
+# I wrote "ordinance" above, but I don't know how to translate.
+# In Japanese it's "chokurei", which means ordinance from emperor.
+
+# Shanks & Pottenger claim JST in use since 1896, and that a few
+# places (e.g. Ishigaki) use +0800; go with Suzuki. Guess that all
+# ordinances took effect on Jan 1.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u
+ 9:00 - JST 1896
+ 9:00 - CJT 1938
+ 9:00 Japan J%sT
+# Since 1938, all Japanese possessions have been like Asia/Tokyo.
+
+# Jordan
+#
+# From <a href="http://star.arabia.com/990701/JO9.html">
+# Jordan Week (1999-07-01) </a> via Steffen Thorsen (1999-09-09):
+# Clocks in Jordan were forwarded one hour on Wednesday at midnight,
+# in accordance with the government's decision to implement summer time
+# all year round.
+#
+# From <a href="http://star.arabia.com/990930/JO9.html">
+# Jordan Week (1999-09-30) </a> via Steffen Thorsen (1999-11-09):
+# Winter time starts today Thursday, 30 September. Clocks will be turned back
+# by one hour. This is the latest government decision and it's final!
+# The decision was taken because of the increase in working hours in
+# government's departments from six to seven hours.
+#
+# From Paul Eggert (2005-11-22):
+# Starting 2003 transitions are from Steffen Thorsen's web site timeanddate.com.
+#
+# From Steffen Thorsen (2005-11-23):
+# For Jordan I have received multiple independent user reports every year
+# about DST end dates, as the end-rule is different every year.
+#
+# From Steffen Thorsen (2006-10-01), after a heads-up from Hilal Malawi:
+# http://www.petranews.gov.jo/nepras/2006/Sep/05/4000.htm
+# "Jordan will switch to winter time on Friday, October 27".
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Jordan 1973 only - Jun 6 0:00 1:00 S
+Rule Jordan 1973 1975 - Oct 1 0:00 0 -
+Rule Jordan 1974 1977 - May 1 0:00 1:00 S
+Rule Jordan 1976 only - Nov 1 0:00 0 -
+Rule Jordan 1977 only - Oct 1 0:00 0 -
+Rule Jordan 1978 only - Apr 30 0:00 1:00 S
+Rule Jordan 1978 only - Sep 30 0:00 0 -
+Rule Jordan 1985 only - Apr 1 0:00 1:00 S
+Rule Jordan 1985 only - Oct 1 0:00 0 -
+Rule Jordan 1986 1988 - Apr Fri>=1 0:00 1:00 S
+Rule Jordan 1986 1990 - Oct Fri>=1 0:00 0 -
+Rule Jordan 1989 only - May 8 0:00 1:00 S
+Rule Jordan 1990 only - Apr 27 0:00 1:00 S
+Rule Jordan 1991 only - Apr 17 0:00 1:00 S
+Rule Jordan 1991 only - Sep 27 0:00 0 -
+Rule Jordan 1992 only - Apr 10 0:00 1:00 S
+Rule Jordan 1992 1993 - Oct Fri>=1 0:00 0 -
+Rule Jordan 1993 1998 - Apr Fri>=1 0:00 1:00 S
+Rule Jordan 1994 only - Sep Fri>=15 0:00 0 -
+Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
+Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
+Rule Jordan 1999 2002 - Sep lastThu 0:00s 0 -
+Rule Jordan 2000 max - Mar lastThu 0:00s 1:00 S
+Rule Jordan 2003 only - Oct 24 0:00s 0 -
+Rule Jordan 2004 only - Oct 15 0:00s 0 -
+Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
+Rule Jordan 2006 max - Oct lastFri 0:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Amman 2:23:44 - LMT 1931
+ 2:00 Jordan EE%sT
+
+
+# Kazakhstan
+
+# From Paul Eggert (1996-11-22):
+# Andrew Evtichov (1996-04-13) writes that Kazakhstan
+# stayed in sync with Moscow after 1990, and that Aqtobe (formerly Aktyubinsk)
+# and Aqtau (formerly Shevchenko) are the largest cities in their zones.
+# Guess that Aqtau and Aqtobe diverged in 1995, since that's the first time
+# IATA SSIM mentions a third time zone in Kazakhstan.
+
+# From Paul Eggert (2006-03-22):
+# German Iofis, ELSI, Almaty (2001-10-09) reports that Kazakhstan uses
+# RussiaAsia rules, instead of switching at 00:00 as the IATA has it.
+# Go with Shanks & Pottenger, who have them always using RussiaAsia rules.
+# Also go with the following claims of Shanks & Pottenger:
+#
+# - Kazakhstan did not observe DST in 1991.
+# - Qyzylorda switched from +5:00 to +6:00 on 1992-01-19 02:00.
+# - Oral switched from +5:00 to +4:00 in spring 1989.
+
+# <a href="http://www.kazsociety.org.uk/news/2005/03/30.htm">
+# From Kazakhstan Embassy's News Bulletin #11 (2005-03-21):
+# </a>
+# The Government of Kazakhstan passed a resolution March 15 abolishing
+# daylight saving time citing lack of economic benefits and health
+# complications coupled with a decrease in productivity.
+#
+# From Branislav Kojic (in Astana) via Gwillim Law (2005-06-28):
+# ... what happened was that the former Kazakhstan Eastern time zone
+# was "blended" with the Central zone. Therefore, Kazakhstan now has
+# two time zones, and difference between them is one hour. The zone
+# closer to UTC is the former Western zone (probably still called the
+# same), encompassing four provinces in the west: Aqtobe, Atyrau,
+# Mangghystau, and West Kazakhstan. The other zone encompasses
+# everything else.... I guess that would make Kazakhstan time zones
+# de jure UTC+5 and UTC+6 respectively.
+
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+#
+# Almaty (formerly Alma-Ata), representing most locations in Kazakhstan
+Zone Asia/Almaty 5:07:48 - LMT 1924 May 2 # or Alma-Ata
+ 5:00 - ALMT 1930 Jun 21 # Alma-Ata Time
+ 6:00 RussiaAsia ALM%sT 1991
+ 6:00 - ALMT 1992
+ 6:00 RussiaAsia ALM%sT 2005 Mar 15
+ 6:00 - ALMT
+# Qyzylorda (aka Kyzylorda, Kizilorda, Kzyl-Orda, etc.)
+Zone Asia/Qyzylorda 4:21:52 - LMT 1924 May 2
+ 4:00 - KIZT 1930 Jun 21 # Kizilorda Time
+ 5:00 - KIZT 1981 Apr 1
+ 5:00 1:00 KIZST 1981 Oct 1
+ 6:00 - KIZT 1982 Apr 1
+ 5:00 RussiaAsia KIZ%sT 1991
+ 5:00 - KIZT 1991 Dec 16 # independence
+ 5:00 - QYZT 1992 Jan 19 2:00
+ 6:00 RussiaAsia QYZ%sT 2005 Mar 15
+ 6:00 - QYZT
+# Aqtobe (aka Aktobe, formerly Akt'ubinsk)
+Zone Asia/Aqtobe 3:48:40 - LMT 1924 May 2
+ 4:00 - AKTT 1930 Jun 21 # Aktyubinsk Time
+ 5:00 - AKTT 1981 Apr 1
+ 5:00 1:00 AKTST 1981 Oct 1
+ 6:00 - AKTT 1982 Apr 1
+ 5:00 RussiaAsia AKT%sT 1991
+ 5:00 - AKTT 1991 Dec 16 # independence
+ 5:00 RussiaAsia AQT%sT 2005 Mar 15 # Aqtobe Time
+ 5:00 - AQTT
+# Mangghystau
+# Aqtau was not founded until 1963, but it represents an inhabited region,
+# so include time stamps before 1963.
+Zone Asia/Aqtau 3:21:04 - LMT 1924 May 2
+ 4:00 - FORT 1930 Jun 21 # Fort Shevchenko T
+ 5:00 - FORT 1963
+ 5:00 - SHET 1981 Oct 1 # Shevchenko Time
+ 6:00 - SHET 1982 Apr 1
+ 5:00 RussiaAsia SHE%sT 1991
+ 5:00 - SHET 1991 Dec 16 # independence
+ 5:00 RussiaAsia AQT%sT 1995 Mar lastSun 2:00 # Aqtau Time
+ 4:00 RussiaAsia AQT%sT 2005 Mar 15
+ 5:00 - AQTT
+# West Kazakhstan
+Zone Asia/Oral 3:25:24 - LMT 1924 May 2 # or Ural'sk
+ 4:00 - URAT 1930 Jun 21 # Ural'sk time
+ 5:00 - URAT 1981 Apr 1
+ 5:00 1:00 URAST 1981 Oct 1
+ 6:00 - URAT 1982 Apr 1
+ 5:00 RussiaAsia URA%sT 1989 Mar 26 2:00
+ 4:00 RussiaAsia URA%sT 1991
+ 4:00 - URAT 1991 Dec 16 # independence
+ 4:00 RussiaAsia ORA%sT 2005 Mar 15 # Oral Time
+ 5:00 - ORAT
+
+# Kyrgyzstan (Kirgizstan)
+# Transitions through 1991 are from Shanks & Pottenger.
+
+# From Paul Eggert (2005-08-15):
+# According to an article dated today in the Kyrgyzstan Development Gateway
+# <http://eng.gateway.kg/cgi-bin/page.pl?id=1&story_name=doc9979.shtml>
+# Kyrgyzstan is canceling the daylight saving time system. I take the article
+# to mean that they will leave their clocks at 6 hours ahead of UTC.
+# From Malik Abdugaliev (2005-09-21):
+# Our government cancels daylight saving time 6th of August 2005.
+# From 2005-08-12 our GMT-offset is +6, w/o any daylight saving.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 S
+Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
+Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 S
+Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2
+ 5:00 - FRUT 1930 Jun 21 # Frunze Time
+ 6:00 RussiaAsia FRU%sT 1991 Mar 31 2:00s
+ 5:00 1:00 FRUST 1991 Aug 31 2:00 # independence
+ 5:00 Kyrgyz KG%sT 2005 Aug 12 # Kyrgyzstan Time
+ 6:00 - KGT
+
+###############################################################################
+
+# Korea (North and South)
+
+# From Annie I. Bang (2006-07-10) in
+# <http://www.koreaherald.co.kr/SITE/data/html_dir/2006/07/10/200607100012.asp>:
+# The Ministry of Commerce, Industry and Energy has already
+# commissioned a research project [to reintroduce DST] and has said
+# the system may begin as early as 2008.... Korea ran a daylight
+# saving program from 1949-61 but stopped it during the 1950-53 Korean War.
+
+# From Shanks & Pottenger:
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule ROK 1960 only - May 15 0:00 1:00 D
+Rule ROK 1960 only - Sep 13 0:00 0 S
+Rule ROK 1987 1988 - May Sun>=8 0:00 1:00 D
+Rule ROK 1987 1988 - Oct Sun>=8 0:00 0 S
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Seoul 8:27:52 - LMT 1890
+ 8:30 - KST 1904 Dec
+ 9:00 - KST 1928
+ 8:30 - KST 1932
+ 9:00 - KST 1954 Mar 21
+ 8:00 ROK K%sT 1961 Aug 10
+ 8:30 - KST 1968 Oct
+ 9:00 ROK K%sT
+Zone Asia/Pyongyang 8:23:00 - LMT 1890
+ 8:30 - KST 1904 Dec
+ 9:00 - KST 1928
+ 8:30 - KST 1932
+ 9:00 - KST 1954 Mar 21
+ 8:00 - KST 1961 Aug 10
+ 9:00 - KST
+
+###############################################################################
+
+# Kuwait
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# From the Arab Times (2007-03-14):
+# The Civil Service Commission (CSC) has approved a proposal forwarded
+# by MP Ahmad Baqer on implementing the daylight saving time (DST) in
+# Kuwait starting from April until the end of Sept this year, reports Al-Anba.
+# <http://www.arabtimesonline.com/arabtimes/kuwait/Viewdet.asp?ID=9950>.
+# From Paul Eggert (2007-03-29):
+# We don't know the details, or whether the approval means it'll happen,
+# so for now we assume no DST.
+Zone Asia/Kuwait 3:11:56 - LMT 1950
+ 3:00 - AST
+
+# Laos
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Vientiane 6:50:24 - LMT 1906 Jun 9 # or Viangchan
+ 7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT?
+ 7:00 - ICT 1912 May
+ 8:00 - ICT 1931 May
+ 7:00 - ICT
+
+# Lebanon
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Lebanon 1920 only - Mar 28 0:00 1:00 S
+Rule Lebanon 1920 only - Oct 25 0:00 0 -
+Rule Lebanon 1921 only - Apr 3 0:00 1:00 S
+Rule Lebanon 1921 only - Oct 3 0:00 0 -
+Rule Lebanon 1922 only - Mar 26 0:00 1:00 S
+Rule Lebanon 1922 only - Oct 8 0:00 0 -
+Rule Lebanon 1923 only - Apr 22 0:00 1:00 S
+Rule Lebanon 1923 only - Sep 16 0:00 0 -
+Rule Lebanon 1957 1961 - May 1 0:00 1:00 S
+Rule Lebanon 1957 1961 - Oct 1 0:00 0 -
+Rule Lebanon 1972 only - Jun 22 0:00 1:00 S
+Rule Lebanon 1972 1977 - Oct 1 0:00 0 -
+Rule Lebanon 1973 1977 - May 1 0:00 1:00 S
+Rule Lebanon 1978 only - Apr 30 0:00 1:00 S
+Rule Lebanon 1978 only - Sep 30 0:00 0 -
+Rule Lebanon 1984 1987 - May 1 0:00 1:00 S
+Rule Lebanon 1984 1991 - Oct 16 0:00 0 -
+Rule Lebanon 1988 only - Jun 1 0:00 1:00 S
+Rule Lebanon 1989 only - May 10 0:00 1:00 S
+Rule Lebanon 1990 1992 - May 1 0:00 1:00 S
+Rule Lebanon 1992 only - Oct 4 0:00 0 -
+Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
+Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
+Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Beirut 2:22:00 - LMT 1880
+ 2:00 Lebanon EE%sT
+
+# Malaysia
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 TS # one-Third Summer
+Rule NBorneo 1935 1941 - Dec 14 0:00 0 -
+#
+# peninsular Malaysia
+# The data here are taken from Mok Ly Yng (2003-10-30)
+# <http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html>.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Kuala_Lumpur 6:46:46 - LMT 1901 Jan 1
+ 6:55:25 - SMT 1905 Jun 1 # Singapore M.T.
+ 7:00 - MALT 1933 Jan 1 # Malaya Time
+ 7:00 0:20 MALST 1936 Jan 1
+ 7:20 - MALT 1941 Sep 1
+ 7:30 - MALT 1942 Feb 16
+ 9:00 - JST 1945 Sep 12
+ 7:30 - MALT 1982 Jan 1
+ 8:00 - MYT # Malaysia Time
+# Sabah & Sarawak
+# From Paul Eggert (2006-03-22):
+# The data here are mostly from Shanks & Pottenger, but the 1942, 1945 and 1982
+# transition dates are from Mok Ly Yng.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Kuching 7:21:20 - LMT 1926 Mar
+ 7:30 - BORT 1933 # Borneo Time
+ 8:00 NBorneo BOR%sT 1942 Feb 16
+ 9:00 - JST 1945 Sep 12
+ 8:00 - BORT 1982 Jan 1
+ 8:00 - MYT
+
+# Maldives
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Maldives 4:54:00 - LMT 1880 # Male
+ 4:54:00 - MMT 1960 # Male Mean Time
+ 5:00 - MVT # Maldives Time
+
+# Mongolia
+
+# Shanks & Pottenger say that Mongolia has three time zones, but
+# usno1995 and the CIA map Standard Time Zones of the World (2005-03)
+# both say that it has just one.
+
+# From Oscar van Vlijmen (1999-12-11):
+# <a href="http://www.mongoliatourism.gov.mn/general.htm">
+# General Information Mongolia
+# </a> (1999-09)
+# "Time: Mongolia has two time zones. Three westernmost provinces of
+# Bayan-Ulgii, Uvs, and Hovd are one hour earlier than the capital city, and
+# the rest of the country follows the Ulaanbaatar time, which is UTC/GMT plus
+# eight hours."
+
+# From Rives McDow (1999-12-13):
+# Mongolia discontinued the use of daylight savings time in 1999; 1998
+# being the last year it was implemented. The dates of implementation I am
+# unsure of, but most probably it was similar to Russia, except for the time
+# of implementation may have been different....
+# Some maps in the past have indicated that there was an additional time
+# zone in the eastern part of Mongolia, including the provinces of Dornod,
+# Suhbaatar, and possibly Khentij.
+
+# From Paul Eggert (1999-12-15):
+# Naming and spelling is tricky in Mongolia.
+# We'll use Hovd (also spelled Chovd and Khovd) to represent the west zone;
+# the capital of the Hovd province is sometimes called Hovd, sometimes Dund-Us,
+# and sometimes Jirgalanta (with variant spellings), but the name Hovd
+# is good enough for our purposes.
+
+# From Rives McDow (2001-05-13):
+# In addition to Mongolia starting daylight savings as reported earlier
+# (adopted DST on 2001-04-27 02:00 local time, ending 2001-09-28),
+# there are three time zones.
+#
+# Provinces [at 7:00]: Bayan-ulgii, Uvs, Khovd, Zavkhan, Govi-Altai
+# Provinces [at 8:00]: Khovsgol, Bulgan, Arkhangai, Khentii, Tov,
+# Bayankhongor, Ovorkhangai, Dundgovi, Dornogovi, Omnogovi
+# Provinces [at 9:00]: Dornod, Sukhbaatar
+#
+# [The province of Selenge is omitted from the above lists.]
+
+# From Ganbold Ts., Ulaanbaatar (2004-04-17):
+# Daylight saving occurs at 02:00 local time last Saturday of March.
+# It will change back to normal at 02:00 local time last Saturday of
+# September.... As I remember this rule was changed in 2001.
+#
+# From Paul Eggert (2004-04-17):
+# For now, assume Rives McDow's informant got confused about Friday vs
+# Saturday, and that his 2001 dates should have 1 added to them.
+
+# From Paul Eggert (2005-07-26):
+# We have wildly conflicting information about Mongolia's time zones.
+# Bill Bonnet (2005-05-19) reports that the US Embassy in Ulaanbaatar says
+# there is only one time zone and that DST is observed, citing Microsoft
+# Windows XP as the source. Risto Nykanen (2005-05-16) reports that
+# travelmongolia.org says there are two time zones (UTC+7, UTC+8) with no DST.
+# Oscar van Vlijmen (2005-05-20) reports that the Mongolian Embassy in
+# Washington, DC says there are two time zones, with DST observed.
+# He also found
+# <http://ubpost.mongolnews.mn/index.php?subaction=showcomments&id=1111634894&archive=&start_from=&ucat=1&>
+# which also says that there is DST, and which has a comment by "Toddius"
+# (2005-03-31 06:05 +0700) saying "Mongolia actually has 3.5 time zones.
+# The West (OLGII) is +7 GMT, most of the country is ULAT is +8 GMT
+# and some Eastern provinces are +9 GMT but Sukhbaatar Aimag is SUHK +8.5 GMT.
+# The SUKH timezone is new this year, it is one of the few things the
+# parliament passed during the tumultuous winter session."
+# For now, let's ignore this information, until we have more confirmation.
+
+# From Ganbold Ts. (2007-02-26):
+# Parliament of Mongolia has just changed the daylight-saving rule in February.
+# They decided not to adopt daylight-saving time....
+# http://www.mongolnews.mn/index.php?module=unuudur&sec=view&id=15742
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Mongol 1983 1984 - Apr 1 0:00 1:00 S
+Rule Mongol 1983 only - Oct 1 0:00 0 -
+# Shanks & Pottenger and IATA SSIM say 1990s switches occurred at 00:00,
+# but McDow says the 2001 switches occurred at 02:00. Also, IATA SSIM
+# (1996-09) says 1996-10-25. Go with Shanks & Pottenger through 1998.
+#
+# Shanks & Pottenger say that the Sept. 1984 through Sept. 1990 switches
+# in Choibalsan (more precisely, in Dornod and Sukhbaatar) took place
+# at 02:00 standard time, not at 00:00 local time as in the rest of
+# the country. That would be odd, and possibly is a result of their
+# correction of 02:00 (in the previous edition) not being done correctly
+# in the latest edition; so ignore it for now.
+
+Rule Mongol 1985 1998 - Mar lastSun 0:00 1:00 S
+Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
+# IATA SSIM (1999-09) says Mongolia no longer observes DST.
+Rule Mongol 2001 only - Apr lastSat 2:00 1:00 S
+Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
+Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 S
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
+Zone Asia/Hovd 6:06:36 - LMT 1905 Aug
+ 6:00 - HOVT 1978 # Hovd Time
+ 7:00 Mongol HOV%sT
+# Ulaanbaatar, a.k.a. Ulan Bataar, Ulan Bator, Urga
+Zone Asia/Ulaanbaatar 7:07:32 - LMT 1905 Aug
+ 7:00 - ULAT 1978 # Ulaanbaatar Time
+ 8:00 Mongol ULA%sT
+# Choibalsan, a.k.a. Bajan Tuemen, Bajan Tumen, Chojbalsan,
+# Choybalsan, Sanbejse, Tchoibalsan
+Zone Asia/Choibalsan 7:38:00 - LMT 1905 Aug
+ 7:00 - ULAT 1978
+ 8:00 - ULAT 1983 Apr
+ 9:00 Mongol CHO%sT # Choibalsan Time
+
+# Nepal
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Katmandu 5:41:16 - LMT 1920
+ 5:30 - IST 1986
+ 5:45 - NPT # Nepal Time
+
+# Oman
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Muscat 3:54:20 - LMT 1920
+ 4:00 - GST
+
+# Pakistan
+
+# From Rives McDow (2002-03-13):
+# I have been advised that Pakistan has decided to adopt dst on a
+# TRIAL basis for one year, starting 00:01 local time on April 7, 2002
+# and ending at 00:01 local time October 6, 2002. This is what I was
+# told, but I believe that the actual time of change may be 00:00; the
+# 00:01 was to make it clear which day it was on.
+
+# From Paul Eggert (2002-03-15):
+# Jesper Norgaard found this URL:
+# http://www.pak.gov.pk/public/news/app/app06_dec.htm
+# (dated 2001-12-06) which says that the Cabinet adopted a scheme "to
+# advance the clocks by one hour on the night between the first
+# Saturday and Sunday of April and revert to the original position on
+# 15th October each year". This agrees with McDow's 04-07 at 00:00,
+# but disagrees about the October transition, and makes it sound like
+# it's not on a trial basis. Also, the "between the first Saturday
+# and Sunday of April" phrase, if taken literally, means that the
+# transition takes place at 00:00 on the first Sunday on or after 04-02.
+
+# From Paul Eggert (2003-02-09):
+# DAWN <http://www.dawn.com/2002/10/06/top13.htm> reported on 2002-10-05
+# that 2002 DST ended that day at midnight. Go with McDow for now.
+
+# From Steffen Thorsen (2003-03-14):
+# According to http://www.dawn.com/2003/03/07/top15.htm
+# there will be no DST in Pakistan this year:
+#
+# ISLAMABAD, March 6: Information and Media Development Minister Sheikh
+# Rashid Ahmed on Thursday said the cabinet had reversed a previous
+# decision to advance clocks by one hour in summer and put them back by
+# one hour in winter with the aim of saving light hours and energy.
+#
+# The minister told a news conference that the experiment had rather
+# shown 8 per cent higher consumption of electricity.
+
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Pakistan 2002 only - Apr Sun>=2 0:01 1:00 S
+Rule Pakistan 2002 only - Oct Sun>=2 0:01 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Karachi 4:28:12 - LMT 1907
+ 5:30 - IST 1942 Sep
+ 5:30 1:00 IST 1945 Oct 15
+ 5:30 - IST 1951 Sep 30
+ 5:00 - KART 1971 Mar 26 # Karachi Time
+ 5:00 Pakistan PK%sT # Pakistan Time
+
+# Palestine
+
+# From Amos Shapir (1998-02-15):
+#
+# From 1917 until 1948-05-15, all of Palestine, including the parts now
+# known as the Gaza Strip and the West Bank, was under British rule.
+# Therefore the rules given for Israel for that period, apply there too...
+#
+# The Gaza Strip was under Egyptian rule between 1948-05-15 until 1967-06-05
+# (except a short occupation by Israel from 1956-11 till 1957-03, but no
+# time zone was affected then). It was never formally annexed to Egypt,
+# though.
+#
+# The rest of Palestine was under Jordanian rule at that time, formally
+# annexed in 1950 as the West Bank (and the word "Trans" was dropped from
+# the country's previous name of "the Hashemite Kingdom of the
+# Trans-Jordan"). So the rules for Jordan for that time apply. Major
+# towns in that area are Nablus (Shchem), El-Halil (Hebron), Ramallah, and
+# East Jerusalem.
+#
+# Both areas were occupied by Israel in June 1967, but not annexed (except
+# for East Jerusalem). They were on Israel time since then; there might
+# have been a Military Governor's order about time zones, but I'm not aware
+# of any (such orders may have been issued semi-annually whenever summer
+# time was in effect, but maybe the legal aspect of time was just neglected).
+#
+# The Palestinian Authority was established in 1993, and got hold of most
+# towns in the West Bank and Gaza by 1995. I know that in order to
+# demonstrate...independence, they have been switching to
+# summer time and back on a different schedule than Israel's, but I don't
+# know when this was started, or what algorithm is used (most likely the
+# Jordanian one).
+#
+# To summarize, the table should probably look something like that:
+#
+# Area \ when | 1918-1947 | 1948-1967 | 1967-1995 | 1996-
+# ------------+-----------+-----------+-----------+-----------
+# Israel | Zion | Zion | Zion | Zion
+# West bank | Zion | Jordan | Zion | Jordan
+# Gaza | Zion | Egypt | Zion | Jordan
+#
+# I guess more info may be available from the PA's web page (if/when they
+# have one).
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that Gaza did not observe DST until 1957, but go
+# with Shapir and assume that it observed DST from 1940 through 1947,
+# and that it used Jordanian rules starting in 1996.
+# We don't yet need a separate entry for the West Bank, since
+# the only differences between it and Gaza that we know about
+# occurred before our cutoff date of 1970.
+# However, as we get more information, we may need to add entries
+# for parts of the West Bank as they transitioned from Israel's rules
+# to Palestine's rules. If you have more info about this, please
+# send it to tz@elsie.nci.nih.gov for incorporation into future editions.
+
+# From IINS News Service - Israel - 1998-03-23 10:38:07 Israel time,
+# forwarded by Ephraim Silverberg:
+#
+# Despite the fact that Israel changed over to daylight savings time
+# last week, the PLO Authority (PA) has decided not to turn its clocks
+# one-hour forward at this time. As a sign of independence from Israeli rule,
+# the PA has decided to implement DST in April.
+
+# From Paul Eggert (1999-09-20):
+# Daoud Kuttab writes in
+# <a href="http://www.jpost.com/com/Archive/22.Apr.1999/Opinion/Article-2.html">
+# Holiday havoc
+# </a> (Jerusalem Post, 1999-04-22) that
+# the Palestinian National Authority changed to DST on 1999-04-15.
+# I vaguely recall that they switch back in October (sorry, forgot the source).
+# For now, let's assume that the spring switch was at 24:00,
+# and that they switch at 0:00 on the 3rd Fridays of April and October.
+
+# From Paul Eggert (2005-11-22):
+# Starting 2004 transitions are from Steffen Thorsen's web site timeanddate.com.
+
+# From Steffen Thorsen (2005-11-23):
+# A user from Gaza reported that Gaza made the change early because of
+# the Ramadan. Next year Ramadan will be even earlier, so I think
+# there is a good chance next year's end date will be around two weeks
+# earlier--the same goes for Jordan.
+
+# From Steffen Thorsen (2006-08-17):
+# I was informed by a user in Bethlehem that in Bethlehem it started the
+# same day as Israel, and after checking with other users in the area, I
+# was informed that they started DST one day after Israel. I was not
+# able to find any authoritative sources at the time, nor details if
+# Gaza changed as well, but presumed Gaza to follow the same rules as
+# the West Bank.
+
+# From Steffen Thorsen (2006-09-26):
+# according to the Palestine News Network (2006-09-19):
+# http://english.pnn.ps/index.php?option=com_content&task=view&id=596&Itemid=5
+# > The Council of Ministers announced that this year its winter schedule
+# > will begin early, as of midnight Thursday. It is also time to turn
+# > back the clocks for winter. Friday will begin an hour late this week.
+# I guess it is likely that next year's date will be moved as well,
+# because of the Ramadan.
+
+# From Jesper Norgaard Welen (2007-09-18):
+# According to Steffen Thorsen's web site the Gaza Strip and the rest of the
+# Palestinian territories left DST early on 13.th. of September at 2:00.
+
+# From Paul Eggert (2007-09-20):
+# My understanding is that Gaza and the West Bank disagree even over when
+# the weekend is (Thursday+Friday versus Friday+Saturday), so I'd be a bit
+# surprised if they agreed about DST. But for now, assume they agree.
+# For lack of better information, predict that future changes will be
+# the 2nd Thursday of September at 02:00.
+
+# The rules for Egypt are stolen from the `africa' file.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule EgyptAsia 1957 only - May 10 0:00 1:00 S
+Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 -
+Rule EgyptAsia 1958 only - May 1 0:00 1:00 S
+Rule EgyptAsia 1959 1967 - May 1 1:00 1:00 S
+Rule EgyptAsia 1959 1965 - Sep 30 3:00 0 -
+Rule EgyptAsia 1966 only - Oct 1 3:00 0 -
+
+Rule Palestine 1999 2005 - Apr Fri>=15 0:00 1:00 S
+Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
+Rule Palestine 2004 only - Oct 1 1:00 0 -
+Rule Palestine 2005 only - Oct 4 2:00 0 -
+Rule Palestine 2006 max - Apr 1 0:00 1:00 S
+Rule Palestine 2006 only - Sep 22 0:00 0 -
+Rule Palestine 2007 max - Sep Thu>=8 2:00 0 -
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Gaza 2:17:52 - LMT 1900 Oct
+ 2:00 Zion EET 1948 May 15
+ 2:00 EgyptAsia EE%sT 1967 Jun 5
+ 2:00 Zion I%sT 1996
+ 2:00 Jordan EE%sT 1999
+ 2:00 Palestine EE%sT
+
+# Paracel Is
+# no information
+
+# Philippines
+# On 1844-08-16, Narciso Claveria, governor-general of the
+# Philippines, issued a proclamation announcing that 1844-12-30 was to
+# be immediately followed by 1845-01-01. Robert H. van Gent has a
+# transcript of the decree in <http://www.phys.uu.nl/~vgent/idl/idl.htm>.
+# The rest of the data are from Shanks & Pottenger.
+
+# From Paul Eggert (2006-04-25):
+# Tomorrow's Manila Standard reports that the Philippines Department of
+# Trade and Industry is considering adopting DST this June when the
+# rainy season begins. See
+# <http://www.manilastandardtoday.com/?page=politics02_april26_2006>.
+# For now, we'll ignore this, since it's not definite and we lack details.
+#
+# From Jesper Norgaard Welen (2006-04-26):
+# ... claims that Philippines had DST last time in 1990:
+# http://story.philippinetimes.com/p.x/ct/9/id/145be20cc6b121c0/cid/3e5bbccc730d258c/
+# [a story dated 2006-04-25 by Cris Larano of Dow Jones Newswires,
+# but no details]
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Phil 1936 only - Nov 1 0:00 1:00 S
+Rule Phil 1937 only - Feb 1 0:00 0 -
+Rule Phil 1954 only - Apr 12 0:00 1:00 S
+Rule Phil 1954 only - Jul 1 0:00 0 -
+Rule Phil 1978 only - Mar 22 0:00 1:00 S
+Rule Phil 1978 only - Sep 21 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Manila -15:56:00 - LMT 1844 Dec 31
+ 8:04:00 - LMT 1899 May 11
+ 8:00 Phil PH%sT 1942 May
+ 9:00 - JST 1944 Nov
+ 8:00 Phil PH%sT
+
+# Qatar
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Qatar 3:26:08 - LMT 1920 # Al Dawhah / Doha
+ 4:00 - GST 1972 Jun
+ 3:00 - AST
+
+# Saudi Arabia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Riyadh 3:06:52 - LMT 1950
+ 3:00 - AST
+
+# Singapore
+# The data here are taken from Mok Ly Yng (2003-10-30)
+# <http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html>.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Singapore 6:55:25 - LMT 1901 Jan 1
+ 6:55:25 - SMT 1905 Jun 1 # Singapore M.T.
+ 7:00 - MALT 1933 Jan 1 # Malaya Time
+ 7:00 0:20 MALST 1936 Jan 1
+ 7:20 - MALT 1941 Sep 1
+ 7:30 - MALT 1942 Feb 16
+ 9:00 - JST 1945 Sep 12
+ 7:30 - MALT 1965 Aug 9 # independence
+ 7:30 - SGT 1982 Jan 1 # Singapore Time
+ 8:00 - SGT
+
+# Spratly Is
+# no information
+
+# Sri Lanka
+# From Paul Eggert (1996-09-03):
+# "Sri Lanka advances clock by an hour to avoid blackout"
+# (www.virtual-pc.com/lankaweb/news/items/240596-2.html, 1996-05-24,
+# no longer available as of 1999-08-17)
+# reported ``the country's standard time will be put forward by one hour at
+# midnight Friday (1830 GMT) `in the light of the present power crisis'.''
+#
+# From Dharmasiri Senanayake, Sri Lanka Media Minister (1996-10-24), as quoted
+# by Shamindra in
+# <a href="news:54rka5$m5h@mtinsc01-mgt.ops.worldnet.att.net">
+# Daily News - Hot News Section (1996-10-26)
+# </a>:
+# With effect from 12.30 a.m. on 26th October 1996
+# Sri Lanka will be six (06) hours ahead of GMT.
+
+# From Jesper Norgaard Welen (2006-04-14), quoting Sri Lanka News Online
+# <http://news.sinhalaya.com/wmview.php?ArtID=11002> (2006-04-13):
+# 0030 hrs on April 15, 2006 (midnight of April 14, 2006 +30 minutes)
+# at present, become 2400 hours of April 14, 2006 (midnight of April 14, 2006).
+
+# From Peter Apps and Ranga Sirila of Reuters (2006-04-12) in:
+# <http://today.reuters.co.uk/news/newsArticle.aspx?type=scienceNews&storyID=2006-04-12T172228Z_01_COL295762_RTRIDST_0_SCIENCE-SRILANKA-TIME-DC.XML>
+# [The Tamil Tigers] never accepted the original 1996 time change and simply
+# kept their clocks set five and a half hours ahead of Greenwich Mean
+# Time (GMT), in line with neighbor India.
+# From Paul Eggert (2006-04-18):
+# People who live in regions under Tamil control can use TZ='Asia/Calcutta',
+# as that zone has agreed with the Tamil areas since our cutoff date of 1970.
+
+# From K Sethu (2006-04-25):
+# I think the abbreviation LKT originated from the world of computers at
+# the time of or subsequent to the time zone changes by SL Government
+# twice in 1996 and probably SL Government or its standardization
+# agencies never declared an abbreviation as a national standard.
+#
+# I recollect before the recent change the government annoucemments
+# mentioning it as simply changing Sri Lanka Standard Time or Sri Lanka
+# Time and no mention was made about the abbreviation.
+#
+# If we look at Sri Lanka Department of Government's "Official News
+# Website of Sri Lanka" ... http://www.news.lk/ we can see that they
+# use SLT as abbreviation in time stamp at the beginning of each news
+# item....
+#
+# Within Sri Lanka I think LKT is well known among computer users and
+# adminsitrators. In my opinion SLT may not be a good choice because the
+# nation's largest telcom / internet operator Sri Lanka Telcom is well
+# known by that abbreviation - simply as SLT (there IP domains are
+# slt.lk and sltnet.lk).
+#
+# But if indeed our government has adopted SLT as standard abbreviation
+# (that we have not known so far) then it is better that it be used for
+# all computers.
+
+# From Paul Eggert (2006-04-25):
+# One possibility is that we wait for a bit for the dust to settle down
+# and then see what people actually say in practice.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Colombo 5:19:24 - LMT 1880
+ 5:19:32 - MMT 1906 # Moratuwa Mean Time
+ 5:30 - IST 1942 Jan 5
+ 5:30 0:30 IHST 1942 Sep
+ 5:30 1:00 IST 1945 Oct 16 2:00
+ 5:30 - IST 1996 May 25 0:00
+ 6:30 - LKT 1996 Oct 26 0:30
+ 6:00 - LKT 2006 Apr 15 0:30
+ 5:30 - IST
+
+# Syria
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Syria 1920 1923 - Apr Sun>=15 2:00 1:00 S
+Rule Syria 1920 1923 - Oct Sun>=1 2:00 0 -
+Rule Syria 1962 only - Apr 29 2:00 1:00 S
+Rule Syria 1962 only - Oct 1 2:00 0 -
+Rule Syria 1963 1965 - May 1 2:00 1:00 S
+Rule Syria 1963 only - Sep 30 2:00 0 -
+Rule Syria 1964 only - Oct 1 2:00 0 -
+Rule Syria 1965 only - Sep 30 2:00 0 -
+Rule Syria 1966 only - Apr 24 2:00 1:00 S
+Rule Syria 1966 1976 - Oct 1 2:00 0 -
+Rule Syria 1967 1978 - May 1 2:00 1:00 S
+Rule Syria 1977 1978 - Sep 1 2:00 0 -
+Rule Syria 1983 1984 - Apr 9 2:00 1:00 S
+Rule Syria 1983 1984 - Oct 1 2:00 0 -
+Rule Syria 1986 only - Feb 16 2:00 1:00 S
+Rule Syria 1986 only - Oct 9 2:00 0 -
+Rule Syria 1987 only - Mar 1 2:00 1:00 S
+Rule Syria 1987 1988 - Oct 31 2:00 0 -
+Rule Syria 1988 only - Mar 15 2:00 1:00 S
+Rule Syria 1989 only - Mar 31 2:00 1:00 S
+Rule Syria 1989 only - Oct 1 2:00 0 -
+Rule Syria 1990 only - Apr 1 2:00 1:00 S
+Rule Syria 1990 only - Sep 30 2:00 0 -
+Rule Syria 1991 only - Apr 1 0:00 1:00 S
+Rule Syria 1991 1992 - Oct 1 0:00 0 -
+Rule Syria 1992 only - Apr 8 0:00 1:00 S
+Rule Syria 1993 only - Mar 26 0:00 1:00 S
+Rule Syria 1993 only - Sep 25 0:00 0 -
+# IATA SSIM (1998-02) says 1998-04-02;
+# (1998-09) says 1999-03-29 and 1999-09-29; (1999-02) says 1999-04-02,
+# 2000-04-02, and 2001-04-02; (1999-09) says 2000-03-31 and 2001-03-31;
+# (2006) says 2006-03-31 and 2006-09-22;
+# for now ignore all these claims and go with Shanks & Pottenger,
+# except for the 2006-09-22 claim (which seems right for Ramadan).
+Rule Syria 1994 1996 - Apr 1 0:00 1:00 S
+Rule Syria 1994 2005 - Oct 1 0:00 0 -
+Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S
+Rule Syria 1999 2006 - Apr 1 0:00 1:00 S
+# From Stephen Colebourne (2006-09-18):
+# According to IATA data, Syria will change DST on 21st September [21:00 UTC]
+# this year [only].... This is probably related to Ramadan, like Egypt.
+Rule Syria 2006 only - Sep 22 0:00 0 -
+# From Paul Eggert (2007-03-29):
+# Today the AP reported "Syria will switch to summertime at midnight Thursday."
+# http://www.iht.com/articles/ap/2007/03/29/africa/ME-GEN-Syria-Time-Change.php
+# For lack of better info, assume the rule changed to "last Friday in March"
+# this year.
+Rule Syria 2007 max - Mar lastFri 0:00 1:00 S
+Rule Syria 2007 max - Oct 1 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Damascus 2:25:12 - LMT 1920 # Dimashq
+ 2:00 Syria EE%sT
+
+# Tajikistan
+# From Shanks & Pottenger.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Dushanbe 4:35:12 - LMT 1924 May 2
+ 5:00 - DUST 1930 Jun 21 # Dushanbe Time
+ 6:00 RussiaAsia DUS%sT 1991 Mar 31 2:00s
+ 5:00 1:00 DUSST 1991 Sep 9 2:00s
+ 5:00 - TJT # Tajikistan Time
+
+# Thailand
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Bangkok 6:42:04 - LMT 1880
+ 6:42:04 - BMT 1920 Apr # Bangkok Mean Time
+ 7:00 - ICT
+
+# Turkmenistan
+# From Shanks & Pottenger.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Ashgabat 3:53:32 - LMT 1924 May 2 # or Ashkhabad
+ 4:00 - ASHT 1930 Jun 21 # Ashkhabad Time
+ 5:00 RussiaAsia ASH%sT 1991 Mar 31 2:00
+ 4:00 RussiaAsia ASH%sT 1991 Oct 27 # independence
+ 4:00 RussiaAsia TM%sT 1992 Jan 19 2:00
+ 5:00 - TMT
+
+# United Arab Emirates
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Dubai 3:41:12 - LMT 1920
+ 4:00 - GST
+
+# Uzbekistan
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Samarkand 4:27:12 - LMT 1924 May 2
+ 4:00 - SAMT 1930 Jun 21 # Samarkand Time
+ 5:00 - SAMT 1981 Apr 1
+ 5:00 1:00 SAMST 1981 Oct 1
+ 6:00 - TAST 1982 Apr 1 # Tashkent Time
+ 5:00 RussiaAsia SAM%sT 1991 Sep 1 # independence
+ 5:00 RussiaAsia UZ%sT 1992
+ 5:00 - UZT
+Zone Asia/Tashkent 4:37:12 - LMT 1924 May 2
+ 5:00 - TAST 1930 Jun 21 # Tashkent Time
+ 6:00 RussiaAsia TAS%sT 1991 Mar 31 2:00
+ 5:00 RussiaAsia TAS%sT 1991 Sep 1 # independence
+ 5:00 RussiaAsia UZ%sT 1992
+ 5:00 - UZT
+
+# Vietnam
+
+# From Paul Eggert (1993-11-18):
+# Saigon's official name is Thanh-Pho Ho Chi Minh, but it's too long.
+# We'll stick with the traditional name for now.
+
+# From Shanks & Pottenger:
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Saigon 7:06:40 - LMT 1906 Jun 9
+ 7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT?
+ 7:00 - ICT 1912 May
+ 8:00 - ICT 1931 May
+ 7:00 - ICT
+
+# Yemen
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Aden 3:00:48 - LMT 1950
+ 3:00 - AST
diff --git a/jdk/make/sun/javazic/tzdata/australasia b/jdk/make/sun/javazic/tzdata/australasia
new file mode 100644
index 0000000..eee5c0b
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/australasia
@@ -0,0 +1,1476 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# <pre>
+
+# This file also includes Pacific islands.
+
+# Notes are at the end of this file
+
+###############################################################################
+
+# Australia
+
+# Please see the notes below for the controversy about "EST" versus "AEST" etc.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Aus 1917 only - Jan 1 0:01 1:00 -
+Rule Aus 1917 only - Mar 25 2:00 0 -
+Rule Aus 1942 only - Jan 1 2:00 1:00 -
+Rule Aus 1942 only - Mar 29 2:00 0 -
+Rule Aus 1942 only - Sep 27 2:00 1:00 -
+Rule Aus 1943 1944 - Mar lastSun 2:00 0 -
+Rule Aus 1943 only - Oct 3 2:00 1:00 -
+# Go with Whitman and the Australian National Standards Commission, which
+# says W Australia didn't use DST in 1943/1944. Ignore Whitman's claim that
+# 1944/1945 was just like 1943/1944.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# Northern Territory
+Zone Australia/Darwin 8:43:20 - LMT 1895 Feb
+ 9:00 - CST 1899 May
+ 9:30 Aus CST
+# Western Australia
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule AW 1974 only - Oct lastSun 2:00s 1:00 -
+Rule AW 1975 only - Mar Sun>=1 2:00s 0 -
+Rule AW 1983 only - Oct lastSun 2:00s 1:00 -
+Rule AW 1984 only - Mar Sun>=1 2:00s 0 -
+Rule AW 1991 only - Nov 17 2:00s 1:00 -
+Rule AW 1992 only - Mar Sun>=1 2:00s 0 -
+Rule AW 2006 only - Dec 3 2:00s 1:00 -
+Rule AW 2007 2009 - Mar lastSun 2:00s 0 -
+Rule AW 2007 2008 - Oct lastSun 2:00s 1:00 -
+Zone Australia/Perth 7:43:24 - LMT 1895 Dec
+ 8:00 Aus WST 1943 Jul
+ 8:00 AW WST
+Zone Australia/Eucla 8:35:28 - LMT 1895 Dec
+ 8:45 Aus CWST 1943 Jul
+ 8:45 AW CWST
+
+# Queensland
+#
+# From Alex Livingston (1996-11-01):
+# I have heard or read more than once that some resort islands off the coast
+# of Queensland chose to keep observing daylight-saving time even after
+# Queensland ceased to.
+#
+# From Paul Eggert (1996-11-22):
+# IATA SSIM (1993-02/1994-09) say that the Holiday Islands (Hayman, Lindeman,
+# Hamilton) observed DST for two years after the rest of Queensland stopped.
+# Hamilton is the largest, but there is also a Hamilton in Victoria,
+# so use Lindeman.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule AQ 1971 only - Oct lastSun 2:00s 1:00 -
+Rule AQ 1972 only - Feb lastSun 2:00s 0 -
+Rule AQ 1989 1991 - Oct lastSun 2:00s 1:00 -
+Rule AQ 1990 1992 - Mar Sun>=1 2:00s 0 -
+Rule Holiday 1992 1993 - Oct lastSun 2:00s 1:00 -
+Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 -
+Zone Australia/Brisbane 10:12:08 - LMT 1895
+ 10:00 Aus EST 1971
+ 10:00 AQ EST
+Zone Australia/Lindeman 9:55:56 - LMT 1895
+ 10:00 Aus EST 1971
+ 10:00 AQ EST 1992 Jul
+ 10:00 Holiday EST
+
+# South Australia
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule AS 1971 1985 - Oct lastSun 2:00s 1:00 -
+Rule AS 1986 only - Oct 19 2:00s 1:00 -
+Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 -
+Rule AS 1972 only - Feb 27 2:00s 0 -
+Rule AS 1973 1985 - Mar Sun>=1 2:00s 0 -
+Rule AS 1986 1989 - Mar Sun>=15 2:00s 0 -
+Rule AS 1990 only - Mar Sun>=18 2:00s 0 -
+Rule AS 1991 only - Mar Sun>=1 2:00s 0 -
+Rule AS 1992 only - Mar Sun>=18 2:00s 0 -
+Rule AS 1993 only - Mar Sun>=1 2:00s 0 -
+Rule AS 1994 only - Mar Sun>=18 2:00s 0 -
+Rule AS 1995 2005 - Mar lastSun 2:00s 0 -
+Rule AS 2006 only - Apr Sun>=1 2:00s 0 -
+Rule AS 2007 only - Mar lastSun 2:00s 0 -
+Rule AS 2008 max - Apr Sun>=1 2:00s 0 -
+Rule AS 2008 max - Oct Sun>=1 2:00s 1:00 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Australia/Adelaide 9:14:20 - LMT 1895 Feb
+ 9:00 - CST 1899 May
+ 9:30 Aus CST 1971
+ 9:30 AS CST
+
+# Tasmania
+#
+# From Paul Eggert (2005-08-16):
+# <http://www.bom.gov.au/climate/averages/tables/dst_times.shtml>
+# says King Island didn't observe DST from WWII until late 1971.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule AT 1967 only - Oct Sun>=1 2:00s 1:00 -
+Rule AT 1968 only - Mar lastSun 2:00s 0 -
+Rule AT 1968 1985 - Oct lastSun 2:00s 1:00 -
+Rule AT 1969 1971 - Mar Sun>=8 2:00s 0 -
+Rule AT 1972 only - Feb lastSun 2:00s 0 -
+Rule AT 1973 1981 - Mar Sun>=1 2:00s 0 -
+Rule AT 1982 1983 - Mar lastSun 2:00s 0 -
+Rule AT 1984 1986 - Mar Sun>=1 2:00s 0 -
+Rule AT 1986 only - Oct Sun>=15 2:00s 1:00 -
+Rule AT 1987 1990 - Mar Sun>=15 2:00s 0 -
+Rule AT 1987 only - Oct Sun>=22 2:00s 1:00 -
+Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 -
+Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 -
+Rule AT 1991 2005 - Mar lastSun 2:00s 0 -
+Rule AT 2000 only - Aug lastSun 2:00s 1:00 -
+Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 -
+Rule AT 2006 only - Apr Sun>=1 2:00s 0 -
+Rule AT 2007 only - Mar lastSun 2:00s 0 -
+Rule AT 2008 max - Apr Sun>=1 2:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Australia/Hobart 9:49:16 - LMT 1895 Sep
+ 10:00 - EST 1916 Oct 1 2:00
+ 10:00 1:00 EST 1917 Feb
+ 10:00 Aus EST 1967
+ 10:00 AT EST
+Zone Australia/Currie 9:35:28 - LMT 1895 Sep
+ 10:00 - EST 1916 Oct 1 2:00
+ 10:00 1:00 EST 1917 Feb
+ 10:00 Aus EST 1971 Jul
+ 10:00 AT EST
+
+# Victoria
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule AV 1971 1985 - Oct lastSun 2:00s 1:00 -
+Rule AV 1972 only - Feb lastSun 2:00s 0 -
+Rule AV 1973 1985 - Mar Sun>=1 2:00s 0 -
+Rule AV 1986 1990 - Mar Sun>=15 2:00s 0 -
+Rule AV 1986 1987 - Oct Sun>=15 2:00s 1:00 -
+Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 -
+Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 -
+Rule AV 1995 2005 - Mar lastSun 2:00s 0 -
+Rule AV 2000 only - Aug lastSun 2:00s 1:00 -
+Rule AV 2001 2007 - Oct lastSun 2:00s 1:00 -
+Rule AV 2006 only - Apr Sun>=1 2:00s 0 -
+Rule AV 2007 only - Mar lastSun 2:00s 0 -
+Rule AV 2008 max - Apr Sun>=1 2:00s 0 -
+Rule AV 2008 max - Oct Sun>=1 2:00s 1:00 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Australia/Melbourne 9:39:52 - LMT 1895 Feb
+ 10:00 Aus EST 1971
+ 10:00 AV EST
+
+# New South Wales
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule AN 1971 1985 - Oct lastSun 2:00s 1:00 -
+Rule AN 1972 only - Feb 27 2:00s 0 -
+Rule AN 1973 1981 - Mar Sun>=1 2:00s 0 -
+Rule AN 1982 only - Apr Sun>=1 2:00s 0 -
+Rule AN 1983 1985 - Mar Sun>=1 2:00s 0 -
+Rule AN 1986 1989 - Mar Sun>=15 2:00s 0 -
+Rule AN 1986 only - Oct 19 2:00s 1:00 -
+Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 -
+Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 -
+Rule AN 1996 2005 - Mar lastSun 2:00s 0 -
+Rule AN 2000 only - Aug lastSun 2:00s 1:00 -
+Rule AN 2001 2007 - Oct lastSun 2:00s 1:00 -
+Rule AN 2006 only - Apr Sun>=1 2:00s 0 -
+Rule AN 2007 only - Mar lastSun 2:00s 0 -
+Rule AN 2008 max - Apr Sun>=1 2:00s 0 -
+Rule AN 2008 max - Oct Sun>=1 2:00s 1:00 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Australia/Sydney 10:04:52 - LMT 1895 Feb
+ 10:00 Aus EST 1971
+ 10:00 AN EST
+Zone Australia/Broken_Hill 9:25:48 - LMT 1895 Feb
+ 10:00 - EST 1896 Aug 23
+ 9:00 - CST 1899 May
+ 9:30 Aus CST 1971
+ 9:30 AN CST 2000
+ 9:30 AS CST
+
+# Lord Howe Island
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule LH 1981 1984 - Oct lastSun 2:00 1:00 -
+Rule LH 1982 1985 - Mar Sun>=1 2:00 0 -
+Rule LH 1985 only - Oct lastSun 2:00 0:30 -
+Rule LH 1986 1989 - Mar Sun>=15 2:00 0 -
+Rule LH 1986 only - Oct 19 2:00 0:30 -
+Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
+Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
+Rule LH 1996 2005 - Mar lastSun 2:00 0 -
+Rule LH 2000 only - Aug lastSun 2:00 0:30 -
+Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
+Rule LH 2006 only - Apr Sun>=1 2:00 0 -
+Rule LH 2007 only - Mar lastSun 2:00 0 -
+Rule LH 2008 max - Apr Sun>=1 2:00 0 -
+Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
+Zone Australia/Lord_Howe 10:36:20 - LMT 1895 Feb
+ 10:00 - EST 1981 Mar
+ 10:30 LH LHST
+
+# Australian miscellany
+#
+# Ashmore Is, Cartier
+# no indigenous inhabitants; only seasonal caretakers
+# no times are set
+#
+# Coral Sea Is
+# no indigenous inhabitants; only meteorologists
+# no times are set
+#
+# Macquarie
+# permanent occupation (scientific station) since 1948;
+# sealing and penguin oil station operated 1888/1917
+# like Australia/Hobart
+
+# Christmas
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Christmas 7:02:52 - LMT 1895 Feb
+ 7:00 - CXT # Christmas Island Time
+
+# Cook Is
+# From Shanks & Pottenger:
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Cook 1978 only - Nov 12 0:00 0:30 HS
+Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
+Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 HS
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Rarotonga -10:39:04 - LMT 1901 # Avarua
+ -10:30 - CKT 1978 Nov 12 # Cook Is Time
+ -10:00 Cook CK%sT
+
+# Cocos
+# These islands were ruled by the Ross family from about 1830 to 1978.
+# We don't know when standard time was introduced; for now, we guess 1900.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Cocos 6:27:40 - LMT 1900
+ 6:30 - CCT # Cocos Islands Time
+
+# Fiji
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 S
+Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Fiji 11:53:40 - LMT 1915 Oct 26 # Suva
+ 12:00 Fiji FJ%sT # Fiji Time
+
+# French Polynesia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Gambier -8:59:48 - LMT 1912 Oct # Rikitea
+ -9:00 - GAMT # Gambier Time
+Zone Pacific/Marquesas -9:18:00 - LMT 1912 Oct
+ -9:30 - MART # Marquesas Time
+Zone Pacific/Tahiti -9:58:16 - LMT 1912 Oct # Papeete
+ -10:00 - TAHT # Tahiti Time
+# Clipperton (near North America) is administered from French Polynesia;
+# it is uninhabited.
+
+# Guam
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Guam -14:21:00 - LMT 1844 Dec 31
+ 9:39:00 - LMT 1901 # Agana
+ 10:00 - GST 2000 Dec 23 # Guam
+ 10:00 - ChST # Chamorro Standard Time
+
+# Kiribati
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Tarawa 11:32:04 - LMT 1901 # Bairiki
+ 12:00 - GILT # Gilbert Is Time
+Zone Pacific/Enderbury -11:24:20 - LMT 1901
+ -12:00 - PHOT 1979 Oct # Phoenix Is Time
+ -11:00 - PHOT 1995
+ 13:00 - PHOT
+Zone Pacific/Kiritimati -10:29:20 - LMT 1901
+ -10:40 - LINT 1979 Oct # Line Is Time
+ -10:00 - LINT 1995
+ 14:00 - LINT
+
+# N Mariana Is
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Saipan -14:17:00 - LMT 1844 Dec 31
+ 9:43:00 - LMT 1901
+ 9:00 - MPT 1969 Oct # N Mariana Is Time
+ 10:00 - MPT 2000 Dec 23
+ 10:00 - ChST # Chamorro Standard Time
+
+# Marshall Is
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Majuro 11:24:48 - LMT 1901
+ 11:00 - MHT 1969 Oct # Marshall Islands Time
+ 12:00 - MHT
+Zone Pacific/Kwajalein 11:09:20 - LMT 1901
+ 11:00 - MHT 1969 Oct
+ -12:00 - KWAT 1993 Aug 20 # Kwajalein Time
+ 12:00 - MHT
+
+# Micronesia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Truk 10:07:08 - LMT 1901
+ 10:00 - TRUT # Truk Time
+Zone Pacific/Ponape 10:32:52 - LMT 1901 # Kolonia
+ 11:00 - PONT # Ponape Time
+Zone Pacific/Kosrae 10:51:56 - LMT 1901
+ 11:00 - KOST 1969 Oct # Kosrae Time
+ 12:00 - KOST 1999
+ 11:00 - KOST
+
+# Nauru
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Nauru 11:07:40 - LMT 1921 Jan 15 # Uaobe
+ 11:30 - NRT 1942 Mar 15 # Nauru Time
+ 9:00 - JST 1944 Aug 15
+ 11:30 - NRT 1979 May
+ 12:00 - NRT
+
+# New Caledonia
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 S
+Rule NC 1978 1979 - Feb 27 0:00 0 -
+Rule NC 1996 only - Dec 1 2:00s 1:00 S
+# Shanks & Pottenger say the following was at 2:00; go with IATA.
+Rule NC 1997 only - Mar 2 2:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Noumea 11:05:48 - LMT 1912 Jan 13
+ 11:00 NC NC%sT
+
+
+###############################################################################
+
+# New Zealand
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule NZ 1927 only - Nov 6 2:00 1:00 S
+Rule NZ 1928 only - Mar 4 2:00 0 M
+Rule NZ 1928 1933 - Oct Sun>=8 2:00 0:30 S
+Rule NZ 1929 1933 - Mar Sun>=15 2:00 0 M
+Rule NZ 1934 1940 - Apr lastSun 2:00 0 M
+Rule NZ 1934 1940 - Sep lastSun 2:00 0:30 S
+Rule NZ 1946 only - Jan 1 0:00 0 S
+# Since 1957 Chatham has been 45 minutes ahead of NZ, but there's no
+# convenient notation for this so we must duplicate the Rule lines.
+Rule NZ 1974 only - Nov Sun>=1 2:00s 1:00 D
+Rule Chatham 1974 only - Nov Sun>=1 2:45s 1:00 D
+Rule NZ 1975 only - Feb lastSun 2:00s 0 S
+Rule Chatham 1975 only - Feb lastSun 2:45s 0 S
+Rule NZ 1975 1988 - Oct lastSun 2:00s 1:00 D
+Rule Chatham 1975 1988 - Oct lastSun 2:45s 1:00 D
+Rule NZ 1976 1989 - Mar Sun>=1 2:00s 0 S
+Rule Chatham 1976 1989 - Mar Sun>=1 2:45s 0 S
+Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
+Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 D
+Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
+Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 D
+Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
+Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 S
+Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
+Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 D
+Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
+Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Auckland 11:39:04 - LMT 1868 Nov 2
+ 11:30 NZ NZ%sT 1946 Jan 1
+ 12:00 NZ NZ%sT
+Zone Pacific/Chatham 12:13:48 - LMT 1957 Jan 1
+ 12:45 Chatham CHA%sT
+
+
+# Auckland Is
+# uninhabited; Maori and Moriori, colonial settlers, pastoralists, sealers,
+# and scientific personnel have wintered
+
+# Campbell I
+# minor whaling stations operated 1909/1914
+# scientific station operated 1941/1995;
+# previously whalers, sealers, pastoralists, and scientific personnel wintered
+# was probably like Pacific/Auckland
+
+###############################################################################
+
+
+# Niue
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Niue -11:19:40 - LMT 1901 # Alofi
+ -11:20 - NUT 1951 # Niue Time
+ -11:30 - NUT 1978 Oct 1
+ -11:00 - NUT
+
+# Norfolk
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Norfolk 11:11:52 - LMT 1901 # Kingston
+ 11:12 - NMT 1951 # Norfolk Mean Time
+ 11:30 - NFT # Norfolk Time
+
+# Palau (Belau)
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Palau 8:57:56 - LMT 1901 # Koror
+ 9:00 - PWT # Palau Time
+
+# Papua New Guinea
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Port_Moresby 9:48:40 - LMT 1880
+ 9:48:32 - PMMT 1895 # Port Moresby Mean Time
+ 10:00 - PGT # Papua New Guinea Time
+
+# Pitcairn
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Pitcairn -8:40:20 - LMT 1901 # Adamstown
+ -8:30 - PNT 1998 Apr 27 00:00
+ -8:00 - PST # Pitcairn Standard Time
+
+# American Samoa
+Zone Pacific/Pago_Pago 12:37:12 - LMT 1879 Jul 5
+ -11:22:48 - LMT 1911
+ -11:30 - SAMT 1950 # Samoa Time
+ -11:00 - NST 1967 Apr # N=Nome
+ -11:00 - BST 1983 Nov 30 # B=Bering
+ -11:00 - SST # S=Samoa
+
+# Samoa
+Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5
+ -11:26:56 - LMT 1911
+ -11:30 - SAMT 1950 # Samoa Time
+ -11:00 - WST # Samoa Time
+
+# Solomon Is
+# excludes Bougainville, for which see Papua New Guinea
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Guadalcanal 10:39:48 - LMT 1912 Oct # Honiara
+ 11:00 - SBT # Solomon Is Time
+
+# Tokelau Is
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Fakaofo -11:24:56 - LMT 1901
+ -10:00 - TKT # Tokelau Time
+
+# Tonga
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Tonga 1999 only - Oct 7 2:00s 1:00 S
+Rule Tonga 2000 only - Mar 19 2:00s 0 -
+Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 S
+Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Tongatapu 12:19:20 - LMT 1901
+ 12:20 - TOT 1941 # Tonga Time
+ 13:00 - TOT 1999
+ 13:00 Tonga TO%sT
+
+# Tuvalu
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Funafuti 11:56:52 - LMT 1901
+ 12:00 - TVT # Tuvalu Time
+
+
+# US minor outlying islands
+
+# Howland, Baker
+# Howland was mined for guano by American companies 1857-1878 and British
+# 1886-1891; Baker was similar but exact dates are not known.
+# Inhabited by civilians 1935-1942; U.S. military bases 1943-1944;
+# uninhabited thereafter.
+# Howland observed Hawaii Standard Time (UTC-10:30) in 1937;
+# see page 206 of Elgen M. Long and Marie K. Long,
+# Amelia Earhart: the Mystery Solved, Simon & Schuster (2000).
+# So most likely Howland and Baker observed Hawaii Time from 1935
+# until they were abandoned after the war.
+
+# Jarvis
+# Mined for guano by American companies 1857-1879 and British 1883?-1891?.
+# Inhabited by civilians 1935-1942; IGY scientific base 1957-1958;
+# uninhabited thereafter.
+# no information; was probably like Pacific/Kiritimati
+
+# Johnston
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Johnston -10:00 - HST
+
+# Kingman
+# uninhabited
+
+# Midway
+#
+# From Mark Brader (2005-01-23):
+# [Fallacies and Fantasies of Air Transport History, by R.E.G. Davies,
+# published 1994 by Paladwr Press, McLean, VA, USA; ISBN 0-9626483-5-3]
+# reproduced a Pan American Airways timeables from 1936, for their weekly
+# "Orient Express" flights between San Francisco and Manila, and connecting
+# flights to Chicago and the US East Coast. As it uses some time zone
+# designations that I've never seen before:....
+# Fri. 6:30A Lv. HONOLOLU (Pearl Harbor), H.I. H.L.T. Ar. 5:30P Sun.
+# " 3:00P Ar. MIDWAY ISLAND . . . . . . . . . M.L.T. Lv. 6:00A "
+#
+Zone Pacific/Midway -11:49:28 - LMT 1901
+ -11:00 - NST 1956 Jun 3
+ -11:00 1:00 NDT 1956 Sep 2
+ -11:00 - NST 1967 Apr # N=Nome
+ -11:00 - BST 1983 Nov 30 # B=Bering
+ -11:00 - SST # S=Samoa
+
+# Palmyra
+# uninhabited since World War II; was probably like Pacific/Kiritimati
+
+# Wake
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Wake 11:06:28 - LMT 1901
+ 12:00 - WAKT # Wake Time
+
+
+# Vanuatu
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Vanuatu 1983 only - Sep 25 0:00 1:00 S
+Rule Vanuatu 1984 1991 - Mar Sun>=23 0:00 0 -
+Rule Vanuatu 1984 only - Oct 23 0:00 1:00 S
+Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 S
+Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 -
+Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila
+ 11:00 Vanuatu VU%sT # Vanuatu Time
+
+# Wallis and Futuna
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Wallis 12:15:20 - LMT 1901
+ 12:00 - WFT # Wallis & Futuna Time
+
+###############################################################################
+
+# NOTES
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@elsie.nci.nih.gov for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually. Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Another source occasionally used is Edward W. Whitman, World Time Differences,
+# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+# I found in the UCLA library.
+#
+# A reliable and entertaining source about time zones is
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+#
+# I invented the abbreviations marked `*' in the following table;
+# the rest are from earlier versions of this file, or from other sources.
+# Corrections are welcome!
+# std dst
+# LMT Local Mean Time
+# 8:00 WST WST Western Australia
+# 8:45 CWST CWST Central Western Australia*
+# 9:00 JST Japan
+# 9:30 CST CST Central Australia
+# 10:00 EST EST Eastern Australia
+# 10:00 ChST Chamorro
+# 10:30 LHST LHST Lord Howe*
+# 11:30 NZMT NZST New Zealand through 1945
+# 12:00 NZST NZDT New Zealand 1946-present
+# 12:45 CHAST CHADT Chatham*
+# -11:00 SST Samoa
+# -10:00 HST Hawaii
+# - 8:00 PST Pitcairn*
+#
+# See the `northamerica' file for Hawaii.
+# See the `southamerica' file for Easter I and the Galapagos Is.
+
+###############################################################################
+
+# Australia
+
+# From Paul Eggert (2005-12-08):
+# <a href="http://www.bom.gov.au/climate/averages/tables/dst_times.shtml">
+# Implementation Dates of Daylight Saving Time within Australia
+# </a> summarizes daylight saving issues in Australia.
+
+# From Arthur David Olson (2005-12-12):
+# <a href="http://www.lawlink.nsw.gov.au/lawlink/Corporate/ll_agdinfo.nsf/pages/community_relations_daylight_saving">
+# Lawlink NSW:Daylight Saving in New South Wales
+# </a> covers New South Wales in particular.
+
+# From John Mackin (1991-03-06):
+# We in Australia have _never_ referred to DST as `daylight' time.
+# It is called `summer' time. Now by a happy coincidence, `summer'
+# and `standard' happen to start with the same letter; hence, the
+# abbreviation does _not_ change...
+# The legislation does not actually define abbreviations, at least
+# in this State, but the abbreviation is just commonly taken to be the
+# initials of the phrase, and the legislation here uniformly uses
+# the phrase `summer time' and does not use the phrase `daylight
+# time'.
+# Announcers on the Commonwealth radio network, the ABC (for Australian
+# Broadcasting Commission), use the phrases `Eastern Standard Time'
+# or `Eastern Summer Time'. (Note, though, that as I say in the
+# current australasia file, there is really no such thing.) Announcers
+# on its overseas service, Radio Australia, use the same phrases
+# prefixed by the word `Australian' when referring to local times;
+# time announcements on that service, naturally enough, are made in UTC.
+
+# From Arthur David Olson (1992-03-08):
+# Given the above, what's chosen for year-round use is:
+# CST for any place operating at a GMTOFF of 9:30
+# WST for any place operating at a GMTOFF of 8:00
+# EST for any place operating at a GMTOFF of 10:00
+
+# From Chuck Soper (2006-06-01):
+# I recently found this Australian government web page on time zones:
+# <http://www.australia.gov.au/about-australia-13time>
+# And this government web page lists time zone names and abbreviations:
+# <http://www.bom.gov.au/climate/averages/tables/daysavtm.shtml>
+
+# From Paul Eggert (2001-04-05), summarizing a long discussion about "EST"
+# versus "AEST" etc.:
+#
+# I see the following points of dispute:
+#
+# * How important are unique time zone abbreviations?
+#
+# Here I tend to agree with the point (most recently made by Chris
+# Newman) that unique abbreviations should not be essential for proper
+# operation of software. We have other instances of ambiguity
+# (e.g. "IST" denoting both "Israel Standard Time" and "Indian
+# Standard Time"), and they are not likely to go away any time soon.
+# In the old days, some software mistakenly relied on unique
+# abbreviations, but this is becoming less true with time, and I don't
+# think it's that important to cater to such software these days.
+#
+# On the other hand, there is another motivation for unambiguous
+# abbreviations: it cuts down on human confusion. This is
+# particularly true for Australia, where "EST" can mean one thing for
+# time T and a different thing for time T plus 1 second.
+#
+# * Does the relevant legislation indicate which abbreviations should be used?
+#
+# Here I tend to think that things are a mess, just as they are in
+# many other countries. We Americans are currently disagreeing about
+# which abbreviation to use for the newly legislated Chamorro Standard
+# Time, for example.
+#
+# Personally, I would prefer to use common practice; I would like to
+# refer to legislation only for examples of common practice, or as a
+# tiebreaker.
+#
+# * Do Australians more often use "Eastern Daylight Time" or "Eastern
+# Summer Time"? Do they typically prefix the time zone names with
+# the word "Australian"?
+#
+# My own impression is that both "Daylight Time" and "Summer Time" are
+# common and are widely understood, but that "Summer Time" is more
+# popular; and that the leading "A" is also common but is omitted more
+# often than not. I just used AltaVista advanced search and got the
+# following count of page hits:
+#
+# 1,103 "Eastern Summer Time" AND domain:au
+# 971 "Australian Eastern Summer Time" AND domain:au
+# 613 "Eastern Daylight Time" AND domain:au
+# 127 "Australian Eastern Daylight Time" AND domain:au
+#
+# Here "Summer" seems quite a bit more popular than "Daylight",
+# particularly when we know the time zone is Australian and not US,
+# say. The "Australian" prefix seems to be popular for Eastern Summer
+# Time, but unpopular for Eastern Daylight Time.
+#
+# For abbreviations, tools like AltaVista are less useful because of
+# ambiguity. Many hits are not really time zones, unfortunately, and
+# many hits denote US time zones and not Australian ones. But here
+# are the hit counts anyway:
+#
+# 161,304 "EST" and domain:au
+# 25,156 "EDT" and domain:au
+# 18,263 "AEST" and domain:au
+# 10,416 "AEDT" and domain:au
+#
+# 14,538 "CST" and domain:au
+# 5,728 "CDT" and domain:au
+# 176 "ACST" and domain:au
+# 29 "ACDT" and domain:au
+#
+# 7,539 "WST" and domain:au
+# 68 "AWST" and domain:au
+#
+# This data suggest that Australians tend to omit the "A" prefix in
+# practice. The situation for "ST" versus "DT" is less clear, given
+# the ambiguities involved.
+#
+# * How do Australians feel about the abbreviations in the tz database?
+#
+# If you just count Australians on this list, I count 2 in favor and 3
+# against. One of the "against" votes (David Keegel) counseled delay,
+# saying that both AEST/AEDT and EST/EST are widely used and
+# understood in Australia.
+
+# From Paul Eggert (1995-12-19):
+# Shanks & Pottenger report 2:00 for all autumn changes in Australia and NZ.
+# Mark Prior writes that his newspaper
+# reports that NSW's fall 1995 change will occur at 2:00,
+# but Robert Elz says it's been 3:00 in Victoria since 1970
+# and perhaps the newspaper's `2:00' is referring to standard time.
+# For now we'll continue to assume 2:00s for changes since 1960.
+
+# From Eric Ulevik (1998-01-05):
+#
+# Here are some URLs to Australian time legislation. These URLs are stable,
+# and should probably be included in the data file. There are probably more
+# relevant entries in this database.
+#
+# NSW (including LHI and Broken Hill):
+# <a href="http://www.austlii.edu.au/au/legis/nsw/consol_act/sta1987137/index.html">
+# Standard Time Act 1987 (updated 1995-04-04)
+# </a>
+# ACT
+# <a href="http://www.austlii.edu.au/au/legis/act/consol_act/stasta1972279/index.html">
+# Standard Time and Summer Time Act 1972
+# </a>
+# SA
+# <a href="http://www.austlii.edu.au/au/legis/sa/consol_act/sta1898137/index.html">
+# Standard Time Act, 1898
+# </a>
+
+# From David Grosz (2005-06-13):
+# It was announced last week that Daylight Saving would be extended by
+# one week next year to allow for the 2006 Commonwealth Games.
+# Daylight Saving is now to end for next year only on the first Sunday
+# in April instead of the last Sunday in March.
+#
+# From Gwillim Law (2005-06-14):
+# I did some Googling and found that all of those states (and territory) plan
+# to extend DST together in 2006.
+# ACT: http://www.cmd.act.gov.au/mediareleases/fileread.cfm?file=86.txt
+# New South Wales: http://www.thecouriermail.news.com.au/common/story_page/0,5936,15538869%255E1702,00.html
+# South Australia: http://www.news.com.au/story/0,10117,15555031-1246,00.html
+# Tasmania: http://www.media.tas.gov.au/release.php?id=14772
+# Victoria: I wasn't able to find anything separate, but the other articles
+# allude to it.
+# But not Queensland
+# http://www.news.com.au/story/0,10117,15564030-1248,00.html.
+
+# Northern Territory
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # The NORTHERN TERRITORY.. [ Courtesy N.T. Dept of the Chief Minister ]
+# # [ Nov 1990 ]
+# # N.T. have never utilised any DST due to sub-tropical/tropical location.
+# ...
+# Zone Australia/North 9:30 - CST
+
+# From Bradley White (1991-03-04):
+# A recent excerpt from an Australian newspaper...
+# the Northern Territory do[es] not have daylight saving.
+
+# Western Australia
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # The state of WESTERN AUSTRALIA.. [ Courtesy W.A. dept Premier+Cabinet ]
+# # [ Nov 1990 ]
+# # W.A. suffers from a great deal of public and political opposition to
+# # DST in principle. A bill is brought before parliament in most years, but
+# # usually defeated either in the upper house, or in party caucus
+# # before reaching parliament.
+# ...
+# Zone Australia/West 8:00 AW %sST
+# ...
+# Rule AW 1974 only - Oct lastSun 2:00 1:00 D
+# Rule AW 1975 only - Mar Sun>=1 3:00 0 W
+# Rule AW 1983 only - Oct lastSun 2:00 1:00 D
+# Rule AW 1984 only - Mar Sun>=1 3:00 0 W
+
+# From Bradley White (1991-03-04):
+# A recent excerpt from an Australian newspaper...
+# Western Australia...do[es] not have daylight saving.
+
+# From John D. Newman via Bradley White (1991-11-02):
+# Western Australia is still on "winter time". Some DH in Sydney
+# rang me at home a few days ago at 6.00am. (He had just arrived at
+# work at 9.00am.)
+# W.A. is switching to Summer Time on Nov 17th just to confuse
+# everybody again.
+
+# From Arthur David Olson (1992-03-08):
+# The 1992 ending date used in the rules is a best guess;
+# it matches what was used in the past.
+
+# <a href="http://www.bom.gov.au/faq/faqgen.htm">
+# The Australian Bureau of Meteorology FAQ
+# </a> (1999-09-27) writes that Giles Meteorological Station uses
+# South Australian time even though it's located in Western Australia.
+
+# Queensland
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # The state of QUEENSLAND.. [ Courtesy Qld. Dept Premier Econ&Trade Devel ]
+# # [ Dec 1990 ]
+# ...
+# Zone Australia/Queensland 10:00 AQ %sST
+# ...
+# Rule AQ 1971 only - Oct lastSun 2:00 1:00 D
+# Rule AQ 1972 only - Feb lastSun 3:00 0 E
+# Rule AQ 1989 max - Oct lastSun 2:00 1:00 D
+# Rule AQ 1990 max - Mar Sun>=1 3:00 0 E
+
+# From Bradley White (1989-12-24):
+# "Australia/Queensland" now observes daylight time (i.e. from
+# October 1989).
+
+# From Bradley White (1991-03-04):
+# A recent excerpt from an Australian newspaper...
+# ...Queensland...[has] agreed to end daylight saving
+# at 3am tomorrow (March 3)...
+
+# From John Mackin (1991-03-06):
+# I can certainly confirm for my part that Daylight Saving in NSW did in fact
+# end on Sunday, 3 March. I don't know at what hour, though. (It surprised
+# me.)
+
+# From Bradley White (1992-03-08):
+# ...there was recently a referendum in Queensland which resulted
+# in the experimental daylight saving system being abandoned. So, ...
+# ...
+# Rule QLD 1989 1991 - Oct lastSun 2:00 1:00 D
+# Rule QLD 1990 1992 - Mar Sun>=1 3:00 0 S
+# ...
+
+# From Arthur David Olson (1992-03-08):
+# The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.
+
+# From Christopher Hunt (2006-11-21), after an advance warning
+# from Jesper Norgaard Welen (2006-11-01):
+# WA are trialing DST for three years.
+# <http://www.parliament.wa.gov.au/parliament/bills.nsf/9A1B183144403DA54825721200088DF1/$File/Bill175-1B.pdf>
+
+# From Rives McDow (2002-04-09):
+# The most interesting region I have found consists of three towns on the
+# southern coast.... South Australia observes daylight saving time; Western
+# Australia does not. The two states are one and a half hours apart. The
+# residents decided to forget about this nonsense of changing the clock so
+# much and set the local time 20 hours and 45 minutes from the
+# international date line, or right in the middle of the time of South
+# Australia and Western Australia....
+#
+# From Paul Eggert (2002-04-09):
+# This is confirmed by the section entitled
+# "What's the deal with time zones???" in
+# <http://www.earthsci.unimelb.edu.au/~awatkins/null.html>.
+#
+# From Alex Livingston (2006-12-07):
+# ... it was just on four years ago that I drove along the Eyre Highway,
+# which passes through eastern Western Australia close to the southern
+# coast of the continent.
+#
+# I paid particular attention to the time kept there. There can be no
+# dispute that UTC+08:45 was considered "the time" from the border
+# village just inside the border with South Australia to as far west
+# as just east of Caiguna. There can also be no dispute that Eucla is
+# the largest population centre in this zone....
+#
+# Now that Western Australia is observing daylight saving, the
+# question arose whether this part of the state would follow suit. I
+# just called the border village and confirmed that indeed they have,
+# meaning that they are now observing UTC+09:45.
+#
+# (2006-12-09):
+# I personally doubt that either experimentation with daylight saving
+# in WA or its introduction in SA had anything to do with the genesis
+# of this time zone. My hunch is that it's been around since well
+# before 1975. I remember seeing it noted on road maps decades ago.
+
+# From Paul Eggert (2006-12-15):
+# For lack of better info, assume the tradition dates back to the
+# introduction of standard time in 1895.
+
+
+# southeast Australia
+#
+# From Paul Eggert (2007-07-23):
+# Starting autumn 2008 Victoria, NSW, South Australia, Tasmania and the ACT
+# end DST the first Sunday in April and start DST the first Sunday in October.
+# http://www.theage.com.au/news/national/daylight-savings-to-span-six-months/2007/06/27/1182623966703.html
+
+
+# South Australia
+
+# From Bradley White (1991-03-04):
+# A recent excerpt from an Australian newspaper...
+# ...South Australia...[has] agreed to end daylight saving
+# at 3am tomorrow (March 3)...
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # The state of SOUTH AUSTRALIA....[ Courtesy of S.A. Dept of Labour ]
+# # [ Nov 1990 ]
+# ...
+# Zone Australia/South 9:30 AS %sST
+# ...
+# Rule AS 1971 max - Oct lastSun 2:00 1:00 D
+# Rule AS 1972 1985 - Mar Sun>=1 3:00 0 C
+# Rule AS 1986 1990 - Mar Sun>=15 3:00 0 C
+# Rule AS 1991 max - Mar Sun>=1 3:00 0 C
+
+# From Bradley White (1992-03-11):
+# Recent correspondence with a friend in Adelaide
+# contained the following exchange: "Due to the Adelaide Festival,
+# South Australia delays setting back our clocks for a few weeks."
+
+# From Robert Elz (1992-03-13):
+# I heard that apparently (or at least, it appears that)
+# South Aus will have an extra 3 weeks daylight saving every even
+# numbered year (from 1990). That's when the Adelaide Festival
+# is on...
+
+# From Robert Elz (1992-03-16, 00:57:07 +1000):
+# DST didn't end in Adelaide today (yesterday)....
+# But whether it's "4th Sunday" or "2nd last Sunday" I have no idea whatever...
+# (it's just as likely to be "the Sunday we pick for this year"...).
+
+# From Bradley White (1994-04-11):
+# If Sun, 15 March, 1992 was at +1030 as kre asserts, but yet Sun, 20 March,
+# 1994 was at +0930 as John Connolly's customer seems to assert, then I can
+# only conclude that the actual rule is more complicated....
+
+# From John Warburton (1994-10-07):
+# The new Daylight Savings dates for South Australia ...
+# was gazetted in the Government Hansard on Sep 26 1994....
+# start on last Sunday in October and end in last sunday in March.
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+# Tasmania
+
+# The rules for 1967 through 1991 were reported by George Shepherd
+# via Simon Woodhead via Robert Elz (1991-03-06):
+# # The state of TASMANIA.. [Courtesy Tasmanian Dept of Premier + Cabinet ]
+# # [ Nov 1990 ]
+
+# From Bill Hart via Guy Harris (1991-10-10):
+# Oh yes, the new daylight savings rules are uniquely tasmanian, we have
+# 6 weeks a year now when we are out of sync with the rest of Australia
+# (but nothing new about that).
+
+# From Alex Livingston (1999-10-04):
+# I heard on the ABC (Australian Broadcasting Corporation) radio news on the
+# (long) weekend that Tasmania, which usually goes its own way in this regard,
+# has decided to join with most of NSW, the ACT, and most of Victoria
+# (Australia) and start daylight saving on the last Sunday in August in 2000
+# instead of the first Sunday in October.
+
+# Sim Alam (2000-07-03) reported a legal citation for the 2000/2001 rules:
+# http://www.thelaw.tas.gov.au/fragview/42++1968+GS3A@EN+2000070300
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+# Victoria
+
+# The rules for 1971 through 1991 were reported by George Shepherd
+# via Simon Woodhead via Robert Elz (1991-03-06):
+# # The state of VICTORIA.. [ Courtesy of Vic. Dept of Premier + Cabinet ]
+# # [ Nov 1990 ]
+
+# From Scott Harrington (2001-08-29):
+# On KQED's "City Arts and Lectures" program last night I heard an
+# interesting story about daylight savings time. Dr. John Heilbron was
+# discussing his book "The Sun in the Church: Cathedrals as Solar
+# Observatories"[1], and in particular the Shrine of Remembrance[2] located
+# in Melbourne, Australia.
+#
+# Apparently the shrine's main purpose is a beam of sunlight which
+# illuminates a special spot on the floor at the 11th hour of the 11th day
+# of the 11th month (Remembrance Day) every year in memory of Australia's
+# fallen WWI soldiers. And if you go there on Nov. 11, at 11am local time,
+# you will indeed see the sunbeam illuminate the special spot at the
+# expected time.
+#
+# However, that is only because of some special mirror contraption that had
+# to be employed, since due to daylight savings time, the true solar time of
+# the remembrance moment occurs one hour later (or earlier?). Perhaps
+# someone with more information on this jury-rig can tell us more.
+#
+# [1] http://www.hup.harvard.edu/catalog/HEISUN.html
+# [2] http://www.shrine.org.au
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+# New South Wales
+
+# From Arthur David Olson:
+# New South Wales and subjurisdictions have their own ideas of a fun time.
+# Based on law library research by John Mackin,
+# who notes:
+# In Australia, time is not legislated federally, but rather by the
+# individual states. Thus, while such terms as ``Eastern Standard Time''
+# [I mean, of course, Australian EST, not any other kind] are in common
+# use, _they have NO REAL MEANING_, as they are not defined in the
+# legislation. This is very important to understand.
+# I have researched New South Wales time only...
+
+# From Eric Ulevik (1999-05-26):
+# DST will start in NSW on the last Sunday of August, rather than the usual
+# October in 2000. [See: Matthew Moore,
+# <a href="http://www.smh.com.au/news/9905/26/pageone/pageone4.html">
+# Two months more daylight saving
+# </a>
+# Sydney Morning Herald (1999-05-26).]
+
+# From Paul Eggert (1999-09-27):
+# See the following official NSW source:
+# <a href="http://dir.gis.nsw.gov.au/cgi-bin/genobject/document/other/daylightsaving/tigGmZ">
+# Daylight Saving in New South Wales.
+# </a>
+#
+# Narrabri Shire (NSW) council has announced it will ignore the extension of
+# daylight saving next year. See:
+# <a href="http://abc.net.au/news/regionals/neweng/monthly/regeng-22jul1999-1.htm">
+# Narrabri Council to ignore daylight saving
+# </a> (1999-07-22). For now, we'll wait to see if this really happens.
+#
+# Victoria will following NSW. See:
+# <a href="http://abc.net.au/local/news/olympics/1999/07/item19990728112314_1.htm">
+# Vic to extend daylight saving
+# </a> (1999-07-28).
+#
+# However, South Australia rejected the DST request. See:
+# <a href="http://abc.net.au/news/olympics/1999/07/item19990719151754_1.htm">
+# South Australia rejects Olympics daylight savings request
+# </a> (1999-07-19).
+#
+# Queensland also will not observe DST for the Olympics. See:
+# <a href="http://abc.net.au/news/olympics/1999/06/item19990601114608_1.htm">
+# Qld says no to daylight savings for Olympics
+# </a> (1999-06-01), which quotes Queensland Premier Peter Beattie as saying
+# ``Look you've got to remember in my family when this came up last time
+# I voted for it, my wife voted against it and she said to me it's all very
+# well for you, you don't have to worry about getting the children out of
+# bed, getting them to school, getting them to sleep at night.
+# I've been through all this argument domestically...my wife rules.''
+#
+# Broken Hill will stick with South Australian time in 2000. See:
+# <a href="http://abc.net.au/news/regionals/brokenh/monthly/regbrok-21jul1999-6.htm">
+# Broken Hill to be behind the times
+# </a> (1999-07-21).
+
+# IATA SSIM (1998-09) says that the spring 2000 change for Australian
+# Capital Territory, New South Wales except Lord Howe Island and Broken
+# Hill, and Victoria will be August 27, presumably due to the Sydney Olympics.
+
+# From Eric Ulevik, referring to Sydney's Sun Herald (2000-08-13), page 29:
+# The Queensland Premier Peter Beattie is encouraging northern NSW
+# towns to use Queensland time.
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+# Yancowinna
+
+# From John Mackin (1989-01-04):
+# `Broken Hill' means the County of Yancowinna.
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # YANCOWINNA.. [ Confirmation courtesy of Broken Hill Postmaster ]
+# # [ Dec 1990 ]
+# ...
+# # Yancowinna uses Central Standard Time, despite [its] location on the
+# # New South Wales side of the S.A. border. Most business and social dealings
+# # are with CST zones, therefore CST is legislated by local government
+# # although the switch to Summer Time occurs in line with N.S.W. There have
+# # been years when this did not apply, but the historical data is not
+# # presently available.
+# Zone Australia/Yancowinna 9:30 AY %sST
+# ...
+# Rule AY 1971 1985 - Oct lastSun 2:00 1:00 D
+# Rule AY 1972 only - Feb lastSun 3:00 0 C
+# [followed by other Rules]
+
+# Lord Howe Island
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# LHI... [ Courtesy of Pauline Van Winsen ]
+# [ Dec 1990 ]
+# Lord Howe Island is located off the New South Wales coast, and is half an
+# hour ahead of NSW time.
+
+# From James Lonergan, Secretary, Lord Howe Island Board (2000-01-27):
+# Lord Howe Island summer time in 2000/2001 will commence on the same
+# date as the rest of NSW (i.e. 2000-08-27). For your information the
+# Lord Howe Island Board (controlling authority for the Island) is
+# seeking the community's views on various options for summer time
+# arrangements on the Island, e.g. advance clocks by 1 full hour
+# instead of only 30 minutes. Dependant on the wishes of residents
+# the Board may approach the NSW government to change the existing
+# arrangements. The starting date for summer time on the Island will
+# however always coincide with the rest of NSW.
+
+# From James Lonergan, Secretary, Lord Howe Island Board (2000-10-25):
+# Lord Howe Island advances clocks by 30 minutes during DST in NSW and retards
+# clocks by 30 minutes when DST finishes. Since DST was most recently
+# introduced in NSW, the "changeover" time on the Island has been 02:00 as
+# shown on clocks on LHI. I guess this means that for 30 minutes at the start
+# of DST, LHI is actually 1 hour ahead of the rest of NSW.
+
+# From Paul Eggert (2006-03-22):
+# For Lord Howe dates we use Shanks & Pottenger through 1989, and
+# Lonergan thereafter. For times we use Lonergan.
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+###############################################################################
+
+# New Zealand
+
+# From Mark Davies (1990-10-03):
+# the 1989/90 year was a trial of an extended "daylight saving" period.
+# This trial was deemed successful and the extended period adopted for
+# subsequent years (with the addition of a further week at the start).
+# source -- phone call to Ministry of Internal Affairs Head Office.
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # The Country of New Zealand (Australia's east island -) Gee they hate that!
+# # or is Australia the west island of N.Z.
+# # [ courtesy of Geoff Tribble.. Auckland N.Z. ]
+# # [ Nov 1990 ]
+# ...
+# Rule NZ 1974 1988 - Oct lastSun 2:00 1:00 D
+# Rule NZ 1989 max - Oct Sun>=1 2:00 1:00 D
+# Rule NZ 1975 1989 - Mar Sun>=1 3:00 0 S
+# Rule NZ 1990 max - Mar lastSun 3:00 0 S
+# ...
+# Zone NZ 12:00 NZ NZ%sT # New Zealand
+# Zone NZ-CHAT 12:45 - NZ-CHAT # Chatham Island
+
+# From Arthur David Olson (1992-03-08):
+# The chosen rules use the Davies October 8 values for the start of DST in 1989
+# rather than the October 1 value.
+
+# From Paul Eggert (1995-12-19);
+# Shank & Pottenger report 2:00 for all autumn changes in Australia and NZ.
+# Robert Uzgalis writes that the New Zealand Daylight
+# Savings Time Order in Council dated 1990-06-18 specifies 2:00 standard
+# time on both the first Sunday in October and the third Sunday in March.
+# As with Australia, we'll assume the tradition is 2:00s, not 2:00.
+#
+# From Paul Eggert (2006-03-22):
+# The Department of Internal Affairs (DIA) maintains a brief history,
+# as does Carol Squires; see tz-link.htm for the full references.
+# Use these sources in preference to Shanks & Pottenger.
+#
+# For Chatham, IATA SSIM (1991/1999) gives the NZ rules but with
+# transitions at 2:45 local standard time; this confirms that Chatham
+# is always exactly 45 minutes ahead of Auckland.
+
+# From Colin Sharples (2007-04-30):
+# DST will now start on the last Sunday in September, and end on the
+# first Sunday in April. The changes take effect this year, meaning
+# that DST will begin on 2007-09-30 2008-04-06.
+# http://www.dia.govt.nz/diawebsite.nsf/wpg_URL/Services-Daylight-Saving-Daylight-saving-to-be-extended
+
+###############################################################################
+
+
+# Fiji
+
+# Howse writes (p 153) that in 1879 the British governor of Fiji
+# enacted an ordinance standardizing the islands on Antipodean Time
+# instead of the American system (which was one day behind).
+
+# From Rives McDow (1998-10-08):
+# Fiji will introduce DST effective 0200 local time, 1998-11-01
+# until 0300 local time 1999-02-28. Each year the DST period will
+# be from the first Sunday in November until the last Sunday in February.
+
+# From Paul Eggert (2000-01-08):
+# IATA SSIM (1999-09) says DST ends 0100 local time. Go with McDow.
+
+# From the BBC World Service (1998-10-31 11:32 UTC):
+# The Fijiian government says the main reasons for the time change is to
+# improve productivity and reduce road accidents. But correspondents say it
+# also hopes the move will boost Fiji's ability to compete with other pacific
+# islands in the effort to attract tourists to witness the dawning of the new
+# millenium.
+
+# http://www.fiji.gov.fj/press/2000_09/2000_09_13-05.shtml (2000-09-13)
+# reports that Fiji has discontinued DST.
+
+# Johnston
+
+# Johnston data is from usno1995.
+
+
+# Kiribati
+
+# From Paul Eggert (1996-01-22):
+# Today's _Wall Street Journal_ (page 1) reports that Kiribati
+# ``declared it the same day throught the country as of Jan. 1, 1995''
+# as part of the competition to be first into the 21st century.
+
+
+# Kwajalein
+
+# In comp.risks 14.87 (26 August 1993), Peter Neumann writes:
+# I wonder what happened in Kwajalein, where there was NO Friday,
+# 1993-08-20. Thursday night at midnight Kwajalein switched sides with
+# respect to the International Date Line, to rejoin its fellow islands,
+# going from 11:59 p.m. Thursday to 12:00 m. Saturday in a blink.
+
+
+# N Mariana Is, Guam
+
+# Howse writes (p 153) ``The Spaniards, on the other hand, reached the
+# Philippines and the Ladrones from America,'' and implies that the Ladrones
+# (now called the Marianas) kept American date for quite some time.
+# For now, we assume the Ladrones switched at the same time as the Philippines;
+# see Asia/Manila.
+
+# US Public Law 106-564 (2000-12-23) made UTC+10 the official standard time,
+# under the name "Chamorro Standard Time". There is no official abbreviation,
+# but Congressman Robert A. Underwood, author of the bill that became law,
+# wrote in a press release (2000-12-27) that he will seek the use of "ChST".
+
+
+# Micronesia
+
+# Alan Eugene Davis writes (1996-03-16),
+# ``I am certain, having lived there for the past decade, that "Truk"
+# (now properly known as Chuuk) ... is in the time zone GMT+10.''
+#
+# Shanks & Pottenger write that Truk switched from UTC+10 to UTC+11
+# on 1978-10-01; ignore this for now.
+
+# From Paul Eggert (1999-10-29):
+# The Federated States of Micronesia Visitors Board writes in
+# <a href="http://www.fsmgov.org/info/clocks.html">
+# The Federated States of Micronesia - Visitor Information
+# </a> (1999-01-26)
+# that Truk and Yap are UTC+10, and Ponape and Kosrae are UTC+11.
+# We don't know when Kosrae switched from UTC+12; assume January 1 for now.
+
+
+# Midway
+
+# From Charles T O'Connor, KMTH DJ (1956),
+# quoted in the KTMH section of the Radio Heritage Collection
+# <http://radiodx.com/spdxr/KMTH.htm> (2002-12-31):
+# For the past two months we've been on what is known as Daylight
+# Saving Time. This time has put us on air at 5am in the morning,
+# your time down there in New Zealand. Starting September 2, 1956
+# we'll again go back to Standard Time. This'll mean that we'll go to
+# air at 6am your time.
+#
+# From Paul Eggert (2003-03-23):
+# We don't know the date of that quote, but we'll guess they
+# started DST on June 3. Possibly DST was observed other years
+# in Midway, but we have no record of it.
+
+
+# Pitcairn
+
+# From Rives McDow (1999-11-08):
+# A Proclamation was signed by the Governor of Pitcairn on the 27th March 1998
+# with regard to Pitcairn Standard Time. The Proclamation is as follows.
+#
+# The local time for general purposes in the Islands shall be
+# Co-ordinated Universal time minus 8 hours and shall be known
+# as Pitcairn Standard Time.
+#
+# ... I have also seen Pitcairn listed as UTC minus 9 hours in several
+# references, and can only assume that this was an error in interpretation
+# somehow in light of this proclamation.
+
+# From Rives McDow (1999-11-09):
+# The Proclamation regarding Pitcairn time came into effect on 27 April 1998
+# ... at midnight.
+
+# From Howie Phelps (1999-11-10), who talked to a Pitcairner via shortwave:
+# Betty Christian told me yesterday that their local time is the same as
+# Pacific Standard Time. They used to be 1/2 hour different from us here in
+# Sacramento but it was changed a couple of years ago.
+
+
+# Samoa
+
+# Howse writes (p 153, citing p 10 of the 1883-11-18 New York Herald)
+# that in 1879 the King of Samoa decided to change
+# ``the date in his kingdom from the Antipodean to the American system,
+# ordaining -- by a masterpiece of diplomatic flattery -- that
+# the Fourth of July should be celebrated twice in that year.''
+
+
+# Tonga
+
+# From Paul Eggert (1996-01-22):
+# Today's _Wall Street Journal_ (p 1) reports that ``Tonga has been plotting
+# to sneak ahead of [New Zealanders] by introducing daylight-saving time.''
+# Since Kiribati has moved the Date Line it's not clear what Tonga will do.
+
+# Don Mundell writes in the 1997-02-20 Tonga Chronicle
+# <a href="http://www.tongatapu.net.to/tonga/homeland/timebegins.htm">
+# How Tonga became `The Land where Time Begins'
+# </a>:
+
+# Until 1941 Tonga maintained a standard time 50 minutes ahead of NZST
+# 12 hours and 20 minutes ahead of GMT. When New Zealand adjusted its
+# standard time in 1940s, Tonga had the choice of subtracting from its
+# local time to come on the same standard time as New Zealand or of
+# advancing its time to maintain the differential of 13 degrees
+# (approximately 50 minutes ahead of New Zealand time).
+#
+# Because His Majesty King Taufa'ahau Tupou IV, then Crown Prince
+# Tungi, preferred to ensure Tonga's title as the land where time
+# begins, the Legislative Assembly approved the latter change.
+#
+# But some of the older, more conservative members from the outer
+# islands objected. "If at midnight on Dec. 31, we move ahead 40
+# minutes, as your Royal Highness wishes, what becomes of the 40
+# minutes we have lost?"
+#
+# The Crown Prince, presented an unanswerable argument: "Remember that
+# on the World Day of Prayer, you would be the first people on Earth
+# to say your prayers in the morning."
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger say the transition was on 1968-10-01; go with Mundell.
+
+# From Eric Ulevik (1999-05-03):
+# Tonga's director of tourism, who is also secretary of the National Millenium
+# Committee, has a plan to get Tonga back in front.
+# He has proposed a one-off move to tropical daylight saving for Tonga from
+# October to March, which has won approval in principle from the Tongan
+# Government.
+
+# From Steffen Thorsen (1999-09-09):
+# * Tonga will introduce DST in November
+#
+# I was given this link by John Letts:
+# <a hef="http://news.bbc.co.uk/hi/english/world/asia-pacific/newsid_424000/424764.stm">
+# http://news.bbc.co.uk/hi/english/world/asia-pacific/newsid_424000/424764.stm
+# </a>
+#
+# I have not been able to find exact dates for the transition in November
+# yet. By reading this article it seems like Fiji will be 14 hours ahead
+# of UTC as well, but as far as I know Fiji will only be 13 hours ahead
+# (12 + 1 hour DST).
+
+# From Arthur David Olson (1999-09-20):
+# According to <a href="http://www.tongaonline.com/news/sept1799.html>
+# http://www.tongaonline.com/news/sept1799.html
+# </a>:
+# "Daylight Savings Time will take effect on Oct. 2 through April 15, 2000
+# and annually thereafter from the first Saturday in October through the
+# third Saturday of April. Under the system approved by Privy Council on
+# Sept. 10, clocks must be turned ahead one hour on the opening day and
+# set back an hour on the closing date."
+# Alas, no indication of the time of day.
+
+# From Rives McDow (1999-10-06):
+# Tonga started its Daylight Saving on Saturday morning October 2nd at 0200am.
+# Daylight Saving ends on April 16 at 0300am which is Sunday morning.
+
+# From Steffen Thorsen (2000-10-31):
+# Back in March I found a notice on the website http://www.tongaonline.com
+# that Tonga changed back to standard time one month early, on March 19
+# instead of the original reported date April 16. Unfortunately, the article
+# is no longer available on the site, and I did not make a copy of the
+# text, and I have forgotten to report it here.
+# (Original URL was: http://www.tongaonline.com/news/march162000.htm )
+
+# From Rives McDow (2000-12-01):
+# Tonga is observing DST as of 2000-11-04 and will stop on 2001-01-27.
+
+# From Sione Moala-Mafi (2001-09-20) via Rives McDow:
+# At 2:00am on the first Sunday of November, the standard time in the Kingdom
+# shall be moved forward by one hour to 3:00am. At 2:00am on the last Sunday
+# of January the standard time in the Kingdom shall be moved backward by one
+# hour to 1:00am.
+
+# From Pulu 'Anau (2002-11-05):
+# The law was for 3 years, supposedly to get renewed. It wasn't.
+
+
+# Wake
+
+# From Vernice Anderson, Personal Secretary to Philip Jessup,
+# US Ambassador At Large (oral history interview, 1971-02-02):
+#
+# Saturday, the 14th [of October, 1950] -- ... The time was all the
+# more confusing at that point, because we had crossed the
+# International Date Line, thus getting two Sundays. Furthermore, we
+# discovered that Wake Island had two hours of daylight saving time
+# making calculation of time in Washington difficult if not almost
+# impossible.
+#
+# http://www.trumanlibrary.org/wake/meeting.htm
+
+# From Paul Eggert (2003-03-23):
+# We have no other report of DST in Wake Island, so omit this info for now.
+
+###############################################################################
+
+# The International Date Line
+
+# From Gwillim Law (2000-01-03):
+#
+# The International Date Line is not defined by any international standard,
+# convention, or treaty. Mapmakers are free to draw it as they please.
+# Reputable mapmakers will simply ensure that every point of land appears on
+# the correct side of the IDL, according to the date legally observed there.
+#
+# When Kiribati adopted a uniform date in 1995, thereby moving the Phoenix and
+# Line Islands to the west side of the IDL (or, if you prefer, moving the IDL
+# to the east side of the Phoenix and Line Islands), I suppose that most
+# mapmakers redrew the IDL following the boundary of Kiribati. Even that line
+# has a rather arbitrary nature. The straight-line boundaries between Pacific
+# island nations that are shown on many maps are based on an international
+# convention, but are not legally binding national borders.... The date is
+# governed by the IDL; therefore, even on the high seas, there may be some
+# places as late as fourteen hours later than UTC. And, since the IDL is not
+# an international standard, there are some places on the high seas where the
+# correct date is ambiguous.
+
+# From Wikipedia <http://en.wikipedia.org/wiki/Time_zone> (2005-08-31):
+# Before 1920, all ships kept local apparent time on the high seas by setting
+# their clocks at night or at the morning sight so that, given the ship's
+# speed and direction, it would be 12 o'clock when the Sun crossed the ship's
+# meridian (12 o'clock = local apparent noon). During 1917, at the
+# Anglo-French Conference on Time-keeping at Sea, it was recommended that all
+# ships, both military and civilian, should adopt hourly standard time zones
+# on the high seas. Whenever a ship was within the territorial waters of any
+# nation it would use that nation's standard time. The captain was permitted
+# to change his ship's clocks at a time of his choice following his ship's
+# entry into another zone time--he often chose midnight. These zones were
+# adopted by all major fleets between 1920 and 1925 but not by many
+# independent merchant ships until World War II.
+
+# From Paul Eggert, using references suggested by Oscar van Vlijmen
+# (2005-03-20):
+#
+# The American Practical Navigator (2002)
+# <http://pollux.nss.nima.mil/pubs/pubs_j_apn_sections.html?rid=187>
+# talks only about the 180-degree meridian with respect to ships in
+# international waters; it ignores the international date line.
diff --git a/jdk/make/sun/javazic/tzdata/backward b/jdk/make/sun/javazic/tzdata/backward
new file mode 100644
index 0000000..0e64882
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/backward
@@ -0,0 +1,131 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# This file provides links between current names for time zones
+# and their old names. Many names changed in late 1993.
+
+Link Africa/Asmara Africa/Asmera
+Link Africa/Bamako Africa/Timbuktu
+Link America/Argentina/Catamarca America/Argentina/ComodRivadavia
+Link America/Adak America/Atka
+Link America/Argentina/Buenos_Aires America/Buenos_Aires
+Link America/Argentina/Catamarca America/Catamarca
+Link America/Atikokan America/Coral_Harbour
+Link America/Argentina/Cordoba America/Cordoba
+Link America/Tijuana America/Ensenada
+Link America/Indiana/Indianapolis America/Fort_Wayne
+Link America/Indiana/Indianapolis America/Indianapolis
+Link America/Argentina/Jujuy America/Jujuy
+Link America/Indiana/Knox America/Knox_IN
+Link America/Kentucky/Louisville America/Louisville
+Link America/Argentina/Mendoza America/Mendoza
+Link America/Rio_Branco America/Porto_Acre
+Link America/Argentina/Cordoba America/Rosario
+Link America/St_Thomas America/Virgin
+Link Asia/Ashgabat Asia/Ashkhabad
+Link Asia/Chongqing Asia/Chungking
+Link Asia/Dhaka Asia/Dacca
+Link Asia/Macau Asia/Macao
+Link Asia/Jerusalem Asia/Tel_Aviv
+Link Asia/Thimphu Asia/Thimbu
+Link Asia/Makassar Asia/Ujung_Pandang
+Link Asia/Ulaanbaatar Asia/Ulan_Bator
+Link Atlantic/Faroe Atlantic/Faeroe
+Link Australia/Sydney Australia/ACT
+Link Australia/Sydney Australia/Canberra
+Link Australia/Lord_Howe Australia/LHI
+Link Australia/Sydney Australia/NSW
+Link Australia/Darwin Australia/North
+Link Australia/Brisbane Australia/Queensland
+Link Australia/Adelaide Australia/South
+Link Australia/Hobart Australia/Tasmania
+Link Australia/Melbourne Australia/Victoria
+Link Australia/Perth Australia/West
+Link Australia/Broken_Hill Australia/Yancowinna
+Link America/Rio_Branco Brazil/Acre
+Link America/Noronha Brazil/DeNoronha
+Link America/Sao_Paulo Brazil/East
+Link America/Manaus Brazil/West
+Link America/Halifax Canada/Atlantic
+Link America/Winnipeg Canada/Central
+Link America/Regina Canada/East-Saskatchewan
+Link America/Toronto Canada/Eastern
+Link America/Edmonton Canada/Mountain
+Link America/St_Johns Canada/Newfoundland
+Link America/Vancouver Canada/Pacific
+Link America/Regina Canada/Saskatchewan
+Link America/Whitehorse Canada/Yukon
+Link America/Santiago Chile/Continental
+Link Pacific/Easter Chile/EasterIsland
+Link America/Havana Cuba
+Link Africa/Cairo Egypt
+Link Europe/Dublin Eire
+Link Europe/London Europe/Belfast
+Link Europe/Chisinau Europe/Tiraspol
+Link Europe/London GB
+Link Europe/London GB-Eire
+Link Etc/GMT GMT+0
+Link Etc/GMT GMT-0
+Link Etc/GMT GMT0
+Link Etc/GMT Greenwich
+Link Asia/Hong_Kong Hongkong
+Link Atlantic/Reykjavik Iceland
+Link Asia/Tehran Iran
+Link Asia/Jerusalem Israel
+Link America/Jamaica Jamaica
+Link Asia/Tokyo Japan
+Link Pacific/Kwajalein Kwajalein
+Link Africa/Tripoli Libya
+Link America/Tijuana Mexico/BajaNorte
+Link America/Mazatlan Mexico/BajaSur
+Link America/Mexico_City Mexico/General
+Link Pacific/Auckland NZ
+Link Pacific/Chatham NZ-CHAT
+Link America/Denver Navajo
+Link Asia/Shanghai PRC
+Link Pacific/Pago_Pago Pacific/Samoa
+Link Pacific/Truk Pacific/Yap
+Link Europe/Warsaw Poland
+Link Europe/Lisbon Portugal
+Link Asia/Taipei ROC
+Link Asia/Seoul ROK
+Link Asia/Singapore Singapore
+Link Europe/Istanbul Turkey
+Link Etc/UCT UCT
+Link America/Anchorage US/Alaska
+Link America/Adak US/Aleutian
+Link America/Phoenix US/Arizona
+Link America/Chicago US/Central
+Link America/Indiana/Indianapolis US/East-Indiana
+Link America/New_York US/Eastern
+Link Pacific/Honolulu US/Hawaii
+Link America/Indiana/Knox US/Indiana-Starke
+Link America/Detroit US/Michigan
+Link America/Denver US/Mountain
+Link America/Los_Angeles US/Pacific
+Link Pacific/Pago_Pago US/Samoa
+Link Etc/UTC UTC
+Link Etc/UTC Universal
+Link Europe/Moscow W-SU
+Link Etc/UTC Zulu
diff --git a/jdk/make/sun/javazic/tzdata/etcetera b/jdk/make/sun/javazic/tzdata/etcetera
new file mode 100644
index 0000000..28ae444
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/etcetera
@@ -0,0 +1,102 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# These entries are mostly present for historical reasons, so that
+# people in areas not otherwise covered by the tz files could "zic -l"
+# to a time zone that was right for their area. These days, the
+# tz files cover almost all the inhabited world, and the only practical
+# need now for the entries that are not on UTC are for ships at sea
+# that cannot use POSIX TZ settings.
+
+Zone Etc/GMT 0 - GMT
+Zone Etc/UTC 0 - UTC
+Zone Etc/UCT 0 - UCT
+
+# The following link uses older naming conventions,
+# but it belongs here, not in the file `backward',
+# as functions like gmtime load the "GMT" file to handle leap seconds properly.
+# We want this to work even on installations that omit the other older names.
+Link Etc/GMT GMT
+
+Link Etc/UTC Etc/Universal
+Link Etc/UTC Etc/Zulu
+
+Link Etc/GMT Etc/Greenwich
+Link Etc/GMT Etc/GMT-0
+Link Etc/GMT Etc/GMT+0
+Link Etc/GMT Etc/GMT0
+
+# We use POSIX-style signs in the Zone names and the output abbreviations,
+# even though this is the opposite of what many people expect.
+# POSIX has positive signs west of Greenwich, but many people expect
+# positive signs east of Greenwich. For example, TZ='Etc/GMT+4' uses
+# the abbreviation "GMT+4" and corresponds to 4 hours behind UTC
+# (i.e. west of Greenwich) even though many people would expect it to
+# mean 4 hours ahead of UTC (i.e. east of Greenwich).
+#
+# In the draft 5 of POSIX 1003.1-200x, the angle bracket notation
+# (which is not yet supported by the tz code) allows for
+# TZ='<GMT-4>+4'; if you want time zone abbreviations conforming to
+# ISO 8601 you can use TZ='<-0400>+4'. Thus the commonly-expected
+# offset is kept within the angle bracket (and is used for display)
+# while the POSIX sign is kept outside the angle bracket (and is used
+# for calculation).
+#
+# Do not use a TZ setting like TZ='GMT+4', which is four hours behind
+# GMT but uses the completely misleading abbreviation "GMT".
+
+# Earlier incarnations of this package were not POSIX-compliant,
+# and had lines such as
+# Zone GMT-12 -12 - GMT-1200
+# We did not want things to change quietly if someone accustomed to the old
+# way does a
+# zic -l GMT-12
+# so we moved the names into the Etc subdirectory.
+
+Zone Etc/GMT-14 14 - GMT-14 # 14 hours ahead of GMT
+Zone Etc/GMT-13 13 - GMT-13
+Zone Etc/GMT-12 12 - GMT-12
+Zone Etc/GMT-11 11 - GMT-11
+Zone Etc/GMT-10 10 - GMT-10
+Zone Etc/GMT-9 9 - GMT-9
+Zone Etc/GMT-8 8 - GMT-8
+Zone Etc/GMT-7 7 - GMT-7
+Zone Etc/GMT-6 6 - GMT-6
+Zone Etc/GMT-5 5 - GMT-5
+Zone Etc/GMT-4 4 - GMT-4
+Zone Etc/GMT-3 3 - GMT-3
+Zone Etc/GMT-2 2 - GMT-2
+Zone Etc/GMT-1 1 - GMT-1
+Zone Etc/GMT+1 -1 - GMT+1
+Zone Etc/GMT+2 -2 - GMT+2
+Zone Etc/GMT+3 -3 - GMT+3
+Zone Etc/GMT+4 -4 - GMT+4
+Zone Etc/GMT+5 -5 - GMT+5
+Zone Etc/GMT+6 -6 - GMT+6
+Zone Etc/GMT+7 -7 - GMT+7
+Zone Etc/GMT+8 -8 - GMT+8
+Zone Etc/GMT+9 -9 - GMT+9
+Zone Etc/GMT+10 -10 - GMT+10
+Zone Etc/GMT+11 -11 - GMT+11
+Zone Etc/GMT+12 -12 - GMT+12
diff --git a/jdk/make/sun/javazic/tzdata/europe b/jdk/make/sun/javazic/tzdata/europe
new file mode 100644
index 0000000..16fedf8
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/europe
@@ -0,0 +1,2548 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# <pre>
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@elsie.nci.nih.gov for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually. Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1991, and IATA SSIM is the source for entries afterwards.
+#
+# Other sources occasionally used include:
+#
+# Edward W. Whitman, World Time Differences,
+# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
+# which I found in the UCLA library.
+#
+# <a href="http://www.pettswoodvillage.co.uk/Daylight_Savings_William_Willett.pdf">
+# William Willett, The Waste of Daylight, 19th edition
+# </a> (1914-03)
+#
+# Brazil's Departamento Servico da Hora (DSH),
+# <a href="http://pcdsh01.on.br/HISTHV.htm">
+# History of Summer Time
+# </a> (1998-09-21, in Portuguese)
+
+#
+# I invented the abbreviations marked `*' in the following table;
+# the rest are from earlier versions of this file, or from other sources.
+# Corrections are welcome!
+# std dst 2dst
+# LMT Local Mean Time
+# -4:00 AST ADT Atlantic
+# -3:00 WGT WGST Western Greenland*
+# -1:00 EGT EGST Eastern Greenland*
+# 0:00 GMT BST BDST Greenwich, British Summer
+# 0:00 GMT IST Greenwich, Irish Summer
+# 0:00 WET WEST WEMT Western Europe
+# 0:19:32.13 AMT NST Amsterdam, Netherlands Summer (1835-1937)*
+# 0:20 NET NEST Netherlands (1937-1940)*
+# 1:00 CET CEST CEMT Central Europe
+# 1:00:14 SET Swedish (1879-1899)*
+# 2:00 EET EEST Eastern Europe
+# 3:00 MSK MSD Moscow
+#
+# A reliable and entertaining source about time zones, especially in Britain,
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+
+# From Peter Ilieve (1994-12-04),
+# The original six [EU members]: Belgium, France, (West) Germany, Italy,
+# Luxembourg, the Netherlands.
+# Plus, from 1 Jan 73: Denmark, Ireland, United Kingdom.
+# Plus, from 1 Jan 81: Greece.
+# Plus, from 1 Jan 86: Spain, Portugal.
+# Plus, from 1 Jan 95: Austria, Finland, Sweden. (Norway negotiated terms for
+# entry but in a referendum on 28 Nov 94 the people voted No by 52.2% to 47.8%
+# on a turnout of 88.6%. This was almost the same result as Norway's previous
+# referendum in 1972, they are the only country to have said No twice.
+# Referendums in the other three countries voted Yes.)
+# ...
+# Estonia ... uses EU dates but not at 01:00 GMT, they use midnight GMT.
+# I don't think they know yet what they will do from 1996 onwards.
+# ...
+# There shouldn't be any [current members who are not using EU rules].
+# A Directive has the force of law, member states are obliged to enact
+# national law to implement it. The only contentious issue was the
+# different end date for the UK and Ireland, and this was always allowed
+# in the Directive.
+
+
+###############################################################################
+
+# Britain (United Kingdom) and Ireland (Eire)
+
+# From Peter Ilieve (1994-07-06):
+#
+# On 17 Jan 1994 the Independent, a UK quality newspaper, had a piece about
+# historical vistas along the Thames in west London. There was a photo
+# and a sketch map showing some of the sightlines involved. One paragraph
+# of the text said:
+#
+# `An old stone obelisk marking a forgotten terrestrial meridian stands
+# beside the river at Kew. In the 18th century, before time and longitude
+# was standardised by the Royal Observatory in Greenwich, scholars observed
+# this stone and the movement of stars from Kew Observatory nearby. They
+# made their calculations and set the time for the Horse Guards and Parliament,
+# but now the stone is obscured by scrubwood and can only be seen by walking
+# along the towpath within a few yards of it.'
+#
+# I have a one inch to one mile map of London and my estimate of the stone's
+# position is 51 deg. 28' 30" N, 0 deg. 18' 45" W. The longitude should
+# be within about +-2". The Ordnance Survey grid reference is TQ172761.
+#
+# [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.]
+
+# From Paul Eggert (1993-11-18):
+#
+# Howse writes that Britain was the first country to use standard time.
+# The railways cared most about the inconsistencies of local mean time,
+# and it was they who forced a uniform time on the country.
+# The original idea was credited to Dr. William Hyde Wollaston (1766-1828)
+# and was popularized by Abraham Follett Osler (1808-1903).
+# The first railway to adopt London time was the Great Western Railway
+# in November 1840; other railways followed suit, and by 1847 most
+# (though not all) railways used London time. On 1847-09-22 the
+# Railway Clearing House, an industry standards body, recommended that GMT be
+# adopted at all stations as soon as the General Post Office permitted it.
+# The transition occurred on 12-01 for the L&NW, the Caledonian,
+# and presumably other railways; the January 1848 Bradshaw's lists many
+# railways as using GMT. By 1855 the vast majority of public
+# clocks in Britain were set to GMT (though some, like the great clock
+# on Tom Tower at Christ Church, Oxford, were fitted with two minute hands,
+# one for local time and one for GMT). The last major holdout was the legal
+# system, which stubbornly stuck to local time for many years, leading
+# to oddities like polls opening at 08:13 and closing at 16:13.
+# The legal system finally switched to GMT when the Statutes (Definition
+# of Time) Act took effect; it received the Royal Assent on 1880-08-02.
+#
+# In the tables below, we condense this complicated story into a single
+# transition date for London, namely 1847-12-01. We don't know as much
+# about Dublin, so we use 1880-08-02, the legal transition time.
+
+# From Paul Eggert (2003-09-27):
+# Summer Time was first seriously proposed by William Willett (1857-1915),
+# a London builder and member of the Royal Astronomical Society
+# who circulated a pamphlet ``The Waste of Daylight'' (1907)
+# that proposed advancing clocks 20 minutes on each of four Sundays in April,
+# and retarding them by the same amount on four Sundays in September.
+# A bill was drafted in 1909 and introduced in Parliament several times,
+# but it met with ridicule and opposition, especially from farming interests.
+# Later editions of the pamphlet proposed one-hour summer time, and
+# it was eventually adopted as a wartime measure in 1916.
+# See: Summer Time Arrives Early, The Times (2000-05-18).
+# A monument to Willett was unveiled on 1927-05-21, in an open space in
+# a 45-acre wood near Chislehurst, Kent that was purchased by popular
+# subscription and open to the public. On the south face of the monolith,
+# designed by G. W. Miller, is the the William Willett Memorial Sundial,
+# which is permanently set to Summer Time.
+
+# From Winston Churchill (1934-04-28):
+# It is one of the paradoxes of history that we should owe the boon of
+# summer time, which gives every year to the people of this country
+# between 160 and 170 hours more daylight leisure, to a war which
+# plunged Europe into darkness for four years, and shook the
+# foundations of civilization throughout the world.
+# -- <a href="http://www.winstonchurchill.org/fh114willett.htm">
+# "A Silent Toast to William Willett", Pictorial Weekly
+# </a>
+
+# From Paul Eggert (1996-09-03):
+# The OED Supplement says that the English originally said ``Daylight Saving''
+# when they were debating the adoption of DST in 1908; but by 1916 this
+# term appears only in quotes taken from DST's opponents, whereas the
+# proponents (who eventually won the argument) are quoted as using ``Summer''.
+
+# From Arthur David Olson (1989-01-19):
+#
+# A source at the British Information Office in New York avers that it's
+# known as "British" Summer Time in all parts of the United Kingdom.
+
+# Date: 4 Jan 89 08:57:25 GMT (Wed)
+# From: Jonathan Leffler
+# [British Summer Time] is fixed annually by Act of Parliament.
+# If you can predict what Parliament will do, you should be in
+# politics making a fortune, not computing.
+
+# From Chris Carrier (1996-06-14):
+# I remember reading in various wartime issues of the London Times the
+# acronym BDST for British Double Summer Time. Look for the published
+# time of sunrise and sunset in The Times, when BDST was in effect, and
+# if you find a zone reference it will say, "All times B.D.S.T."
+
+# From Joseph S. Myers (1999-09-02):
+# ... some military cables (WO 219/4100 - this is a copy from the
+# main SHAEF archives held in the US National Archives, SHAEF/5252/8/516)
+# agree that the usage is BDST (this appears in a message dated 17 Feb 1945).
+
+# From Joseph S. Myers (2000-10-03):
+# On 18th April 1941, Sir Stephen Tallents of the BBC wrote to Sir
+# Alexander Maxwell of the Home Office asking whether there was any
+# official designation; the reply of the 21st was that there wasn't
+# but he couldn't think of anything better than the "Double British
+# Summer Time" that the BBC had been using informally.
+# http://student.cusu.cam.ac.uk/~jsm28/british-time/bbc-19410418.png
+# http://student.cusu.cam.ac.uk/~jsm28/british-time/ho-19410421.png
+
+# From Sir Alexander Maxwell in the above-mentioned letter (1941-04-21):
+# [N]o official designation has as far as I know been adopted for the time
+# which is to be introduced in May....
+# I cannot think of anything better than "Double British Summer Time"
+# which could not be said to run counter to any official description.
+
+# From Paul Eggert (2000-10-02):
+# Howse writes (p 157) `DBST' too, but `BDST' seems to have been common
+# and follows the more usual convention of putting the location name first,
+# so we use `BDST'.
+
+# Peter Ilieve (1998-04-19) described at length
+# the history of summer time legislation in the United Kingdom.
+# Since 1998 Joseph S. Myers has been updating
+# and extending this list, which can be found in
+# <a href="http://student.cusu.cam.ac.uk/~jsm28/british-time/">
+# History of legal time in Britain
+# </a>
+
+# From Joseph S. Myers (1998-01-06):
+#
+# The legal time in the UK outside of summer time is definitely GMT, not UTC;
+# see Lord Tanlaw's speech
+# <a href="http://www.parliament.the-stationery-office.co.uk/pa/ld199697/ldhansrd/pdvn/lds97/text/70611-20.htm#70611-20_head0">
+# (Lords Hansard 11 June 1997 columns 964 to 976)
+# </a>.
+
+# From Paul Eggert (2006-03-22):
+#
+# For lack of other data, follow Shanks & Pottenger for Eire in 1940-1948.
+#
+# Given Ilieve and Myers's data, the following claims by Shanks & Pottenger
+# are incorrect:
+# * Wales did not switch from GMT to daylight saving time until
+# 1921 Apr 3, when they began to conform with the rest of Great Britain.
+# Actually, Wales was identical after 1880.
+# * Eire had two transitions on 1916 Oct 1.
+# It actually just had one transition.
+# * Northern Ireland used single daylight saving time throughout WW II.
+# Actually, it conformed to Britain.
+# * GB-Eire changed standard time to 1 hour ahead of GMT on 1968-02-18.
+# Actually, that date saw the usual switch to summer time.
+# Standard time was not changed until 1968-10-27 (the clocks didn't change).
+#
+# Here is another incorrect claim by Shanks & Pottenger:
+# * Jersey, Guernsey, and the Isle of Man did not switch from GMT
+# to daylight saving time until 1921 Apr 3, when they began to
+# conform with Great Britain.
+# S.R.&O. 1916, No. 382 and HO 45/10811/312364 (quoted above) say otherwise.
+#
+# The following claim by Shanks & Pottenger is possible though doubtful;
+# we'll ignore it for now.
+# * Dublin's 1971-10-31 switch was at 02:00, even though London's was 03:00.
+#
+#
+# Whitman says Dublin Mean Time was -0:25:21, which is more precise than
+# Shanks & Pottenger.
+# Perhaps this was Dunsink Observatory Time, as Dunsink Observatory
+# (8 km NW of Dublin's center) seemingly was to Dublin as Greenwich was
+# to London. For example:
+#
+# "Timeball on the ballast office is down. Dunsink time."
+# -- James Joyce, Ulysses
+
+# From Joseph S. Myers (2005-01-26):
+# Irish laws are available online at www.irishstatutebook.ie. These include
+# various relating to legal time, for example:
+#
+# ZZA13Y1923.html ZZA12Y1924.html ZZA8Y1925.html ZZSIV20PG1267.html
+#
+# ZZSI71Y1947.html ZZSI128Y1948.html ZZSI23Y1949.html ZZSI41Y1950.html
+# ZZSI27Y1951.html ZZSI73Y1952.html
+#
+# ZZSI11Y1961.html ZZSI232Y1961.html ZZSI182Y1962.html
+# ZZSI167Y1963.html ZZSI257Y1964.html ZZSI198Y1967.html
+# ZZA23Y1968.html ZZA17Y1971.html
+#
+# ZZSI67Y1981.html ZZSI212Y1982.html ZZSI45Y1986.html
+# ZZSI264Y1988.html ZZSI52Y1990.html ZZSI371Y1992.html
+# ZZSI395Y1994.html ZZSI484Y1997.html ZZSI506Y2001.html
+#
+# [These are all relative to the root, e.g., the first is
+# <http://www.irishstatutebook.ie/ZZA13Y1923.html>.]
+#
+# (These are those I found, but there could be more. In any case these
+# should allow various updates to the comments in the europe file to cover
+# the laws applicable in Ireland.)
+#
+# (Note that the time in the Republic of Ireland since 1968 has been defined
+# in terms of standard time being GMT+1 with a period of winter time when it
+# is GMT, rather than standard time being GMT with a period of summer time
+# being GMT+1.)
+
+# From Paul Eggert (1999-03-28):
+# Clive Feather (<news:859845706.26043.0@office.demon.net>, 1997-03-31)
+# reports that Folkestone (Cheriton) Shuttle Terminal uses Concession Time
+# (CT), equivalent to French civil time.
+# Julian Hill (<news:36118128.5A14@virgin.net>, 1998-09-30) reports that
+# trains between Dollands Moor (the freight facility next door)
+# and Frethun run in CT.
+# My admittedly uninformed guess is that the terminal has two authorities,
+# the French concession operators and the British civil authorities,
+# and that the time depends on who you're talking to.
+# If, say, the British police were called to the station for some reason,
+# I would expect the official police report to use GMT/BST and not CET/CEST.
+# This is a borderline case, but for now let's stick to GMT/BST.
+
+# From an anonymous contributor (1996-06-02):
+# The law governing time in Ireland is under Statutory Instrument SI 395/94,
+# which gives force to European Union 7th Council Directive # 94/21/EC.
+# Under this directive, the Minister for Justice in Ireland makes appropriate
+# regulations. I spoke this morning with the Secretary of the Department of
+# Justice (tel +353 1 678 9711) who confirmed to me that the correct name is
+# "Irish Summer Time", abbreviated to "IST".
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# Summer Time Act, 1916
+Rule GB-Eire 1916 only - May 21 2:00s 1:00 BST
+Rule GB-Eire 1916 only - Oct 1 2:00s 0 GMT
+# S.R.&O. 1917, No. 358
+Rule GB-Eire 1917 only - Apr 8 2:00s 1:00 BST
+Rule GB-Eire 1917 only - Sep 17 2:00s 0 GMT
+# S.R.&O. 1918, No. 274
+Rule GB-Eire 1918 only - Mar 24 2:00s 1:00 BST
+Rule GB-Eire 1918 only - Sep 30 2:00s 0 GMT
+# S.R.&O. 1919, No. 297
+Rule GB-Eire 1919 only - Mar 30 2:00s 1:00 BST
+Rule GB-Eire 1919 only - Sep 29 2:00s 0 GMT
+# S.R.&O. 1920, No. 458
+Rule GB-Eire 1920 only - Mar 28 2:00s 1:00 BST
+# S.R.&O. 1920, No. 1844
+Rule GB-Eire 1920 only - Oct 25 2:00s 0 GMT
+# S.R.&O. 1921, No. 363
+Rule GB-Eire 1921 only - Apr 3 2:00s 1:00 BST
+Rule GB-Eire 1921 only - Oct 3 2:00s 0 GMT
+# S.R.&O. 1922, No. 264
+Rule GB-Eire 1922 only - Mar 26 2:00s 1:00 BST
+Rule GB-Eire 1922 only - Oct 8 2:00s 0 GMT
+# The Summer Time Act, 1922
+Rule GB-Eire 1923 only - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1923 1924 - Sep Sun>=16 2:00s 0 GMT
+Rule GB-Eire 1924 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1925 1926 - Apr Sun>=16 2:00s 1:00 BST
+# The Summer Time Act, 1925
+Rule GB-Eire 1925 1938 - Oct Sun>=2 2:00s 0 GMT
+Rule GB-Eire 1927 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1928 1929 - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1930 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1931 1932 - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1933 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1934 only - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1935 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1936 1937 - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1938 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1939 only - Apr Sun>=16 2:00s 1:00 BST
+# S.R.&O. 1939, No. 1379
+Rule GB-Eire 1939 only - Nov Sun>=16 2:00s 0 GMT
+# S.R.&O. 1940, No. 172 and No. 1883
+Rule GB-Eire 1940 only - Feb Sun>=23 2:00s 1:00 BST
+# S.R.&O. 1941, No. 476
+Rule GB-Eire 1941 only - May Sun>=2 1:00s 2:00 BDST
+Rule GB-Eire 1941 1943 - Aug Sun>=9 1:00s 1:00 BST
+# S.R.&O. 1942, No. 506
+Rule GB-Eire 1942 1944 - Apr Sun>=2 1:00s 2:00 BDST
+# S.R.&O. 1944, No. 932
+Rule GB-Eire 1944 only - Sep Sun>=16 1:00s 1:00 BST
+# S.R.&O. 1945, No. 312
+Rule GB-Eire 1945 only - Apr Mon>=2 1:00s 2:00 BDST
+Rule GB-Eire 1945 only - Jul Sun>=9 1:00s 1:00 BST
+# S.R.&O. 1945, No. 1208
+Rule GB-Eire 1945 1946 - Oct Sun>=2 2:00s 0 GMT
+Rule GB-Eire 1946 only - Apr Sun>=9 2:00s 1:00 BST
+# The Summer Time Act, 1947
+Rule GB-Eire 1947 only - Mar 16 2:00s 1:00 BST
+Rule GB-Eire 1947 only - Apr 13 1:00s 2:00 BDST
+Rule GB-Eire 1947 only - Aug 10 1:00s 1:00 BST
+Rule GB-Eire 1947 only - Nov 2 2:00s 0 GMT
+# Summer Time Order, 1948 (S.I. 1948/495)
+Rule GB-Eire 1948 only - Mar 14 2:00s 1:00 BST
+Rule GB-Eire 1948 only - Oct 31 2:00s 0 GMT
+# Summer Time Order, 1949 (S.I. 1949/373)
+Rule GB-Eire 1949 only - Apr 3 2:00s 1:00 BST
+Rule GB-Eire 1949 only - Oct 30 2:00s 0 GMT
+# Summer Time Order, 1950 (S.I. 1950/518)
+# Summer Time Order, 1951 (S.I. 1951/430)
+# Summer Time Order, 1952 (S.I. 1952/451)
+Rule GB-Eire 1950 1952 - Apr Sun>=14 2:00s 1:00 BST
+Rule GB-Eire 1950 1952 - Oct Sun>=21 2:00s 0 GMT
+# revert to the rules of the Summer Time Act, 1925
+Rule GB-Eire 1953 only - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1953 1960 - Oct Sun>=2 2:00s 0 GMT
+Rule GB-Eire 1954 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1955 1956 - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1957 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1958 1959 - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1960 only - Apr Sun>=9 2:00s 1:00 BST
+# Summer Time Order, 1961 (S.I. 1961/71)
+# Summer Time (1962) Order, 1961 (S.I. 1961/2465)
+# Summer Time Order, 1963 (S.I. 1963/81)
+Rule GB-Eire 1961 1963 - Mar lastSun 2:00s 1:00 BST
+Rule GB-Eire 1961 1968 - Oct Sun>=23 2:00s 0 GMT
+# Summer Time (1964) Order, 1963 (S.I. 1963/2101)
+# Summer Time Order, 1964 (S.I. 1964/1201)
+# Summer Time Order, 1967 (S.I. 1967/1148)
+Rule GB-Eire 1964 1967 - Mar Sun>=19 2:00s 1:00 BST
+# Summer Time Order, 1968 (S.I. 1968/117)
+Rule GB-Eire 1968 only - Feb 18 2:00s 1:00 BST
+# The British Standard Time Act, 1968
+# (no summer time)
+# The Summer Time Act, 1972
+Rule GB-Eire 1972 1980 - Mar Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1972 1980 - Oct Sun>=23 2:00s 0 GMT
+# Summer Time Order, 1980 (S.I. 1980/1089)
+# Summer Time Order, 1982 (S.I. 1982/1673)
+# Summer Time Order, 1986 (S.I. 1986/223)
+# Summer Time Order, 1988 (S.I. 1988/931)
+Rule GB-Eire 1981 1995 - Mar lastSun 1:00u 1:00 BST
+Rule GB-Eire 1981 1989 - Oct Sun>=23 1:00u 0 GMT
+# Summer Time Order, 1989 (S.I. 1989/985)
+# Summer Time Order, 1992 (S.I. 1992/1729)
+# Summer Time Order 1994 (S.I. 1994/2798)
+Rule GB-Eire 1990 1995 - Oct Sun>=22 1:00u 0 GMT
+# Summer Time Order 1997 (S.I. 1997/2982)
+# See EU for rules starting in 1996.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/London -0:01:15 - LMT 1847 Dec 1 0:00s
+ 0:00 GB-Eire %s 1968 Oct 27
+ 1:00 - BST 1971 Oct 31 2:00u
+ 0:00 GB-Eire %s 1996
+ 0:00 EU GMT/BST
+Link Europe/London Europe/Jersey
+Link Europe/London Europe/Guernsey
+Link Europe/London Europe/Isle_of_Man
+Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2
+ -0:25:21 - DMT 1916 May 21 2:00
+ -0:25:21 1:00 IST 1916 Oct 1 2:00s
+ 0:00 GB-Eire %s 1921 Dec 6 # independence
+ 0:00 GB-Eire GMT/IST 1940 Feb 25 2:00
+ 0:00 1:00 IST 1946 Oct 6 2:00
+ 0:00 - GMT 1947 Mar 16 2:00
+ 0:00 1:00 IST 1947 Nov 2 2:00
+ 0:00 - GMT 1948 Apr 18 2:00
+ 0:00 GB-Eire GMT/IST 1968 Oct 27
+ 1:00 - IST 1971 Oct 31 2:00u
+ 0:00 GB-Eire GMT/IST 1996
+ 0:00 EU GMT/IST
+
+###############################################################################
+
+# Europe
+
+# EU rules are for the European Union, previously known as the EC, EEC,
+# Common Market, etc.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
+Rule EU 1977 only - Sep lastSun 1:00u 0 -
+Rule EU 1978 only - Oct 1 1:00u 0 -
+Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
+Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
+Rule EU 1996 max - Oct lastSun 1:00u 0 -
+# The most recent directive covers the years starting in 2002. See:
+# <a href="http://europa.eu.int/eur-lex/en/lif/dat/2000/en_300L0084.html"
+# Directive 2000/84/EC of the European Parliament and of the Council
+# of 19 January 2001 on summer-time arrangements.
+# </a>
+
+# W-Eur differs from EU only in that W-Eur uses standard time.
+Rule W-Eur 1977 1980 - Apr Sun>=1 1:00s 1:00 S
+Rule W-Eur 1977 only - Sep lastSun 1:00s 0 -
+Rule W-Eur 1978 only - Oct 1 1:00s 0 -
+Rule W-Eur 1979 1995 - Sep lastSun 1:00s 0 -
+Rule W-Eur 1981 max - Mar lastSun 1:00s 1:00 S
+Rule W-Eur 1996 max - Oct lastSun 1:00s 0 -
+
+# Older C-Eur rules are for convenience in the tables.
+# From 1977 on, C-Eur differs from EU only in that C-Eur uses standard time.
+Rule C-Eur 1916 only - Apr 30 23:00 1:00 S
+Rule C-Eur 1916 only - Oct 1 1:00 0 -
+Rule C-Eur 1917 1918 - Apr Mon>=15 2:00s 1:00 S
+Rule C-Eur 1917 1918 - Sep Mon>=15 2:00s 0 -
+Rule C-Eur 1940 only - Apr 1 2:00s 1:00 S
+Rule C-Eur 1942 only - Nov 2 2:00s 0 -
+Rule C-Eur 1943 only - Mar 29 2:00s 1:00 S
+Rule C-Eur 1943 only - Oct 4 2:00s 0 -
+Rule C-Eur 1944 only - Apr 3 2:00s 1:00 S
+# Whitman gives 1944 Oct 7; go with Shanks & Pottenger.
+Rule C-Eur 1944 only - Oct 2 2:00s 0 -
+Rule C-Eur 1977 1980 - Apr Sun>=1 2:00s 1:00 S
+Rule C-Eur 1977 only - Sep lastSun 2:00s 0 -
+Rule C-Eur 1978 only - Oct 1 2:00s 0 -
+Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
+Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S
+Rule C-Eur 1996 max - Oct lastSun 2:00s 0 -
+
+# E-Eur differs from EU only in that E-Eur switches at midnight local time.
+Rule E-Eur 1977 1980 - Apr Sun>=1 0:00 1:00 S
+Rule E-Eur 1977 only - Sep lastSun 0:00 0 -
+Rule E-Eur 1978 only - Oct 1 0:00 0 -
+Rule E-Eur 1979 1995 - Sep lastSun 0:00 0 -
+Rule E-Eur 1981 max - Mar lastSun 0:00 1:00 S
+Rule E-Eur 1996 max - Oct lastSun 0:00 0 -
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Russia 1917 only - Jul 1 23:00 1:00 MST # Moscow Summer Time
+Rule Russia 1917 only - Dec 28 0:00 0 MMT # Moscow Mean Time
+Rule Russia 1918 only - May 31 22:00 2:00 MDST # Moscow Double Summer Time
+Rule Russia 1918 only - Sep 16 1:00 1:00 MST
+Rule Russia 1919 only - May 31 23:00 2:00 MDST
+Rule Russia 1919 only - Jul 1 2:00 1:00 S
+Rule Russia 1919 only - Aug 16 0:00 0 -
+Rule Russia 1921 only - Feb 14 23:00 1:00 S
+Rule Russia 1921 only - Mar 20 23:00 2:00 M # Midsummer
+Rule Russia 1921 only - Sep 1 0:00 1:00 S
+Rule Russia 1921 only - Oct 1 0:00 0 -
+# Act No.925 of the Council of Ministers of the USSR (1980-10-24):
+Rule Russia 1981 1984 - Apr 1 0:00 1:00 S
+Rule Russia 1981 1983 - Oct 1 0:00 0 -
+# Act No.967 of the Council of Ministers of the USSR (1984-09-13), repeated in
+# Act No.227 of the Council of Ministers of the USSR (1989-03-14):
+Rule Russia 1984 1991 - Sep lastSun 2:00s 0 -
+Rule Russia 1985 1991 - Mar lastSun 2:00s 1:00 S
+#
+Rule Russia 1992 only - Mar lastSat 23:00 1:00 S
+Rule Russia 1992 only - Sep lastSat 23:00 0 -
+Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
+Rule Russia 1993 1995 - Sep lastSun 2:00s 0 -
+Rule Russia 1996 max - Oct lastSun 2:00s 0 -
+
+# These are for backward compatibility with older versions.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone WET 0:00 EU WE%sT
+Zone CET 1:00 C-Eur CE%sT
+Zone MET 1:00 C-Eur ME%sT
+Zone EET 2:00 EU EE%sT
+
+# Previous editions of this database used abbreviations like MET DST
+# for Central European Summer Time, but this didn't agree with common usage.
+
+# From Markus Kuhn (1996-07-12):
+# The official German names ... are
+#
+# Mitteleuropaeische Zeit (MEZ) = UTC+01:00
+# Mitteleuropaeische Sommerzeit (MESZ) = UTC+02:00
+#
+# as defined in the German Time Act (Gesetz ueber die Zeitbestimmung (ZeitG),
+# 1978-07-25, Bundesgesetzblatt, Jahrgang 1978, Teil I, S. 1110-1111)....
+# I wrote ... to the German Federal Physical-Technical Institution
+#
+# Physikalisch-Technische Bundesanstalt (PTB)
+# Laboratorium 4.41 "Zeiteinheit"
+# Postfach 3345
+# D-38023 Braunschweig
+# phone: +49 531 592-0
+#
+# ... I received today an answer letter from Dr. Peter Hetzel, head of the PTB
+# department for time and frequency transmission. He explained that the
+# PTB translates MEZ and MESZ into English as
+#
+# Central European Time (CET) = UTC+01:00
+# Central European Summer Time (CEST) = UTC+02:00
+
+
+# Albania
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Albania 1940 only - Jun 16 0:00 1:00 S
+Rule Albania 1942 only - Nov 2 3:00 0 -
+Rule Albania 1943 only - Mar 29 2:00 1:00 S
+Rule Albania 1943 only - Apr 10 3:00 0 -
+Rule Albania 1974 only - May 4 0:00 1:00 S
+Rule Albania 1974 only - Oct 2 0:00 0 -
+Rule Albania 1975 only - May 1 0:00 1:00 S
+Rule Albania 1975 only - Oct 2 0:00 0 -
+Rule Albania 1976 only - May 2 0:00 1:00 S
+Rule Albania 1976 only - Oct 3 0:00 0 -
+Rule Albania 1977 only - May 8 0:00 1:00 S
+Rule Albania 1977 only - Oct 2 0:00 0 -
+Rule Albania 1978 only - May 6 0:00 1:00 S
+Rule Albania 1978 only - Oct 1 0:00 0 -
+Rule Albania 1979 only - May 5 0:00 1:00 S
+Rule Albania 1979 only - Sep 30 0:00 0 -
+Rule Albania 1980 only - May 3 0:00 1:00 S
+Rule Albania 1980 only - Oct 4 0:00 0 -
+Rule Albania 1981 only - Apr 26 0:00 1:00 S
+Rule Albania 1981 only - Sep 27 0:00 0 -
+Rule Albania 1982 only - May 2 0:00 1:00 S
+Rule Albania 1982 only - Oct 3 0:00 0 -
+Rule Albania 1983 only - Apr 18 0:00 1:00 S
+Rule Albania 1983 only - Oct 1 0:00 0 -
+Rule Albania 1984 only - Apr 1 0:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Tirane 1:19:20 - LMT 1914
+ 1:00 - CET 1940 Jun 16
+ 1:00 Albania CE%sT 1984 Jul
+ 1:00 EU CE%sT
+
+# Andorra
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Andorra 0:06:04 - LMT 1901
+ 0:00 - WET 1946 Sep 30
+ 1:00 - CET 1985 Mar 31 2:00
+ 1:00 EU CE%sT
+
+# Austria
+
+# From Paul Eggert (2006-03-22): Shanks & Pottenger give 1918-06-16 and
+# 1945-11-18, but the Austrian Federal Office of Metrology and
+# Surveying (BEV) gives 1918-09-16 and for Vienna gives the "alleged"
+# date of 1945-04-12 with no time. For the 1980-04-06 transition
+# Shanks & Pottenger give 02:00, the BEV 00:00. Go with the BEV,
+# and guess 02:00 for 1945-04-12.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Austria 1920 only - Apr 5 2:00s 1:00 S
+Rule Austria 1920 only - Sep 13 2:00s 0 -
+Rule Austria 1946 only - Apr 14 2:00s 1:00 S
+Rule Austria 1946 1948 - Oct Sun>=1 2:00s 0 -
+Rule Austria 1947 only - Apr 6 2:00s 1:00 S
+Rule Austria 1948 only - Apr 18 2:00s 1:00 S
+Rule Austria 1980 only - Apr 6 0:00 1:00 S
+Rule Austria 1980 only - Sep 28 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Vienna 1:05:20 - LMT 1893 Apr
+ 1:00 C-Eur CE%sT 1920
+ 1:00 Austria CE%sT 1940 Apr 1 2:00s
+ 1:00 C-Eur CE%sT 1945 Apr 2 2:00s
+ 1:00 1:00 CEST 1945 Apr 12 2:00s
+ 1:00 - CET 1946
+ 1:00 Austria CE%sT 1981
+ 1:00 EU CE%sT
+
+# Belarus
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Minsk 1:50:16 - LMT 1880
+ 1:50 - MMT 1924 May 2 # Minsk Mean Time
+ 2:00 - EET 1930 Jun 21
+ 3:00 - MSK 1941 Jun 28
+ 1:00 C-Eur CE%sT 1944 Jul 3
+ 3:00 Russia MSK/MSD 1990
+ 3:00 - MSK 1991 Mar 31 2:00s
+ 2:00 1:00 EEST 1991 Sep 29 2:00s
+ 2:00 - EET 1992 Mar 29 0:00s
+ 2:00 1:00 EEST 1992 Sep 27 0:00s
+ 2:00 Russia EE%sT
+
+# Belgium
+#
+# From Paul Eggert (1997-07-02):
+# Entries from 1918 through 1991 are taken from:
+# Annuaire de L'Observatoire Royal de Belgique,
+# Avenue Circulaire, 3, B-1180 BRUXELLES, CLVIIe annee, 1991
+# (Imprimerie HAYEZ, s.p.r.l., Rue Fin, 4, 1080 BRUXELLES, MCMXC),
+# pp 8-9.
+# LMT before 1892 was 0:17:30, according to the official journal of Belgium:
+# Moniteur Belge, Samedi 30 Avril 1892, N.121.
+# Thanks to Pascal Delmoitie for these references.
+# The 1918 rules are listed for completeness; they apply to unoccupied Belgium.
+# Assume Brussels switched to WET in 1918 when the armistice took effect.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Belgium 1918 only - Mar 9 0:00s 1:00 S
+Rule Belgium 1918 1919 - Oct Sat>=1 23:00s 0 -
+Rule Belgium 1919 only - Mar 1 23:00s 1:00 S
+Rule Belgium 1920 only - Feb 14 23:00s 1:00 S
+Rule Belgium 1920 only - Oct 23 23:00s 0 -
+Rule Belgium 1921 only - Mar 14 23:00s 1:00 S
+Rule Belgium 1921 only - Oct 25 23:00s 0 -
+Rule Belgium 1922 only - Mar 25 23:00s 1:00 S
+Rule Belgium 1922 1927 - Oct Sat>=1 23:00s 0 -
+Rule Belgium 1923 only - Apr 21 23:00s 1:00 S
+Rule Belgium 1924 only - Mar 29 23:00s 1:00 S
+Rule Belgium 1925 only - Apr 4 23:00s 1:00 S
+# DSH writes that a royal decree of 1926-02-22 specified the Sun following 3rd
+# Sat in Apr (except if it's Easter, in which case it's one Sunday earlier),
+# to Sun following 1st Sat in Oct, and that a royal decree of 1928-09-15
+# changed the transition times to 02:00 GMT.
+Rule Belgium 1926 only - Apr 17 23:00s 1:00 S
+Rule Belgium 1927 only - Apr 9 23:00s 1:00 S
+Rule Belgium 1928 only - Apr 14 23:00s 1:00 S
+Rule Belgium 1928 1938 - Oct Sun>=2 2:00s 0 -
+Rule Belgium 1929 only - Apr 21 2:00s 1:00 S
+Rule Belgium 1930 only - Apr 13 2:00s 1:00 S
+Rule Belgium 1931 only - Apr 19 2:00s 1:00 S
+Rule Belgium 1932 only - Apr 3 2:00s 1:00 S
+Rule Belgium 1933 only - Mar 26 2:00s 1:00 S
+Rule Belgium 1934 only - Apr 8 2:00s 1:00 S
+Rule Belgium 1935 only - Mar 31 2:00s 1:00 S
+Rule Belgium 1936 only - Apr 19 2:00s 1:00 S
+Rule Belgium 1937 only - Apr 4 2:00s 1:00 S
+Rule Belgium 1938 only - Mar 27 2:00s 1:00 S
+Rule Belgium 1939 only - Apr 16 2:00s 1:00 S
+Rule Belgium 1939 only - Nov 19 2:00s 0 -
+Rule Belgium 1940 only - Feb 25 2:00s 1:00 S
+Rule Belgium 1944 only - Sep 17 2:00s 0 -
+Rule Belgium 1945 only - Apr 2 2:00s 1:00 S
+Rule Belgium 1945 only - Sep 16 2:00s 0 -
+Rule Belgium 1946 only - May 19 2:00s 1:00 S
+Rule Belgium 1946 only - Oct 7 2:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Brussels 0:17:30 - LMT 1880
+ 0:17:30 - BMT 1892 May 1 12:00 # Brussels MT
+ 0:00 - WET 1914 Nov 8
+ 1:00 - CET 1916 May 1 0:00
+ 1:00 C-Eur CE%sT 1918 Nov 11 11:00u
+ 0:00 Belgium WE%sT 1940 May 20 2:00s
+ 1:00 C-Eur CE%sT 1944 Sep 3
+ 1:00 Belgium CE%sT 1977
+ 1:00 EU CE%sT
+
+# Bosnia and Herzegovina
+# see Serbia
+
+# Bulgaria
+#
+# From Plamen Simenov via Steffen Thorsen (1999-09-09):
+# A document of Government of Bulgaria (No.94/1997) says:
+# EET --> EETDST is in 03:00 Local time in last Sunday of March ...
+# EETDST --> EET is in 04:00 Local time in last Sunday of October
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Bulg 1979 only - Mar 31 23:00 1:00 S
+Rule Bulg 1979 only - Oct 1 1:00 0 -
+Rule Bulg 1980 1982 - Apr Sat>=1 23:00 1:00 S
+Rule Bulg 1980 only - Sep 29 1:00 0 -
+Rule Bulg 1981 only - Sep 27 2:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Sofia 1:33:16 - LMT 1880
+ 1:56:56 - IMT 1894 Nov 30 # Istanbul MT?
+ 2:00 - EET 1942 Nov 2 3:00
+ 1:00 C-Eur CE%sT 1945 Apr 2 3:00
+ 2:00 - EET 1979 Mar 31 23:00
+ 2:00 Bulg EE%sT 1982 Sep 26 2:00
+ 2:00 C-Eur EE%sT 1991
+ 2:00 E-Eur EE%sT 1997
+ 2:00 EU EE%sT
+
+# Croatia
+# see Serbia
+
+# Cyprus
+# Please see the `asia' file for Asia/Nicosia.
+
+# Czech Republic
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Czech 1945 only - Apr 8 2:00s 1:00 S
+Rule Czech 1945 only - Nov 18 2:00s 0 -
+Rule Czech 1946 only - May 6 2:00s 1:00 S
+Rule Czech 1946 1949 - Oct Sun>=1 2:00s 0 -
+Rule Czech 1947 only - Apr 20 2:00s 1:00 S
+Rule Czech 1948 only - Apr 18 2:00s 1:00 S
+Rule Czech 1949 only - Apr 9 2:00s 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Prague 0:57:44 - LMT 1850
+ 0:57:44 - PMT 1891 Oct # Prague Mean Time
+ 1:00 C-Eur CE%sT 1944 Sep 17 2:00s
+ 1:00 Czech CE%sT 1979
+ 1:00 EU CE%sT
+
+# Denmark, Faroe Islands, and Greenland
+
+# From Jesper Norgaard Welen (2005-04-26):
+# http://www.hum.aau.dk/~poe/tid/tine/DanskTid.htm says that the law
+# [introducing standard time] was in effect from 1894-01-01....
+# The page http://www.retsinfo.dk/_GETDOCI_/ACCN/A18930008330-REGL
+# confirms this, and states that the law was put forth 1893-03-29.
+#
+# The EU treaty with effect from 1973:
+# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19722110030-REGL
+#
+# This provoked a new law from 1974 to make possible summer time changes
+# in subsequenet decrees with the law
+# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19740022330-REGL
+#
+# It seems however that no decree was set forward until 1980. I have
+# not found any decree, but in another related law, the effecting DST
+# changes are stated explicitly to be from 1980-04-06 at 02:00 to
+# 1980-09-28 at 02:00. If this is true, this differs slightly from
+# the EU rule in that DST runs to 02:00, not 03:00. We don't know
+# when Denmark began using the EU rule correctly, but we have only
+# confirmation of the 1980-time, so I presume it was correct in 1981:
+# The law is about the management of the extra hour, concerning
+# working hours reported and effect on obligatory-rest rules (which
+# was suspended on that night):
+# http://www.retsinfo.dk/_GETDOCI_/ACCN/C19801120554-REGL
+
+# From Jesper Norgaard Welen (2005-06-11):
+# The Herning Folkeblad (1980-09-26) reported that the night between
+# Saturday and Sunday the clock is set back from three to two.
+
+# From Paul Eggert (2005-06-11):
+# Hence the "02:00" of the 1980 law refers to standard time, not
+# wall-clock time, and so the EU rules were in effect in 1980.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Denmark 1916 only - May 14 23:00 1:00 S
+Rule Denmark 1916 only - Sep 30 23:00 0 -
+Rule Denmark 1940 only - May 15 0:00 1:00 S
+Rule Denmark 1945 only - Apr 2 2:00s 1:00 S
+Rule Denmark 1945 only - Aug 15 2:00s 0 -
+Rule Denmark 1946 only - May 1 2:00s 1:00 S
+Rule Denmark 1946 only - Sep 1 2:00s 0 -
+Rule Denmark 1947 only - May 4 2:00s 1:00 S
+Rule Denmark 1947 only - Aug 10 2:00s 0 -
+Rule Denmark 1948 only - May 9 2:00s 1:00 S
+Rule Denmark 1948 only - Aug 8 2:00s 0 -
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Copenhagen 0:50:20 - LMT 1890
+ 0:50:20 - CMT 1894 Jan 1 # Copenhagen MT
+ 1:00 Denmark CE%sT 1942 Nov 2 2:00s
+ 1:00 C-Eur CE%sT 1945 Apr 2 2:00
+ 1:00 Denmark CE%sT 1980
+ 1:00 EU CE%sT
+Zone Atlantic/Faroe -0:27:04 - LMT 1908 Jan 11 # Torshavn
+ 0:00 - WET 1981
+ 0:00 EU WE%sT
+#
+# From Paul Eggert (2004-10-31):
+# During World War II, Germany maintained secret manned weather stations in
+# East Greenland and Franz Josef Land, but we don't know their time zones.
+# My source for this is Wilhelm Dege's book mentioned under Svalbard.
+#
+# From Paul Eggert (2006-03-22):
+# Greenland joined the EU as part of Denmark, obtained home rule on 1979-05-01,
+# and left the EU on 1985-02-01. It therefore should have been using EU
+# rules at least through 1984. Shanks & Pottenger say Scoresbysund and Godthab
+# used C-Eur rules after 1980, but IATA SSIM (1991/1996) says they use EU
+# rules since at least 1991. Assume EU rules since 1980.
+
+# From Gwillin Law (2001-06-06), citing
+# <http://www.statkart.no/efs/efshefter/2001/efs5-2001.pdf> (2001-03-15),
+# and with translations corrected by Steffen Thorsen:
+#
+# Greenland has four local times, and the relation to UTC
+# is according to the following time line:
+#
+# The military zone near Thule UTC-4
+# Standard Greenland time UTC-3
+# Scoresbysund UTC-1
+# Danmarkshavn UTC
+#
+# In the military area near Thule and in Danmarkshavn DST will not be
+# introduced.
+
+# From Rives McDow (2001-11-01):
+#
+# I correspond regularly with the Dansk Polarcenter, and wrote them at
+# the time to clarify the situation in Thule. Unfortunately, I have
+# not heard back from them regarding my recent letter. [But I have
+# info from earlier correspondence.]
+#
+# According to the center, a very small local time zone around Thule
+# Air Base keeps the time according to UTC-4, implementing daylight
+# savings using North America rules, changing the time at 02:00 local time....
+#
+# The east coast of Greenland north of the community of Scoresbysund
+# uses UTC in the same way as in Iceland, year round, with no dst.
+# There are just a few stations on this coast, including the
+# Danmarkshavn ICAO weather station mentioned in your September 29th
+# email. The other stations are two sledge patrol stations in
+# Mestersvig and Daneborg, the air force base at Station Nord, and the
+# DPC research station at Zackenberg.
+#
+# Scoresbysund and two small villages nearby keep time UTC-1 and use
+# the same daylight savings time period as in West Greenland (Godthab).
+#
+# The rest of Greenland, including Godthab (this area, although it
+# includes central Greenland, is known as west Greenland), keeps time
+# UTC-3, with daylight savings methods according to European rules.
+#
+# It is common procedure to use UTC 0 in the wilderness of East and
+# North Greenland, because it is mainly Icelandic aircraft operators
+# maintaining traffic in these areas. However, the official status of
+# this area is that it sticks with Godthab time. This area might be
+# considered a dual time zone in some respects because of this.
+
+# From Rives McDow (2001-11-19):
+# I heard back from someone stationed at Thule; the time change took place
+# there at 2:00 AM.
+
+# From Paul Eggert (2006-03-22):
+# From 1997 on the CIA map shows Danmarkshavn on GMT;
+# the 1995 map as like Godthab.
+# For lack of better info, assume they were like Godthab before 1996.
+# startkart.no says Thule does not observe DST, but this is clearly an error,
+# so go with Shanks & Pottenger for Thule transitions until this year.
+# For 2007 on assume Thule will stay in sync with US DST rules.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Thule 1991 1992 - Mar lastSun 2:00 1:00 D
+Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
+Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
+Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
+Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
+Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28
+ -3:00 - WGT 1980 Apr 6 2:00
+ -3:00 EU WG%sT 1996
+ 0:00 - GMT
+Zone America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 # Ittoqqortoormiit
+ -2:00 - CGT 1980 Apr 6 2:00
+ -2:00 C-Eur CG%sT 1981 Mar 29
+ -1:00 EU EG%sT
+Zone America/Godthab -3:26:56 - LMT 1916 Jul 28 # Nuuk
+ -3:00 - WGT 1980 Apr 6 2:00
+ -3:00 EU WG%sT
+Zone America/Thule -4:35:08 - LMT 1916 Jul 28 # Pituffik air base
+ -4:00 Thule A%sT
+
+# Estonia
+# From Peter Ilieve (1994-10-15):
+# A relative in Tallinn confirms the accuracy of the data for 1989 onwards
+# [through 1994] and gives the legal authority for it,
+# a regulation of the Government of Estonia, No. 111 of 1989....
+#
+# From Peter Ilieve (1996-10-28):
+# [IATA SSIM (1992/1996) claims that the Baltic republics switch at 01:00s,
+# but a relative confirms that Estonia still switches at 02:00s, writing:]
+# ``I do not [know] exactly but there are some little different
+# (confusing) rules for International Air and Railway Transport Schedules
+# conversion in Sunday connected with end of summer time in Estonia....
+# A discussion is running about the summer time efficiency and effect on
+# human physiology. It seems that Estonia maybe will not change to
+# summer time next spring.''
+
+# From Peter Ilieve (1998-11-04), heavily edited:
+# <a href="http://trip.rk.ee/cgi-bin/thw?${BASE}=akt&${OOHTML}=rtd&TA=1998&TO=1&AN=1390">
+# The 1998-09-22 Estonian time law
+# </a>
+# refers to the Eighth Directive and cites the association agreement between
+# the EU and Estonia, ratified by the Estonian law (RT II 1995, 22--27, 120).
+#
+# I also asked [my relative] whether they use any standard abbreviation
+# for their standard and summer times. He says no, they use "suveaeg"
+# (summer time) and "talveaeg" (winter time).
+
+# From <a href="http://www.baltictimes.com/">The Baltic Times</a> (1999-09-09)
+# via Steffen Thorsen:
+# This year will mark the last time Estonia shifts to summer time,
+# a council of the ruling coalition announced Sept. 6....
+# But what this could mean for Estonia's chances of joining the European
+# Union are still unclear. In 1994, the EU declared summer time compulsory
+# for all member states until 2001. Brussels has yet to decide what to do
+# after that.
+
+# From Mart Oruaas (2000-01-29):
+# Regulation no. 301 (1999-10-12) obsoletes previous regulation
+# no. 206 (1998-09-22) and thus sticks Estonia to +02:00 GMT for all
+# the year round. The regulation is effective 1999-11-01.
+
+# From Toomas Soome (2002-02-21):
+# The Estonian government has changed once again timezone politics.
+# Now we are using again EU rules.
+#
+# From Urmet Jaanes (2002-03-28):
+# The legislative reference is Government decree No. 84 on 2002-02-21.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Tallinn 1:39:00 - LMT 1880
+ 1:39:00 - TMT 1918 Feb # Tallinn Mean Time
+ 1:00 C-Eur CE%sT 1919 Jul
+ 1:39:00 - TMT 1921 May
+ 2:00 - EET 1940 Aug 6
+ 3:00 - MSK 1941 Sep 15
+ 1:00 C-Eur CE%sT 1944 Sep 22
+ 3:00 Russia MSK/MSD 1989 Mar 26 2:00s
+ 2:00 1:00 EEST 1989 Sep 24 2:00s
+ 2:00 C-Eur EE%sT 1998 Sep 22
+ 2:00 EU EE%sT 1999 Nov 1
+ 2:00 - EET 2002 Feb 21
+ 2:00 EU EE%sT
+
+# Finland
+#
+# From Hannu Strang (1994-09-25 06:03:37 UTC):
+# Well, here in Helsinki we're just changing from summer time to regular one,
+# and it's supposed to change at 4am...
+#
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger say Finland has switched at 02:00 standard time
+# since 1981. Go with Strang instead.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Finland 1942 only - Apr 3 0:00 1:00 S
+Rule Finland 1942 only - Oct 3 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Helsinki 1:39:52 - LMT 1878 May 31
+ 1:39:52 - HMT 1921 May # Helsinki Mean Time
+ 2:00 Finland EE%sT 1981 Mar 29 2:00
+ 2:00 EU EE%sT
+
+# Aaland Is
+Link Europe/Helsinki Europe/Mariehamn
+
+
+# France
+
+# From Ciro Discepolo (2000-12-20):
+#
+# Henri Le Corre, Regimes Horaires pour le monde entier, Editions
+# Traditionnelles - Paris 2 books, 1993
+#
+# Gabriel, Traite de l'heure dans le monde, Guy Tredaniel editeur,
+# Paris, 1991
+#
+# Francoise Gauquelin, Problemes de l'heure resolus en astrologie,
+# Guy tredaniel, Paris 1987
+
+
+#
+# Shank & Pottenger seem to use `24:00' ambiguously; resolve it with Whitman.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule France 1916 only - Jun 14 23:00s 1:00 S
+Rule France 1916 1919 - Oct Sun>=1 23:00s 0 -
+Rule France 1917 only - Mar 24 23:00s 1:00 S
+Rule France 1918 only - Mar 9 23:00s 1:00 S
+Rule France 1919 only - Mar 1 23:00s 1:00 S
+Rule France 1920 only - Feb 14 23:00s 1:00 S
+Rule France 1920 only - Oct 23 23:00s 0 -
+Rule France 1921 only - Mar 14 23:00s 1:00 S
+Rule France 1921 only - Oct 25 23:00s 0 -
+Rule France 1922 only - Mar 25 23:00s 1:00 S
+# DSH writes that a law of 1923-05-24 specified 3rd Sat in Apr at 23:00 to 1st
+# Sat in Oct at 24:00; and that in 1930, because of Easter, the transitions
+# were Apr 12 and Oct 5. Go with Shanks & Pottenger.
+Rule France 1922 1938 - Oct Sat>=1 23:00s 0 -
+Rule France 1923 only - May 26 23:00s 1:00 S
+Rule France 1924 only - Mar 29 23:00s 1:00 S
+Rule France 1925 only - Apr 4 23:00s 1:00 S
+Rule France 1926 only - Apr 17 23:00s 1:00 S
+Rule France 1927 only - Apr 9 23:00s 1:00 S
+Rule France 1928 only - Apr 14 23:00s 1:00 S
+Rule France 1929 only - Apr 20 23:00s 1:00 S
+Rule France 1930 only - Apr 12 23:00s 1:00 S
+Rule France 1931 only - Apr 18 23:00s 1:00 S
+Rule France 1932 only - Apr 2 23:00s 1:00 S
+Rule France 1933 only - Mar 25 23:00s 1:00 S
+Rule France 1934 only - Apr 7 23:00s 1:00 S
+Rule France 1935 only - Mar 30 23:00s 1:00 S
+Rule France 1936 only - Apr 18 23:00s 1:00 S
+Rule France 1937 only - Apr 3 23:00s 1:00 S
+Rule France 1938 only - Mar 26 23:00s 1:00 S
+Rule France 1939 only - Apr 15 23:00s 1:00 S
+Rule France 1939 only - Nov 18 23:00s 0 -
+Rule France 1940 only - Feb 25 2:00 1:00 S
+# The French rules for 1941-1944 were not used in Paris, but Shanks & Pottenger
+# write that they were used in Monaco and in many French locations.
+# Le Corre writes that the upper limit of the free zone was Arneguy, Orthez,
+# Mont-de-Marsan, Bazas, Langon, Lamotte-Montravel, Marouil, La
+# Rochefoucault, Champagne-Mouton, La Roche-Posay, La Haye-Decartes,
+# Loches, Montrichard, Vierzon, Bourges, Moulins, Digoin,
+# Paray-le-Monial, Montceau-les-Mines, Chalons-sur-Saone, Arbois,
+# Dole, Morez, St-Claude, and Collognes (Haute-Savioe).
+Rule France 1941 only - May 5 0:00 2:00 M # Midsummer
+# Shanks & Pottenger say this transition occurred at Oct 6 1:00,
+# but go with Denis Excoffier (1997-12-12),
+# who quotes the Ephemerides Astronomiques for 1998 from Bureau des Longitudes
+# as saying 5/10/41 22hUT.
+Rule France 1941 only - Oct 6 0:00 1:00 S
+Rule France 1942 only - Mar 9 0:00 2:00 M
+Rule France 1942 only - Nov 2 3:00 1:00 S
+Rule France 1943 only - Mar 29 2:00 2:00 M
+Rule France 1943 only - Oct 4 3:00 1:00 S
+Rule France 1944 only - Apr 3 2:00 2:00 M
+Rule France 1944 only - Oct 8 1:00 1:00 S
+Rule France 1945 only - Apr 2 2:00 2:00 M
+Rule France 1945 only - Sep 16 3:00 0 -
+# Shanks & Pottenger give Mar 28 2:00 and Sep 26 3:00;
+# go with Excoffier's 28/3/76 0hUT and 25/9/76 23hUT.
+Rule France 1976 only - Mar 28 1:00 1:00 S
+Rule France 1976 only - Sep 26 1:00 0 -
+# Shanks & Pottenger give 0:09:20 for Paris Mean Time, and Whitman 0:09:05,
+# but Howse quotes the actual French legislation as saying 0:09:21.
+# Go with Howse. Howse writes that the time in France was officially based
+# on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
+ 0:09:21 - PMT 1911 Mar 11 0:01 # Paris MT
+# Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre.
+ 0:00 France WE%sT 1940 Jun 14 23:00
+# Le Corre says Paris stuck with occupied-France time after the liberation;
+# go with Shanks & Pottenger.
+ 1:00 C-Eur CE%sT 1944 Aug 25
+ 0:00 France WE%sT 1945 Sep 16 3:00
+ 1:00 France CE%sT 1977
+ 1:00 EU CE%sT
+
+# Germany
+
+# From Markus Kuhn (1998-09-29):
+# The German time zone web site by the Physikalisch-Technische
+# Bundesanstalt contains DST information back to 1916.
+# [See tz-link.htm for the URL.]
+
+# From Joerg Schilling (2002-10-23):
+# In 1945, Berlin was switched to Moscow Summer time (GMT+4) by <a
+# href="http://www.dhm.de/lemo/html/biografien/BersarinNikolai/">
+# General [Nikolai] Bersarin</a>.
+
+# From Paul Eggert (2003-03-08):
+# <a href="http://www.parlament-berlin.de/pds-fraktion.nsf/727459127c8b66ee8525662300459099/defc77cb784f180ac1256c2b0030274b/$FILE/bersarint.pdf">
+# says that Bersarin issued an order to use Moscow time on May 20.
+# However, Moscow did not observe daylight saving in 1945, so
+# this was equivalent to CEMT (GMT+3), not GMT+4.
+
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Germany 1945 only - Apr 2 2:00s 1:00 S
+Rule Germany 1945 only - May 24 2:00 2:00 M # Midsummer
+Rule Germany 1945 only - Sep 24 3:00 1:00 S
+Rule Germany 1945 only - Nov 18 2:00s 0 -
+Rule Germany 1946 only - Apr 14 2:00s 1:00 S
+Rule Germany 1946 only - Oct 7 2:00s 0 -
+Rule Germany 1947 1949 - Oct Sun>=1 2:00s 0 -
+Rule Germany 1947 only - Apr 6 2:00s 1:00 S
+Rule Germany 1947 only - May 11 2:00s 2:00 M
+Rule Germany 1947 only - Jun 29 3:00 1:00 S
+Rule Germany 1948 only - Apr 18 2:00s 1:00 S
+Rule Germany 1949 only - Apr 10 2:00s 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Berlin 0:53:28 - LMT 1893 Apr
+ 1:00 C-Eur CE%sT 1945 Apr 2 2:00
+ 1:00 Germany CE%sT 1980
+ 1:00 EU CE%sT
+
+# Georgia
+# Please see the "asia" file for Asia/Tbilisi.
+# Herodotus (Histories, IV.45) says Georgia north of the Phasis (now Rioni)
+# is in Europe. Our reference location Tbilisi is in the Asian part.
+
+# Gibraltar
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Gibraltar -0:21:24 - LMT 1880 Aug 2 0:00s
+ 0:00 GB-Eire %s 1957 Apr 14 2:00
+ 1:00 - CET 1982
+ 1:00 EU CE%sT
+
+# Greece
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# Whitman gives 1932 Jul 5 - Nov 1; go with Shanks & Pottenger.
+Rule Greece 1932 only - Jul 7 0:00 1:00 S
+Rule Greece 1932 only - Sep 1 0:00 0 -
+# Whitman gives 1941 Apr 25 - ?; go with Shanks & Pottenger.
+Rule Greece 1941 only - Apr 7 0:00 1:00 S
+# Whitman gives 1942 Feb 2 - ?; go with Shanks & Pottenger.
+Rule Greece 1942 only - Nov 2 3:00 0 -
+Rule Greece 1943 only - Mar 30 0:00 1:00 S
+Rule Greece 1943 only - Oct 4 0:00 0 -
+# Whitman gives 1944 Oct 3 - Oct 31; go with Shanks & Pottenger.
+Rule Greece 1952 only - Jul 1 0:00 1:00 S
+Rule Greece 1952 only - Nov 2 0:00 0 -
+Rule Greece 1975 only - Apr 12 0:00s 1:00 S
+Rule Greece 1975 only - Nov 26 0:00s 0 -
+Rule Greece 1976 only - Apr 11 2:00s 1:00 S
+Rule Greece 1976 only - Oct 10 2:00s 0 -
+Rule Greece 1977 1978 - Apr Sun>=1 2:00s 1:00 S
+Rule Greece 1977 only - Sep 26 2:00s 0 -
+Rule Greece 1978 only - Sep 24 4:00 0 -
+Rule Greece 1979 only - Apr 1 9:00 1:00 S
+Rule Greece 1979 only - Sep 29 2:00 0 -
+Rule Greece 1980 only - Apr 1 0:00 1:00 S
+Rule Greece 1980 only - Sep 28 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Athens 1:34:52 - LMT 1895 Sep 14
+ 1:34:52 - AMT 1916 Jul 28 0:01 # Athens MT
+ 2:00 Greece EE%sT 1941 Apr 30
+ 1:00 Greece CE%sT 1944 Apr 4
+ 2:00 Greece EE%sT 1981
+ # Shanks & Pottenger say it switched to C-Eur in 1981;
+ # go with EU instead, since Greece joined it on Jan 1.
+ 2:00 EU EE%sT
+
+# Hungary
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Hungary 1918 only - Apr 1 3:00 1:00 S
+Rule Hungary 1918 only - Sep 29 3:00 0 -
+Rule Hungary 1919 only - Apr 15 3:00 1:00 S
+Rule Hungary 1919 only - Sep 15 3:00 0 -
+Rule Hungary 1920 only - Apr 5 3:00 1:00 S
+Rule Hungary 1920 only - Sep 30 3:00 0 -
+Rule Hungary 1945 only - May 1 23:00 1:00 S
+Rule Hungary 1945 only - Nov 3 0:00 0 -
+Rule Hungary 1946 only - Mar 31 2:00s 1:00 S
+Rule Hungary 1946 1949 - Oct Sun>=1 2:00s 0 -
+Rule Hungary 1947 1949 - Apr Sun>=4 2:00s 1:00 S
+Rule Hungary 1950 only - Apr 17 2:00s 1:00 S
+Rule Hungary 1950 only - Oct 23 2:00s 0 -
+Rule Hungary 1954 1955 - May 23 0:00 1:00 S
+Rule Hungary 1954 1955 - Oct 3 0:00 0 -
+Rule Hungary 1956 only - Jun Sun>=1 0:00 1:00 S
+Rule Hungary 1956 only - Sep lastSun 0:00 0 -
+Rule Hungary 1957 only - Jun Sun>=1 1:00 1:00 S
+Rule Hungary 1957 only - Sep lastSun 3:00 0 -
+Rule Hungary 1980 only - Apr 6 1:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Budapest 1:16:20 - LMT 1890 Oct
+ 1:00 C-Eur CE%sT 1918
+ 1:00 Hungary CE%sT 1941 Apr 6 2:00
+ 1:00 C-Eur CE%sT 1945 May 1 23:00
+ 1:00 Hungary CE%sT 1980 Sep 28 2:00s
+ 1:00 EU CE%sT
+
+# Iceland
+#
+# From Adam David (1993-11-06):
+# The name of the timezone in Iceland for system / mail / news purposes is GMT.
+#
+# (1993-12-05):
+# This material is paraphrased from the 1988 edition of the University of
+# Iceland Almanak.
+#
+# From January 1st, 1908 the whole of Iceland was standardised at 1 hour
+# behind GMT. Previously, local mean solar time was used in different parts
+# of Iceland, the almanak had been based on Reykjavik mean solar time which
+# was 1 hour and 28 minutes behind GMT.
+#
+# "first day of winter" referred to [below] means the first day of the 26 weeks
+# of winter, according to the old icelandic calendar that dates back to the
+# time the norsemen first settled Iceland. The first day of winter is always
+# Saturday, but is not dependent on the Julian or Gregorian calendars.
+#
+# (1993-12-10):
+# I have a reference from the Oxford Icelandic-English dictionary for the
+# beginning of winter, which ties it to the ecclesiastical calendar (and thus
+# to the julian/gregorian calendar) over the period in question.
+# the winter begins on the Saturday next before St. Luke's day
+# (old style), or on St. Luke's day, if a Saturday.
+# St. Luke's day ought to be traceable from ecclesiastical sources. "old style"
+# might be a reference to the Julian calendar as opposed to Gregorian, or it
+# might mean something else (???).
+#
+# From Paul Eggert (2006-03-22):
+# The Iceland Almanak, Shanks & Pottenger, and Whitman disagree on many points.
+# We go with the Almanak, except for one claim from Shanks & Pottenger, namely
+# that Reykavik was 21W57 from 1837 to 1908, local mean time before that.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Iceland 1917 1918 - Feb 19 23:00 1:00 S
+Rule Iceland 1917 only - Oct 21 1:00 0 -
+Rule Iceland 1918 only - Nov 16 1:00 0 -
+Rule Iceland 1939 only - Apr 29 23:00 1:00 S
+Rule Iceland 1939 only - Nov 29 2:00 0 -
+Rule Iceland 1940 only - Feb 25 2:00 1:00 S
+Rule Iceland 1940 only - Nov 3 2:00 0 -
+Rule Iceland 1941 only - Mar 2 1:00s 1:00 S
+Rule Iceland 1941 only - Nov 2 1:00s 0 -
+Rule Iceland 1942 only - Mar 8 1:00s 1:00 S
+Rule Iceland 1942 only - Oct 25 1:00s 0 -
+# 1943-1946 - first Sunday in March until first Sunday in winter
+Rule Iceland 1943 1946 - Mar Sun>=1 1:00s 1:00 S
+Rule Iceland 1943 1948 - Oct Sun>=22 1:00s 0 -
+# 1947-1967 - first Sunday in April until first Sunday in winter
+Rule Iceland 1947 1967 - Apr Sun>=1 1:00s 1:00 S
+# 1949 Oct transition delayed by 1 week
+Rule Iceland 1949 only - Oct 30 1:00s 0 -
+Rule Iceland 1950 1966 - Oct Sun>=22 1:00s 0 -
+Rule Iceland 1967 only - Oct 29 1:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Atlantic/Reykjavik -1:27:24 - LMT 1837
+ -1:27:48 - RMT 1908 # Reykjavik Mean Time?
+ -1:00 Iceland IS%sT 1968 Apr 7 1:00s
+ 0:00 - GMT
+
+# Italy
+#
+# From Paul Eggert (2001-03-06):
+# Sicily and Sardinia each had their own time zones from 1866 to 1893,
+# called Palermo Time (+00:53:28) and Cagliari Time (+00:36:32).
+# During World War II, German-controlled Italy used German time.
+# But these events all occurred before the 1970 cutoff,
+# so record only the time in Rome.
+#
+# From Paul Eggert (2006-03-22):
+# For Italian DST we have three sources: Shanks & Pottenger, Whitman, and
+# F. Pollastri
+# <a href="http://toi.iriti.cnr.it/uk/ienitlt.html">
+# Day-light Saving Time in Italy (2006-02-03)
+# </a>
+# (`FP' below), taken from an Italian National Electrotechnical Institute
+# publication. When the three sources disagree, guess who's right, as follows:
+#
+# year FP Shanks&P. (S) Whitman (W) Go with:
+# 1916 06-03 06-03 24:00 06-03 00:00 FP & W
+# 09-30 09-30 24:00 09-30 01:00 FP; guess 24:00s
+# 1917 04-01 03-31 24:00 03-31 00:00 FP & S
+# 09-30 09-29 24:00 09-30 01:00 FP & W
+# 1918 03-09 03-09 24:00 03-09 00:00 FP & S
+# 10-06 10-05 24:00 10-06 01:00 FP & W
+# 1919 03-01 03-01 24:00 03-01 00:00 FP & S
+# 10-04 10-04 24:00 10-04 01:00 FP; guess 24:00s
+# 1920 03-20 03-20 24:00 03-20 00:00 FP & S
+# 09-18 09-18 24:00 10-01 01:00 FP; guess 24:00s
+# 1944 04-02 04-03 02:00 S (see C-Eur)
+# 09-16 10-02 03:00 FP; guess 24:00s
+# 1945 09-14 09-16 24:00 FP; guess 24:00s
+# 1970 05-21 05-31 00:00 S
+# 09-20 09-27 00:00 S
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Italy 1916 only - Jun 3 0:00s 1:00 S
+Rule Italy 1916 only - Oct 1 0:00s 0 -
+Rule Italy 1917 only - Apr 1 0:00s 1:00 S
+Rule Italy 1917 only - Sep 30 0:00s 0 -
+Rule Italy 1918 only - Mar 10 0:00s 1:00 S
+Rule Italy 1918 1919 - Oct Sun>=1 0:00s 0 -
+Rule Italy 1919 only - Mar 2 0:00s 1:00 S
+Rule Italy 1920 only - Mar 21 0:00s 1:00 S
+Rule Italy 1920 only - Sep 19 0:00s 0 -
+Rule Italy 1940 only - Jun 15 0:00s 1:00 S
+Rule Italy 1944 only - Sep 17 0:00s 0 -
+Rule Italy 1945 only - Apr 2 2:00 1:00 S
+Rule Italy 1945 only - Sep 15 0:00s 0 -
+Rule Italy 1946 only - Mar 17 2:00s 1:00 S
+Rule Italy 1946 only - Oct 6 2:00s 0 -
+Rule Italy 1947 only - Mar 16 0:00s 1:00 S
+Rule Italy 1947 only - Oct 5 0:00s 0 -
+Rule Italy 1948 only - Feb 29 2:00s 1:00 S
+Rule Italy 1948 only - Oct 3 2:00s 0 -
+Rule Italy 1966 1968 - May Sun>=22 0:00 1:00 S
+Rule Italy 1966 1969 - Sep Sun>=22 0:00 0 -
+Rule Italy 1969 only - Jun 1 0:00 1:00 S
+Rule Italy 1970 only - May 31 0:00 1:00 S
+Rule Italy 1970 only - Sep lastSun 0:00 0 -
+Rule Italy 1971 1972 - May Sun>=22 0:00 1:00 S
+Rule Italy 1971 only - Sep lastSun 1:00 0 -
+Rule Italy 1972 only - Oct 1 0:00 0 -
+Rule Italy 1973 only - Jun 3 0:00 1:00 S
+Rule Italy 1973 1974 - Sep lastSun 0:00 0 -
+Rule Italy 1974 only - May 26 0:00 1:00 S
+Rule Italy 1975 only - Jun 1 0:00s 1:00 S
+Rule Italy 1975 1977 - Sep lastSun 0:00s 0 -
+Rule Italy 1976 only - May 30 0:00s 1:00 S
+Rule Italy 1977 1979 - May Sun>=22 0:00s 1:00 S
+Rule Italy 1978 only - Oct 1 0:00s 0 -
+Rule Italy 1979 only - Sep 30 0:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Rome 0:49:56 - LMT 1866 Sep 22
+ 0:49:56 - RMT 1893 Nov 1 0:00s # Rome Mean
+ 1:00 Italy CE%sT 1942 Nov 2 2:00s
+ 1:00 C-Eur CE%sT 1944 Jul
+ 1:00 Italy CE%sT 1980
+ 1:00 EU CE%sT
+
+Link Europe/Rome Europe/Vatican
+Link Europe/Rome Europe/San_Marino
+
+# Latvia
+
+# From Liene Kanepe (1998-09-17):
+
+# I asked about this matter Scientific Secretary of the Institute of Astronomy
+# of The University of Latvia Dr. paed Mr. Ilgonis Vilks. I also searched the
+# correct data in juridical acts and I found some juridical documents about
+# changes in the counting of time in Latvia from 1981....
+#
+# Act No.35 of the Council of Ministers of Latvian SSR of 1981-01-22 ...
+# according to the Act No.925 of the Council of Ministers of USSR of 1980-10-24
+# ...: all year round the time of 2nd time zone + 1 hour, in addition turning
+# the hands of the clock 1 hour forward on 1 April at 00:00 (GMT 31 March 21:00)
+# and 1 hour backward on the 1 October at 00:00 (GMT 30 September 20:00).
+#
+# Act No.592 of the Council of Ministers of Latvian SSR of 1984-09-24 ...
+# according to the Act No.967 of the Council of Ministers of USSR of 1984-09-13
+# ...: all year round the time of 2nd time zone + 1 hour, in addition turning
+# the hands of the clock 1 hour forward on the last Sunday of March at 02:00
+# (GMT 23:00 on the previous day) and 1 hour backward on the last Sunday of
+# September at 03:00 (GMT 23:00 on the previous day).
+#
+# Act No.81 of the Council of Ministers of Latvian SSR of 1989-03-22 ...
+# according to the Act No.227 of the Council of Ministers of USSR of 1989-03-14
+# ...: since the last Sunday of March 1989 in Lithuanian SSR, Latvian SSR,
+# Estonian SSR and Kaliningrad region of Russian Federation all year round the
+# time of 2nd time zone (Moscow time minus one hour). On the territory of Latvia
+# transition to summer time is performed on the last Sunday of March at 02:00
+# (GMT 00:00), turning the hands of the clock 1 hour forward. The end of
+# daylight saving time is performed on the last Sunday of September at 03:00
+# (GMT 00:00), turning the hands of the clock 1 hour backward. Exception is
+# 1989-03-26, when we must not turn the hands of the clock....
+#
+# The Regulations of the Cabinet of Ministers of the Republic of Latvia of
+# 1997-01-21 on transition to Summer time ... established the same order of
+# daylight savings time settings as in the States of the European Union.
+
+# From Andrei Ivanov (2000-03-06):
+# This year Latvia will not switch to Daylight Savings Time (as specified in
+# <a href="http://www.lv-laiks.lv/wwwraksti/2000/071072/vd4.htm">
+# The Regulations of the Cabinet of Ministers of the Rep. of Latvia of
+# 29-Feb-2000 (#79)</a>, in Latvian for subscribers only).
+
+# <a href="http://www.rferl.org/newsline/2001/01/3-CEE/cee-030101.html">
+# From RFE/RL Newsline (2001-01-03), noted after a heads-up by Rives McDow:
+# </a>
+# The Latvian government on 2 January decided that the country will
+# institute daylight-saving time this spring, LETA reported.
+# Last February the three Baltic states decided not to turn back their
+# clocks one hour in the spring....
+# Minister of Economy Aigars Kalvitis noted that Latvia had too few
+# daylight hours and thus decided to comply with a draft European
+# Commission directive that provides for instituting daylight-saving
+# time in EU countries between 2002 and 2006. The Latvian government
+# urged Lithuania and Estonia to adopt a similar time policy, but it
+# appears that they will not do so....
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Latvia 1989 1996 - Mar lastSun 2:00s 1:00 S
+Rule Latvia 1989 1996 - Sep lastSun 2:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Riga 1:36:24 - LMT 1880
+ 1:36:24 - RMT 1918 Apr 15 2:00 #Riga Mean Time
+ 1:36:24 1:00 LST 1918 Sep 16 3:00 #Latvian Summer
+ 1:36:24 - RMT 1919 Apr 1 2:00
+ 1:36:24 1:00 LST 1919 May 22 3:00
+ 1:36:24 - RMT 1926 May 11
+ 2:00 - EET 1940 Aug 5
+ 3:00 - MSK 1941 Jul
+ 1:00 C-Eur CE%sT 1944 Oct 13
+ 3:00 Russia MSK/MSD 1989 Mar lastSun 2:00s
+ 2:00 1:00 EEST 1989 Sep lastSun 2:00s
+ 2:00 Latvia EE%sT 1997 Jan 21
+ 2:00 EU EE%sT 2000 Feb 29
+ 2:00 - EET 2001 Jan 2
+ 2:00 EU EE%sT
+
+# Liechtenstein
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Vaduz 0:38:04 - LMT 1894 Jun
+ 1:00 - CET 1981
+ 1:00 EU CE%sT
+
+# Lithuania
+
+# From Paul Eggert (1996-11-22):
+# IATA SSIM (1992/1996) says Lithuania uses W-Eur rules, but since it is
+# known to be wrong about Estonia and Latvia, assume it's wrong here too.
+
+# From Marius Gedminas (1998-08-07):
+# I would like to inform that in this year Lithuanian time zone
+# (Europe/Vilnius) was changed.
+
+# From <a href="http://www.elta.lt/">ELTA</a> No. 972 (2582) (1999-09-29),
+# via Steffen Thorsen:
+# Lithuania has shifted back to the second time zone (GMT plus two hours)
+# to be valid here starting from October 31,
+# as decided by the national government on Wednesday....
+# The Lithuanian government also announced plans to consider a
+# motion to give up shifting to summer time in spring, as it was
+# already done by Estonia.
+
+# From the <a href="http://www.tourism.lt/informa/ff.htm">
+# Fact File, Lithuanian State Department of Tourism
+# </a> (2000-03-27): Local time is GMT+2 hours ..., no daylight saving.
+
+# From a user via Klaus Marten (2003-02-07):
+# As a candidate for membership of the European Union, Lithuania will
+# observe Summer Time in 2003, changing its clocks at the times laid
+# down in EU Directive 2000/84 of 19.I.01 (i.e. at the same times as its
+# neighbour Latvia). The text of the Lithuanian government Order of
+# 7.XI.02 to this effect can be found at
+# http://www.lrvk.lt/nut/11/n1749.htm
+
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Vilnius 1:41:16 - LMT 1880
+ 1:24:00 - WMT 1917 # Warsaw Mean Time
+ 1:35:36 - KMT 1919 Oct 10 # Kaunas Mean Time
+ 1:00 - CET 1920 Jul 12
+ 2:00 - EET 1920 Oct 9
+ 1:00 - CET 1940 Aug 3
+ 3:00 - MSK 1941 Jun 24
+ 1:00 C-Eur CE%sT 1944 Aug
+ 3:00 Russia MSK/MSD 1991 Mar 31 2:00s
+ 2:00 1:00 EEST 1991 Sep 29 2:00s
+ 2:00 C-Eur EE%sT 1998
+ 2:00 - EET 1998 Mar 29 1:00u
+ 1:00 EU CE%sT 1999 Oct 31 1:00u
+ 2:00 - EET 2003 Jan 1
+ 2:00 EU EE%sT
+
+# Luxembourg
+# Whitman disagrees with most of these dates in minor ways;
+# go with Shanks & Pottenger.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Lux 1916 only - May 14 23:00 1:00 S
+Rule Lux 1916 only - Oct 1 1:00 0 -
+Rule Lux 1917 only - Apr 28 23:00 1:00 S
+Rule Lux 1917 only - Sep 17 1:00 0 -
+Rule Lux 1918 only - Apr Mon>=15 2:00s 1:00 S
+Rule Lux 1918 only - Sep Mon>=15 2:00s 0 -
+Rule Lux 1919 only - Mar 1 23:00 1:00 S
+Rule Lux 1919 only - Oct 5 3:00 0 -
+Rule Lux 1920 only - Feb 14 23:00 1:00 S
+Rule Lux 1920 only - Oct 24 2:00 0 -
+Rule Lux 1921 only - Mar 14 23:00 1:00 S
+Rule Lux 1921 only - Oct 26 2:00 0 -
+Rule Lux 1922 only - Mar 25 23:00 1:00 S
+Rule Lux 1922 only - Oct Sun>=2 1:00 0 -
+Rule Lux 1923 only - Apr 21 23:00 1:00 S
+Rule Lux 1923 only - Oct Sun>=2 2:00 0 -
+Rule Lux 1924 only - Mar 29 23:00 1:00 S
+Rule Lux 1924 1928 - Oct Sun>=2 1:00 0 -
+Rule Lux 1925 only - Apr 5 23:00 1:00 S
+Rule Lux 1926 only - Apr 17 23:00 1:00 S
+Rule Lux 1927 only - Apr 9 23:00 1:00 S
+Rule Lux 1928 only - Apr 14 23:00 1:00 S
+Rule Lux 1929 only - Apr 20 23:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Luxembourg 0:24:36 - LMT 1904 Jun
+ 1:00 Lux CE%sT 1918 Nov 25
+ 0:00 Lux WE%sT 1929 Oct 6 2:00s
+ 0:00 Belgium WE%sT 1940 May 14 3:00
+ 1:00 C-Eur WE%sT 1944 Sep 18 3:00
+ 1:00 Belgium CE%sT 1977
+ 1:00 EU CE%sT
+
+# Macedonia
+# see Serbia
+
+# Malta
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Malta 1973 only - Mar 31 0:00s 1:00 S
+Rule Malta 1973 only - Sep 29 0:00s 0 -
+Rule Malta 1974 only - Apr 21 0:00s 1:00 S
+Rule Malta 1974 only - Sep 16 0:00s 0 -
+Rule Malta 1975 1979 - Apr Sun>=15 2:00 1:00 S
+Rule Malta 1975 1980 - Sep Sun>=15 2:00 0 -
+Rule Malta 1980 only - Mar 31 2:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 0:00s # Valletta
+ 1:00 Italy CE%sT 1942 Nov 2 2:00s
+ 1:00 C-Eur CE%sT 1945 Apr 2 2:00s
+ 1:00 Italy CE%sT 1973 Mar 31
+ 1:00 Malta CE%sT 1981
+ 1:00 EU CE%sT
+
+# Moldova
+
+# From Paul Eggert (2006-03-22):
+# A previous version of this database followed Shanks & Pottenger, who write
+# that Tiraspol switched to Moscow time on 1992-01-19 at 02:00.
+# However, this is most likely an error, as Moldova declared independence
+# on 1991-08-27 (the 1992-01-19 date is that of a Russian decree).
+# In early 1992 there was large-scale interethnic violence in the area
+# and it's possible that some Russophones continued to observe Moscow time.
+# But [two people] separately reported via
+# Jesper Norgaard that as of 2001-01-24 Tiraspol was like Chisinau.
+# The Tiraspol entry has therefore been removed for now.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Chisinau 1:55:20 - LMT 1880
+ 1:55 - CMT 1918 Feb 15 # Chisinau MT
+ 1:44:24 - BMT 1931 Jul 24 # Bucharest MT
+ 2:00 Romania EE%sT 1940 Aug 15
+ 2:00 1:00 EEST 1941 Jul 17
+ 1:00 C-Eur CE%sT 1944 Aug 24
+ 3:00 Russia MSK/MSD 1990
+ 3:00 - MSK 1990 May 6
+ 2:00 - EET 1991
+ 2:00 Russia EE%sT 1992
+ 2:00 E-Eur EE%sT 1997
+# See Romania commentary for the guessed 1997 transition to EU rules.
+ 2:00 EU EE%sT
+
+# Monaco
+# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+# more precise 0:09:21.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
+ 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
+ 0:00 France WE%sT 1945 Sep 16 3:00
+ 1:00 France CE%sT 1977
+ 1:00 EU CE%sT
+
+# Montenegro
+# see Serbia
+
+# Netherlands
+
+# Howse writes that the Netherlands' railways used GMT between 1892 and 1940,
+# but for other purposes the Netherlands used Amsterdam mean time.
+
+# However, Robert H. van Gent writes (2001-04-01):
+# Howse's statement is only correct up to 1909. From 1909-05-01 (00:00:00
+# Amsterdam mean time) onwards, the whole of the Netherlands (including
+# the Dutch railways) was required by law to observe Amsterdam mean time
+# (19 minutes 32.13 seconds ahead of GMT). This had already been the
+# common practice (except for the railways) for many decades but it was
+# not until 1909 when the Dutch government finally defined this by law.
+# On 1937-07-01 this was changed to 20 minutes (exactly) ahead of GMT and
+# was generally known as Dutch Time ("Nederlandse Tijd").
+#
+# (2001-04-08):
+# 1892-05-01 was the date when the Dutch railways were by law required to
+# observe GMT while the remainder of the Netherlands adhered to the common
+# practice of following Amsterdam mean time.
+#
+# (2001-04-09):
+# In 1835 the authorities of the province of North Holland requested the
+# municipal authorities of the towns and cities in the province to observe
+# Amsterdam mean time but I do not know in how many cases this request was
+# actually followed.
+#
+# From 1852 onwards the Dutch telegraph offices were by law required to
+# observe Amsterdam mean time. As the time signals from the observatory of
+# Leiden were also distributed by the telegraph system, I assume that most
+# places linked up with the telegraph (and railway) system automatically
+# adopted Amsterdam mean time.
+#
+# Although the early Dutch railway companies initially observed a variety
+# of times, most of them had adopted Amsterdam mean time by 1858 but it
+# was not until 1866 when they were all required by law to observe
+# Amsterdam mean time.
+
+# The data before 1945 are taken from
+# <http://www.phys.uu.nl/~vgent/wettijd/wettijd.htm>.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Neth 1916 only - May 1 0:00 1:00 NST # Netherlands Summer Time
+Rule Neth 1916 only - Oct 1 0:00 0 AMT # Amsterdam Mean Time
+Rule Neth 1917 only - Apr 16 2:00s 1:00 NST
+Rule Neth 1917 only - Sep 17 2:00s 0 AMT
+Rule Neth 1918 1921 - Apr Mon>=1 2:00s 1:00 NST
+Rule Neth 1918 1921 - Sep lastMon 2:00s 0 AMT
+Rule Neth 1922 only - Mar lastSun 2:00s 1:00 NST
+Rule Neth 1922 1936 - Oct Sun>=2 2:00s 0 AMT
+Rule Neth 1923 only - Jun Fri>=1 2:00s 1:00 NST
+Rule Neth 1924 only - Mar lastSun 2:00s 1:00 NST
+Rule Neth 1925 only - Jun Fri>=1 2:00s 1:00 NST
+# From 1926 through 1939 DST began 05-15, except that it was delayed by a week
+# in years when 05-15 fell in the Pentecost weekend.
+Rule Neth 1926 1931 - May 15 2:00s 1:00 NST
+Rule Neth 1932 only - May 22 2:00s 1:00 NST
+Rule Neth 1933 1936 - May 15 2:00s 1:00 NST
+Rule Neth 1937 only - May 22 2:00s 1:00 NST
+Rule Neth 1937 only - Jul 1 0:00 1:00 S
+Rule Neth 1937 1939 - Oct Sun>=2 2:00s 0 -
+Rule Neth 1938 1939 - May 15 2:00s 1:00 S
+Rule Neth 1945 only - Apr 2 2:00s 1:00 S
+Rule Neth 1945 only - Sep 16 2:00s 0 -
+#
+# Amsterdam Mean Time was +00:19:32.13 exactly, but the .13 is omitted
+# below because the current format requires GMTOFF to be an integer.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Amsterdam 0:19:32 - LMT 1835
+ 0:19:32 Neth %s 1937 Jul 1
+ 0:20 Neth NE%sT 1940 May 16 0:00 # Dutch Time
+ 1:00 C-Eur CE%sT 1945 Apr 2 2:00
+ 1:00 Neth CE%sT 1977
+ 1:00 EU CE%sT
+
+# Norway
+# http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks &
+# Pottenger.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Norway 1916 only - May 22 1:00 1:00 S
+Rule Norway 1916 only - Sep 30 0:00 0 -
+Rule Norway 1945 only - Apr 2 2:00s 1:00 S
+Rule Norway 1945 only - Oct 1 2:00s 0 -
+Rule Norway 1959 1964 - Mar Sun>=15 2:00s 1:00 S
+Rule Norway 1959 1965 - Sep Sun>=15 2:00s 0 -
+Rule Norway 1965 only - Apr 25 2:00s 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Oslo 0:43:00 - LMT 1895 Jan 1
+ 1:00 Norway CE%sT 1940 Aug 10 23:00
+ 1:00 C-Eur CE%sT 1945 Apr 2 2:00
+ 1:00 Norway CE%sT 1980
+ 1:00 EU CE%sT
+
+# Svalbard & Jan Mayen
+
+# From Steffen Thorsen (2001-05-01):
+# Although I could not find it explicitly, it seems that Jan Mayen and
+# Svalbard have been using the same time as Norway at least since the
+# time they were declared as parts of Norway. Svalbard was declared
+# as a part of Norway by law of 1925-07-17 no 11, section 4 and Jan
+# Mayen by law of 1930-02-27 no 2, section 2. (From
+# http://www.lovdata.no/all/nl-19250717-011.html and
+# http://www.lovdata.no/all/nl-19300227-002.html). The law/regulation
+# for normal/standard time in Norway is from 1894-06-29 no 1 (came
+# into operation on 1895-01-01) and Svalbard/Jan Mayen seem to be a
+# part of this law since 1925/1930. (From
+# http://www.lovdata.no/all/nl-18940629-001.html ) I have not been
+# able to find if Jan Mayen used a different time zone (e.g. -0100)
+# before 1930. Jan Mayen has only been "inhabitated" since 1921 by
+# Norwegian meteorologists and maybe used the same time as Norway ever
+# since 1921. Svalbard (Arctic/Longyearbyen) has been inhabited since
+# before 1895, and therefore probably changed the local time somewhere
+# between 1895 and 1925 (inclusive).
+
+# From Paul Eggert (2001-05-01):
+#
+# Actually, Jan Mayen was never occupied by Germany during World War II,
+# so it must have diverged from Oslo time during the war, as Oslo was
+# keeping Berlin time.
+#
+# <http://home.no.net/janmayen/history.htm> says that the meteorologists
+# burned down their station in 1940 and left the island, but returned in
+# 1941 with a small Norwegian garrison and continued operations despite
+# frequent air ttacks from Germans. In 1943 the Americans established a
+# radiolocating station on the island, called "Atlantic City". Possibly
+# the UTC offset changed during the war, but I think it unlikely that
+# Jan Mayen used German daylight-saving rules.
+#
+# Svalbard is more complicated, as it was raided in August 1941 by an
+# Allied party that evacuated the civilian population to England (says
+# <http://www.bartleby.com/65/sv/Svalbard.html>). The Svalbard FAQ
+# <http://www.svalbard.com/SvalbardFAQ.html> says that the Germans were
+# expelled on 1942-05-14. However, small parties of Germans did return,
+# and according to Wilhelm Dege's book "War North of 80" (1954)
+# <http://www.ucalgary.ca/UofC/departments/UP/1-55238/1-55238-110-2.html>
+# the German armed forces at the Svalbard weather station code-named
+# Haudegen did not surrender to the Allies until September 1945.
+#
+# All these events predate our cutoff date of 1970. Unless we can
+# come up with more definitive info about the timekeeping during the
+# war years it's probably best just do do the following for now:
+Link Europe/Oslo Arctic/Longyearbyen
+Link Europe/Oslo Atlantic/Jan_Mayen
+
+# Poland
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Poland 1918 1919 - Sep 16 2:00s 0 -
+Rule Poland 1919 only - Apr 15 2:00s 1:00 S
+Rule Poland 1944 only - Apr 3 2:00s 1:00 S
+# Whitman gives 1944 Nov 30; go with Shanks & Pottenger.
+Rule Poland 1944 only - Oct 4 2:00 0 -
+# For 1944-1948 Whitman gives the previous day; go with Shanks & Pottenger.
+Rule Poland 1945 only - Apr 29 0:00 1:00 S
+Rule Poland 1945 only - Nov 1 0:00 0 -
+# For 1946 on the source is Kazimierz Borkowski,
+# Torun Center for Astronomy, Dept. of Radio Astronomy, Nicolaus Copernicus U.,
+# <http://www.astro.uni.torun.pl/~kb/Artykuly/U-PA/Czas2.htm#tth_tAb1>
+# Thanks to Przemyslaw Augustyniak (2005-05-28) for this reference.
+# He also gives these further references:
+# Mon Pol nr 13, poz 162 (1995) <http://www.abc.com.pl/serwis/mp/1995/0162.htm>
+# Druk nr 2180 (2003) <http://www.senat.gov.pl/k5/dok/sejm/053/2180.pdf>
+Rule Poland 1946 only - Apr 14 0:00s 1:00 S
+Rule Poland 1946 only - Oct 7 2:00s 0 -
+Rule Poland 1947 only - May 4 2:00s 1:00 S
+Rule Poland 1947 1949 - Oct Sun>=1 2:00s 0 -
+Rule Poland 1948 only - Apr 18 2:00s 1:00 S
+Rule Poland 1949 only - Apr 10 2:00s 1:00 S
+Rule Poland 1957 only - Jun 2 1:00s 1:00 S
+Rule Poland 1957 1958 - Sep lastSun 1:00s 0 -
+Rule Poland 1958 only - Mar 30 1:00s 1:00 S
+Rule Poland 1959 only - May 31 1:00s 1:00 S
+Rule Poland 1959 1961 - Oct Sun>=1 1:00s 0 -
+Rule Poland 1960 only - Apr 3 1:00s 1:00 S
+Rule Poland 1961 1964 - May lastSun 1:00s 1:00 S
+Rule Poland 1962 1964 - Sep lastSun 1:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Warsaw 1:24:00 - LMT 1880
+ 1:24:00 - WMT 1915 Aug 5 # Warsaw Mean Time
+ 1:00 C-Eur CE%sT 1918 Sep 16 3:00
+ 2:00 Poland EE%sT 1922 Jun
+ 1:00 Poland CE%sT 1940 Jun 23 2:00
+ 1:00 C-Eur CE%sT 1944 Oct
+ 1:00 Poland CE%sT 1977
+ 1:00 W-Eur CE%sT 1988
+ 1:00 EU CE%sT
+
+# Portugal
+#
+# From Rui Pedro Salgueiro (1992-11-12):
+# Portugal has recently (September, 27) changed timezone
+# (from WET to MET or CET) to harmonize with EEC.
+#
+# Martin Bruckmann (1996-02-29) reports via Peter Ilieve
+# that Portugal is reverting to 0:00 by not moving its clocks this spring.
+# The new Prime Minister was fed up with getting up in the dark in the winter.
+#
+# From Paul Eggert (1996-11-12):
+# IATA SSIM (1991-09) reports several 1991-09 and 1992-09 transitions
+# at 02:00u, not 01:00u. Assume that these are typos.
+# IATA SSIM (1991/1992) reports that the Azores were at -1:00.
+# IATA SSIM (1993-02) says +0:00; later issues (through 1996-09) say -1:00.
+# Guess that the Azores changed to EU rules in 1992 (since that's when Portugal
+# harmonized with the EU), and that they stayed +0:00 that winter.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# DSH writes that despite Decree 1,469 (1915), the change to the clocks was not
+# done every year, depending on what Spain did, because of railroad schedules.
+# Go with Shanks & Pottenger.
+Rule Port 1916 only - Jun 17 23:00 1:00 S
+# Whitman gives 1916 Oct 31; go with Shanks & Pottenger.
+Rule Port 1916 only - Nov 1 1:00 0 -
+Rule Port 1917 only - Feb 28 23:00s 1:00 S
+Rule Port 1917 1921 - Oct 14 23:00s 0 -
+Rule Port 1918 only - Mar 1 23:00s 1:00 S
+Rule Port 1919 only - Feb 28 23:00s 1:00 S
+Rule Port 1920 only - Feb 29 23:00s 1:00 S
+Rule Port 1921 only - Feb 28 23:00s 1:00 S
+Rule Port 1924 only - Apr 16 23:00s 1:00 S
+Rule Port 1924 only - Oct 14 23:00s 0 -
+Rule Port 1926 only - Apr 17 23:00s 1:00 S
+Rule Port 1926 1929 - Oct Sat>=1 23:00s 0 -
+Rule Port 1927 only - Apr 9 23:00s 1:00 S
+Rule Port 1928 only - Apr 14 23:00s 1:00 S
+Rule Port 1929 only - Apr 20 23:00s 1:00 S
+Rule Port 1931 only - Apr 18 23:00s 1:00 S
+# Whitman gives 1931 Oct 8; go with Shanks & Pottenger.
+Rule Port 1931 1932 - Oct Sat>=1 23:00s 0 -
+Rule Port 1932 only - Apr 2 23:00s 1:00 S
+Rule Port 1934 only - Apr 7 23:00s 1:00 S
+# Whitman gives 1934 Oct 5; go with Shanks & Pottenger.
+Rule Port 1934 1938 - Oct Sat>=1 23:00s 0 -
+# Shanks & Pottenger give 1935 Apr 30; go with Whitman.
+Rule Port 1935 only - Mar 30 23:00s 1:00 S
+Rule Port 1936 only - Apr 18 23:00s 1:00 S
+# Whitman gives 1937 Apr 2; go with Shanks & Pottenger.
+Rule Port 1937 only - Apr 3 23:00s 1:00 S
+Rule Port 1938 only - Mar 26 23:00s 1:00 S
+Rule Port 1939 only - Apr 15 23:00s 1:00 S
+# Whitman gives 1939 Oct 7; go with Shanks & Pottenger.
+Rule Port 1939 only - Nov 18 23:00s 0 -
+Rule Port 1940 only - Feb 24 23:00s 1:00 S
+# Shanks & Pottenger give 1940 Oct 7; go with Whitman.
+Rule Port 1940 1941 - Oct 5 23:00s 0 -
+Rule Port 1941 only - Apr 5 23:00s 1:00 S
+Rule Port 1942 1945 - Mar Sat>=8 23:00s 1:00 S
+Rule Port 1942 only - Apr 25 22:00s 2:00 M # Midsummer
+Rule Port 1942 only - Aug 15 22:00s 1:00 S
+Rule Port 1942 1945 - Oct Sat>=24 23:00s 0 -
+Rule Port 1943 only - Apr 17 22:00s 2:00 M
+Rule Port 1943 1945 - Aug Sat>=25 22:00s 1:00 S
+Rule Port 1944 1945 - Apr Sat>=21 22:00s 2:00 M
+Rule Port 1946 only - Apr Sat>=1 23:00s 1:00 S
+Rule Port 1946 only - Oct Sat>=1 23:00s 0 -
+Rule Port 1947 1949 - Apr Sun>=1 2:00s 1:00 S
+Rule Port 1947 1949 - Oct Sun>=1 2:00s 0 -
+# Shanks & Pottenger say DST was observed in 1950; go with Whitman.
+# Whitman gives Oct lastSun for 1952 on; go with Shanks & Pottenger.
+Rule Port 1951 1965 - Apr Sun>=1 2:00s 1:00 S
+Rule Port 1951 1965 - Oct Sun>=1 2:00s 0 -
+Rule Port 1977 only - Mar 27 0:00s 1:00 S
+Rule Port 1977 only - Sep 25 0:00s 0 -
+Rule Port 1978 1979 - Apr Sun>=1 0:00s 1:00 S
+Rule Port 1978 only - Oct 1 0:00s 0 -
+Rule Port 1979 1982 - Sep lastSun 1:00s 0 -
+Rule Port 1980 only - Mar lastSun 0:00s 1:00 S
+Rule Port 1981 1982 - Mar lastSun 1:00s 1:00 S
+Rule Port 1983 only - Mar lastSun 2:00s 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# Shanks & Pottenger say the transition from LMT to WET occurred 1911-05-24;
+# Willett says 1912-01-01. Go with Willett.
+Zone Europe/Lisbon -0:36:32 - LMT 1884
+ -0:36:32 - LMT 1912 Jan 1 # Lisbon Mean Time
+ 0:00 Port WE%sT 1966 Apr 3 2:00
+ 1:00 - CET 1976 Sep 26 1:00
+ 0:00 Port WE%sT 1983 Sep 25 1:00s
+ 0:00 W-Eur WE%sT 1992 Sep 27 1:00s
+ 1:00 EU CE%sT 1996 Mar 31 1:00u
+ 0:00 EU WE%sT
+Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada
+ -1:54:32 - HMT 1911 May 24 # Horta Mean Time
+ -2:00 Port AZO%sT 1966 Apr 3 2:00 # Azores Time
+ -1:00 Port AZO%sT 1983 Sep 25 1:00s
+ -1:00 W-Eur AZO%sT 1992 Sep 27 1:00s
+ 0:00 EU WE%sT 1993 Mar 28 1:00u
+ -1:00 EU AZO%sT
+Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal
+ -1:07:36 - FMT 1911 May 24 # Funchal Mean Time
+ -1:00 Port MAD%sT 1966 Apr 3 2:00 # Madeira Time
+ 0:00 Port WE%sT 1983 Sep 25 1:00s
+ 0:00 EU WE%sT
+
+# Romania
+#
+# From Paul Eggert (1999-10-07):
+# <a href="http://www.nineoclock.ro/POL/1778pol.html">
+# Nine O'clock</a> (1998-10-23) reports that the switch occurred at
+# 04:00 local time in fall 1998. For lack of better info,
+# assume that Romania and Moldova switched to EU rules in 1997,
+# the same year as Bulgaria.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Romania 1932 only - May 21 0:00s 1:00 S
+Rule Romania 1932 1939 - Oct Sun>=1 0:00s 0 -
+Rule Romania 1933 1939 - Apr Sun>=2 0:00s 1:00 S
+Rule Romania 1979 only - May 27 0:00 1:00 S
+Rule Romania 1979 only - Sep lastSun 0:00 0 -
+Rule Romania 1980 only - Apr 5 23:00 1:00 S
+Rule Romania 1980 only - Sep lastSun 1:00 0 -
+Rule Romania 1991 1993 - Mar lastSun 0:00s 1:00 S
+Rule Romania 1991 1993 - Sep lastSun 0:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Bucharest 1:44:24 - LMT 1891 Oct
+ 1:44:24 - BMT 1931 Jul 24 # Bucharest MT
+ 2:00 Romania EE%sT 1981 Mar 29 2:00s
+ 2:00 C-Eur EE%sT 1991
+ 2:00 Romania EE%sT 1994
+ 2:00 E-Eur EE%sT 1997
+ 2:00 EU EE%sT
+
+# Russia
+
+# From Paul Eggert (2006-03-22):
+# Except for Moscow after 1919-07-01, I invented the time zone abbreviations.
+# Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991,
+# are from Andrey A. Chernov. The rest is from Shanks & Pottenger,
+# except we follow Chernov's report that 1992 DST transitions were Sat
+# 23:00, not Sun 02:00s.
+#
+# From Stanislaw A. Kuzikowski (1994-06-29):
+# But now it is some months since Novosibirsk is 3 hours ahead of Moscow!
+# I do not know why they have decided to make this change;
+# as far as I remember it was done exactly during winter->summer switching
+# so we (Novosibirsk) simply did not switch.
+#
+# From Andrey A. Chernov (1996-10-04):
+# `MSK' and `MSD' were born and used initially on Moscow computers with
+# UNIX-like OSes by several developer groups (e.g. Demos group, Kiae group)....
+# The next step was the UUCP network, the Relcom predecessor
+# (used mainly for mail), and MSK/MSD was actively used there.
+#
+# From Chris Carrier (1996-10-30):
+# According to a friend of mine who rode the Trans-Siberian Railroad from
+# Moscow to Irkutsk in 1995, public air and rail transport in Russia ...
+# still follows Moscow time, no matter where in Russia it is located.
+#
+# For Grozny, Chechnya, we have the following story from
+# John Daniszewski, "Scavengers in the Rubble", Los Angeles Times (2001-02-07):
+# News--often false--is spread by word of mouth. A rumor that it was
+# time to move the clocks back put this whole city out of sync with
+# the rest of Russia for two weeks--even soldiers stationed here began
+# enforcing curfew at the wrong time.
+#
+# From Gwillim Law (2001-06-05):
+# There's considerable evidence that Sakhalin Island used to be in
+# UTC+11, and has changed to UTC+10, in this decade. I start with the
+# SSIM, which listed Yuzhno-Sakhalinsk in zone RU10 along with Magadan
+# until February 1997, and then in RU9 with Khabarovsk and Vladivostok
+# since September 1997.... Although the Kuril Islands are
+# administratively part of Sakhalin oblast', they appear to have
+# remained on UTC+11 along with Magadan.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+#
+# Kaliningradskaya oblast'.
+Zone Europe/Kaliningrad 1:22:00 - LMT 1893 Apr
+ 1:00 C-Eur CE%sT 1945
+ 2:00 Poland CE%sT 1946
+ 3:00 Russia MSK/MSD 1991 Mar 31 2:00s
+ 2:00 Russia EE%sT
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Respublika Adygeya, Arkhangel'skaya oblast',
+# Belgorodskaya oblast', Bryanskaya oblast', Vladimirskaya oblast',
+# Vologodskaya oblast', Voronezhskaya oblast',
+# Respublika Dagestan, Ivanovskaya oblast', Respublika Ingushetiya,
+# Kabarbino-Balkarskaya Respublika, Respublika Kalmykiya,
+# Kalyzhskaya oblast', Respublika Karachaevo-Cherkessiya,
+# Respublika Kareliya, Respublika Komi,
+# Kostromskaya oblast', Krasnodarskij kraj, Kurskaya oblast',
+# Leningradskaya oblast', Lipetskaya oblast', Respublika Marij El,
+# Respublika Mordoviya, Moskva, Moskovskaya oblast',
+# Murmanskaya oblast', Nenetskij avtonomnyj okrug,
+# Nizhegorodskaya oblast', Novgorodskaya oblast', Orlovskaya oblast',
+# Penzenskaya oblast', Pskovskaya oblast', Rostovskaya oblast',
+# Ryazanskaya oblast', Sankt-Peterburg,
+# Respublika Severnaya Osetiya, Smolenskaya oblast',
+# Stavropol'skij kraj, Tambovskaya oblast', Respublika Tatarstan,
+# Tverskaya oblast', Tyl'skaya oblast', Ul'yanovskaya oblast',
+# Chechenskaya Respublika, Chuvashskaya oblast',
+# Yaroslavskaya oblast'
+Zone Europe/Moscow 2:30:20 - LMT 1880
+ 2:30 - MMT 1916 Jul 3 # Moscow Mean Time
+ 2:30:48 Russia %s 1919 Jul 1 2:00
+ 3:00 Russia MSK/MSD 1922 Oct
+ 2:00 - EET 1930 Jun 21
+ 3:00 Russia MSK/MSD 1991 Mar 31 2:00s
+ 2:00 Russia EE%sT 1992 Jan 19 2:00s
+ 3:00 Russia MSK/MSD
+#
+# Astrakhanskaya oblast', Kirovskaya oblast', Saratovskaya oblast',
+# Volgogradskaya oblast'. Shanks & Pottenger say Kirov is still at +0400
+# but Wikipedia (2006-05-09) says +0300. Perhaps it switched after the
+# others? But we have no data.
+Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3
+ 3:00 - TSAT 1925 Apr 6 # Tsaritsyn Time
+ 3:00 - STAT 1930 Jun 21 # Stalingrad Time
+ 4:00 - STAT 1961 Nov 11
+ 4:00 Russia VOL%sT 1989 Mar 26 2:00s # Volgograd T
+ 3:00 Russia VOL%sT 1991 Mar 31 2:00s
+ 4:00 - VOLT 1992 Mar 29 2:00s
+ 3:00 Russia VOL%sT
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Samarskaya oblast', Udmyrtskaya respublika
+Zone Europe/Samara 3:20:36 - LMT 1919 Jul 1 2:00
+ 3:00 - SAMT 1930 Jun 21
+ 4:00 - SAMT 1935 Jan 27
+ 4:00 Russia KUY%sT 1989 Mar 26 2:00s # Kuybyshev
+ 3:00 Russia KUY%sT 1991 Mar 31 2:00s
+ 2:00 Russia KUY%sT 1991 Sep 29 2:00s
+ 3:00 - KUYT 1991 Oct 20 3:00
+ 4:00 Russia SAM%sT # Samara Time
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Respublika Bashkortostan, Komi-Permyatskij avtonomnyj okrug,
+# Kurganskaya oblast', Orenburgskaya oblast', Permskaya oblast',
+# Sverdlovskaya oblast', Tyumenskaya oblast',
+# Khanty-Manskijskij avtonomnyj okrug, Chelyabinskaya oblast',
+# Yamalo-Nenetskij avtonomnyj okrug.
+Zone Asia/Yekaterinburg 4:02:24 - LMT 1919 Jul 15 4:00
+ 4:00 - SVET 1930 Jun 21 # Sverdlovsk Time
+ 5:00 Russia SVE%sT 1991 Mar 31 2:00s
+ 4:00 Russia SVE%sT 1992 Jan 19 2:00s
+ 5:00 Russia YEK%sT # Yekaterinburg Time
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Respublika Altaj, Altajskij kraj, Omskaya oblast'.
+Zone Asia/Omsk 4:53:36 - LMT 1919 Nov 14
+ 5:00 - OMST 1930 Jun 21 # Omsk TIme
+ 6:00 Russia OMS%sT 1991 Mar 31 2:00s
+ 5:00 Russia OMS%sT 1992 Jan 19 2:00s
+ 6:00 Russia OMS%sT
+#
+# From Paul Eggert (2006-08-19): I'm guessing about Tomsk here; it's
+# not clear when it switched from +7 to +6.
+# Novosibirskaya oblast', Tomskaya oblast'.
+Zone Asia/Novosibirsk 5:31:40 - LMT 1919 Dec 14 6:00
+ 6:00 - NOVT 1930 Jun 21 # Novosibirsk Time
+ 7:00 Russia NOV%sT 1991 Mar 31 2:00s
+ 6:00 Russia NOV%sT 1992 Jan 19 2:00s
+ 7:00 Russia NOV%sT 1993 May 23 # say Shanks & P.
+ 6:00 Russia NOV%sT
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Kemerovskaya oblast', Krasnoyarskij kraj,
+# Tajmyrskij (Dolgano-Nenetskij) avtonomnyj okrug,
+# Respublika Tuva, Respublika Khakasiya, Evenkijskij avtonomnyj okrug.
+Zone Asia/Krasnoyarsk 6:11:20 - LMT 1920 Jan 6
+ 6:00 - KRAT 1930 Jun 21 # Krasnoyarsk Time
+ 7:00 Russia KRA%sT 1991 Mar 31 2:00s
+ 6:00 Russia KRA%sT 1992 Jan 19 2:00s
+ 7:00 Russia KRA%sT
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Respublika Buryatiya, Irkutskaya oblast',
+# Ust'-Ordynskij Buryatskij avtonomnyj okrug.
+Zone Asia/Irkutsk 6:57:20 - LMT 1880
+ 6:57:20 - IMT 1920 Jan 25 # Irkutsk Mean Time
+ 7:00 - IRKT 1930 Jun 21 # Irkutsk Time
+ 8:00 Russia IRK%sT 1991 Mar 31 2:00s
+ 7:00 Russia IRK%sT 1992 Jan 19 2:00s
+ 8:00 Russia IRK%sT
+#
+# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+# Aginskij Buryatskij avtonomnyj okrug, Amurskaya oblast',
+# [parts of] Respublika Sakha (Yakutiya), Chitinskaya oblast'.
+# The Sakha districts are: Aldanskij, Amginskij, Anabarskij,
+# Bulunskij, Verkhnekolymskij, Verkhnevilyujskij, Vilyujskij, Gornyj,
+# Zhiganskij, Kobyajskij, Lenskij, Megino-Kangalasskij, Mirninskij,
+# Namskij, Nyurbinskij, Olenekskij, Olekminskij, Srednekolymskij,
+# Suntarskij, Tattinskij, Ust'-Aldanskij, Khangalasskij,
+# Churapchinskij, Eveno-Bytantajskij.
+Zone Asia/Yakutsk 8:38:40 - LMT 1919 Dec 15
+ 8:00 - YAKT 1930 Jun 21 # Yakutsk Time
+ 9:00 Russia YAK%sT 1991 Mar 31 2:00s
+ 8:00 Russia YAK%sT 1992 Jan 19 2:00s
+ 9:00 Russia YAK%sT
+#
+# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+# Evrejskaya avtonomnaya oblast', Khabarovskij kraj, Primorskij kraj,
+# [parts of] Respublika Sakha (Yakutiya).
+# The Sakha districts are: Verkhoyanskij, Tomponskij, Ust'-Majskij,
+# Ust'-Yanskij.
+Zone Asia/Vladivostok 8:47:44 - LMT 1922 Nov 15
+ 9:00 - VLAT 1930 Jun 21 # Vladivostok Time
+ 10:00 Russia VLA%sT 1991 Mar 31 2:00s
+ 9:00 Russia VLA%sST 1992 Jan 19 2:00s
+ 10:00 Russia VLA%sT
+#
+# Sakhalinskaya oblast'.
+# The Zone name should be Yuzhno-Sakhalinsk, but that's too long.
+Zone Asia/Sakhalin 9:30:48 - LMT 1905 Aug 23
+ 9:00 - CJT 1938
+ 9:00 - JST 1945 Aug 25
+ 11:00 Russia SAK%sT 1991 Mar 31 2:00s # Sakhalin T.
+ 10:00 Russia SAK%sT 1992 Jan 19 2:00s
+ 11:00 Russia SAK%sT 1997 Mar lastSun 2:00s
+ 10:00 Russia SAK%sT
+#
+# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+# Magadanskaya oblast', Respublika Sakha (Yakutiya).
+# Probably also: Kuril Islands.
+# The Sakha districts are: Abyjskij, Allaikhovskij, Momskij,
+# Nizhnekolymskij, Ojmyakonskij.
+Zone Asia/Magadan 10:03:12 - LMT 1924 May 2
+ 10:00 - MAGT 1930 Jun 21 # Magadan Time
+ 11:00 Russia MAG%sT 1991 Mar 31 2:00s
+ 10:00 Russia MAG%sT 1992 Jan 19 2:00s
+ 11:00 Russia MAG%sT
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Kamchatskaya oblast', Koryakskij avtonomnyj okrug.
+#
+# The Zone name should be Asia/Petropavlovsk-Kamchatski, but that's too long.
+Zone Asia/Kamchatka 10:34:36 - LMT 1922 Nov 10
+ 11:00 - PETT 1930 Jun 21 # P-K Time
+ 12:00 Russia PET%sT 1991 Mar 31 2:00s
+ 11:00 Russia PET%sT 1992 Jan 19 2:00s
+ 12:00 Russia PET%sT
+#
+# Chukotskij avtonomnyj okrug
+Zone Asia/Anadyr 11:49:56 - LMT 1924 May 2
+ 12:00 - ANAT 1930 Jun 21 # Anadyr Time
+ 13:00 Russia ANA%sT 1982 Apr 1 0:00s
+ 12:00 Russia ANA%sT 1991 Mar 31 2:00s
+ 11:00 Russia ANA%sT 1992 Jan 19 2:00s
+ 12:00 Russia ANA%sT
+
+# Serbia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Belgrade 1:22:00 - LMT 1884
+ 1:00 - CET 1941 Apr 18 23:00
+ 1:00 C-Eur CE%sT 1945 May 8 2:00s
+ 1:00 1:00 CEST 1945 Sep 16 2:00s
+# Metod Kozelj reports that the legal date of
+# transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.
+# Shanks & Pottenger don't give as much detail, so go with Kozelj.
+ 1:00 - CET 1982 Nov 27
+ 1:00 EU CE%sT
+Link Europe/Belgrade Europe/Ljubljana # Slovenia
+Link Europe/Belgrade Europe/Podgorica # Montenegro
+Link Europe/Belgrade Europe/Sarajevo # Bosnia and Herzegovina
+Link Europe/Belgrade Europe/Skopje # Macedonia
+Link Europe/Belgrade Europe/Zagreb # Croatia
+
+# Slovakia
+Link Europe/Prague Europe/Bratislava
+
+# Slovenia
+# see Serbia
+
+# Spain
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# For 1917-1919 Whitman gives Apr Sat>=1 - Oct Sat>=1;
+# go with Shanks & Pottenger.
+Rule Spain 1917 only - May 5 23:00s 1:00 S
+Rule Spain 1917 1919 - Oct 6 23:00s 0 -
+Rule Spain 1918 only - Apr 15 23:00s 1:00 S
+Rule Spain 1919 only - Apr 5 23:00s 1:00 S
+# Whitman gives 1921 Feb 28 - Oct 14; go with Shanks & Pottenger.
+Rule Spain 1924 only - Apr 16 23:00s 1:00 S
+# Whitman gives 1924 Oct 14; go with Shanks & Pottenger.
+Rule Spain 1924 only - Oct 4 23:00s 0 -
+Rule Spain 1926 only - Apr 17 23:00s 1:00 S
+# Whitman says no DST in 1929; go with Shanks & Pottenger.
+Rule Spain 1926 1929 - Oct Sat>=1 23:00s 0 -
+Rule Spain 1927 only - Apr 9 23:00s 1:00 S
+Rule Spain 1928 only - Apr 14 23:00s 1:00 S
+Rule Spain 1929 only - Apr 20 23:00s 1:00 S
+# Whitman gives 1937 Jun 16, 1938 Apr 16, 1940 Apr 13;
+# go with Shanks & Pottenger.
+Rule Spain 1937 only - May 22 23:00s 1:00 S
+Rule Spain 1937 1939 - Oct Sat>=1 23:00s 0 -
+Rule Spain 1938 only - Mar 22 23:00s 1:00 S
+Rule Spain 1939 only - Apr 15 23:00s 1:00 S
+Rule Spain 1940 only - Mar 16 23:00s 1:00 S
+# Whitman says no DST 1942-1945; go with Shanks & Pottenger.
+Rule Spain 1942 only - May 2 22:00s 2:00 M # Midsummer
+Rule Spain 1942 only - Sep 1 22:00s 1:00 S
+Rule Spain 1943 1946 - Apr Sat>=13 22:00s 2:00 M
+Rule Spain 1943 only - Oct 3 22:00s 1:00 S
+Rule Spain 1944 only - Oct 10 22:00s 1:00 S
+Rule Spain 1945 only - Sep 30 1:00 1:00 S
+Rule Spain 1946 only - Sep 30 0:00 0 -
+Rule Spain 1949 only - Apr 30 23:00 1:00 S
+Rule Spain 1949 only - Sep 30 1:00 0 -
+Rule Spain 1974 1975 - Apr Sat>=13 23:00 1:00 S
+Rule Spain 1974 1975 - Oct Sun>=1 1:00 0 -
+Rule Spain 1976 only - Mar 27 23:00 1:00 S
+Rule Spain 1976 1977 - Sep lastSun 1:00 0 -
+Rule Spain 1977 1978 - Apr 2 23:00 1:00 S
+Rule Spain 1978 only - Oct 1 1:00 0 -
+# The following rules are copied from Morocco from 1967 through 1978.
+Rule SpainAfrica 1967 only - Jun 3 12:00 1:00 S
+Rule SpainAfrica 1967 only - Oct 1 0:00 0 -
+Rule SpainAfrica 1974 only - Jun 24 0:00 1:00 S
+Rule SpainAfrica 1974 only - Sep 1 0:00 0 -
+Rule SpainAfrica 1976 1977 - May 1 0:00 1:00 S
+Rule SpainAfrica 1976 only - Aug 1 0:00 0 -
+Rule SpainAfrica 1977 only - Sep 28 0:00 0 -
+Rule SpainAfrica 1978 only - Jun 1 0:00 1:00 S
+Rule SpainAfrica 1978 only - Aug 4 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Madrid -0:14:44 - LMT 1901 Jan 1 0:00s
+ 0:00 Spain WE%sT 1946 Sep 30
+ 1:00 Spain CE%sT 1979
+ 1:00 EU CE%sT
+Zone Africa/Ceuta -0:21:16 - LMT 1901
+ 0:00 - WET 1918 May 6 23:00
+ 0:00 1:00 WEST 1918 Oct 7 23:00
+ 0:00 - WET 1924
+ 0:00 Spain WE%sT 1929
+ 0:00 SpainAfrica WE%sT 1984 Mar 16
+ 1:00 - CET 1986
+ 1:00 EU CE%sT
+Zone Atlantic/Canary -1:01:36 - LMT 1922 Mar # Las Palmas de Gran C.
+ -1:00 - CANT 1946 Sep 30 1:00 # Canaries Time
+ 0:00 - WET 1980 Apr 6 0:00s
+ 0:00 1:00 WEST 1980 Sep 28 0:00s
+ 0:00 EU WE%sT
+# IATA SSIM (1996-09) says the Canaries switch at 2:00u, not 1:00u.
+# Ignore this for now, as the Canaries are part of the EU.
+
+# Sweden
+
+# From Ivan Nilsson (2001-04-13), superseding Shanks & Pottenger:
+#
+# The law "Svensk forfattningssamling 1878, no 14" about standard time in 1879:
+# From the beginning of 1879 (that is 01-01 00:00) the time for all
+# places in the country is "the mean solar time for the meridian at
+# three degrees, or twelve minutes of time, to the west of the
+# meridian of the Observatory of Stockholm". The law is dated 1878-05-31.
+#
+# The observatory at that time had the meridian 18 degrees 03' 30"
+# eastern longitude = 01:12:14 in time. Less 12 minutes gives the
+# national standard time as 01:00:14 ahead of GMT....
+#
+# About the beginning of CET in Sweden. The lawtext ("Svensk
+# forfattningssamling 1899, no 44") states, that "from the beginning
+# of 1900... ... the same as the mean solar time for the meridian at
+# the distance of one hour of time from the meridian of the English
+# observatory at Greenwich, or at 12 minutes 14 seconds to the west
+# from the meridian of the Observatory of Stockholm". The law is dated
+# 1899-06-16. In short: At 1900-01-01 00:00:00 the new standard time
+# in Sweden is 01:00:00 ahead of GMT.
+#
+# 1916: The lawtext ("Svensk forfattningssamling 1916, no 124") states
+# that "1916-05-15 is considered to begin one hour earlier". It is
+# pretty obvious that at 05-14 23:00 the clocks are set to 05-15 00:00....
+# Further the law says, that "1916-09-30 is considered to end one hour later".
+#
+# The laws regulating [DST] are available on the site of the Swedish
+# Parliament beginning with 1985 - the laws regulating 1980/1984 are
+# not available on the site (to my knowledge they are only available
+# in Swedish): <http://www.riksdagen.se/english/work/sfst.asp> (type
+# "sommartid" without the quotes in the field "Fritext" and then click
+# the Sok-button).
+#
+# (2001-05-13):
+#
+# I have now found a newspaper stating that at 1916-10-01 01:00
+# summertime the church-clocks etc were set back one hour to show
+# 1916-10-01 00:00 standard time. The article also reports that some
+# people thought the switch to standard time would take place already
+# at 1916-10-01 00:00 summer time, but they had to wait for another
+# hour before the event took place.
+#
+# Source: The newspaper "Dagens Nyheter", 1916-10-01, page 7 upper left.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1
+ 1:00:14 - SET 1900 Jan 1 # Swedish Time
+ 1:00 - CET 1916 May 14 23:00
+ 1:00 1:00 CEST 1916 Oct 1 01:00
+ 1:00 - CET 1980
+ 1:00 EU CE%sT
+
+# Switzerland
+# From Howse:
+# By the end of the 18th century clocks and watches became commonplace
+# and their performance improved enormously. Communities began to keep
+# mean time in preference to apparent time -- Geneva from 1780 ....
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# From Whitman (who writes ``Midnight?''):
+Rule Swiss 1940 only - Nov 2 0:00 1:00 S
+Rule Swiss 1940 only - Dec 31 0:00 0 -
+# From Shanks & Pottenger:
+Rule Swiss 1941 1942 - May Sun>=1 2:00 1:00 S
+Rule Swiss 1941 1942 - Oct Sun>=1 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Zurich 0:34:08 - LMT 1848 Sep 12
+ 0:29:44 - BMT 1894 Jun # Bern Mean Time
+ 1:00 Swiss CE%sT 1981
+ 1:00 EU CE%sT
+
+# Turkey
+
+# From Amar Devegowda (2007-01-03):
+# The time zone rules for Istanbul, Turkey have not been changed for years now.
+# ... The latest rules are available at -
+# http://www.timeanddate.com/worldclock/timezone.html?n=107
+# From Steffen Thorsen (2007-01-03):
+# I have been able to find press records back to 1996 which all say that
+# DST started 01:00 local time and end at 02:00 local time. I am not sure
+# what happened before that. One example for each year from 1996 to 2001:
+# http://newspot.byegm.gov.tr/arsiv/1996/21/N4.htm
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING97/03/97X03X25.TXT
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING98/03/98X03X02.HTM
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING99/10/99X10X26.HTM#%2016
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2000/03/00X03X06.HTM#%2021
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2001/03/23x03x01.HTM#%2027
+# From Paul Eggert (2007-01-03):
+# Prefer the above source to Shanks & Pottenger for time stamps after 1990.
+
+# From Steffen Thorsen (2007-03-09):
+# Starting 2007 though, it seems that they are adopting EU's 1:00 UTC
+# start/end time, according to the following page (2007-03-07):
+# http://www.ntvmsnbc.com/news/402029.asp
+# The official document is located here - it is in Turkish...:
+# http://rega.basbakanlik.gov.tr/eskiler/2007/03/20070307-7.htm
+# I was able to locate the following seemingly official document
+# (on a non-government server though) describing dates between 2002 and 2006:
+# http://www.alomaliye.com/bkk_2002_3769.htm
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Turkey 1916 only - May 1 0:00 1:00 S
+Rule Turkey 1916 only - Oct 1 0:00 0 -
+Rule Turkey 1920 only - Mar 28 0:00 1:00 S
+Rule Turkey 1920 only - Oct 25 0:00 0 -
+Rule Turkey 1921 only - Apr 3 0:00 1:00 S
+Rule Turkey 1921 only - Oct 3 0:00 0 -
+Rule Turkey 1922 only - Mar 26 0:00 1:00 S
+Rule Turkey 1922 only - Oct 8 0:00 0 -
+# Whitman gives 1923 Apr 28 - Sep 16 and no DST in 1924-1925;
+# go with Shanks & Pottenger.
+Rule Turkey 1924 only - May 13 0:00 1:00 S
+Rule Turkey 1924 1925 - Oct 1 0:00 0 -
+Rule Turkey 1925 only - May 1 0:00 1:00 S
+Rule Turkey 1940 only - Jun 30 0:00 1:00 S
+Rule Turkey 1940 only - Oct 5 0:00 0 -
+Rule Turkey 1940 only - Dec 1 0:00 1:00 S
+Rule Turkey 1941 only - Sep 21 0:00 0 -
+Rule Turkey 1942 only - Apr 1 0:00 1:00 S
+# Whitman omits the next two transition and gives 1945 Oct 1;
+# go with Shanks & Pottenger.
+Rule Turkey 1942 only - Nov 1 0:00 0 -
+Rule Turkey 1945 only - Apr 2 0:00 1:00 S
+Rule Turkey 1945 only - Oct 8 0:00 0 -
+Rule Turkey 1946 only - Jun 1 0:00 1:00 S
+Rule Turkey 1946 only - Oct 1 0:00 0 -
+Rule Turkey 1947 1948 - Apr Sun>=16 0:00 1:00 S
+Rule Turkey 1947 1950 - Oct Sun>=2 0:00 0 -
+Rule Turkey 1949 only - Apr 10 0:00 1:00 S
+Rule Turkey 1950 only - Apr 19 0:00 1:00 S
+Rule Turkey 1951 only - Apr 22 0:00 1:00 S
+Rule Turkey 1951 only - Oct 8 0:00 0 -
+Rule Turkey 1962 only - Jul 15 0:00 1:00 S
+Rule Turkey 1962 only - Oct 8 0:00 0 -
+Rule Turkey 1964 only - May 15 0:00 1:00 S
+Rule Turkey 1964 only - Oct 1 0:00 0 -
+Rule Turkey 1970 1972 - May Sun>=2 0:00 1:00 S
+Rule Turkey 1970 1972 - Oct Sun>=2 0:00 0 -
+Rule Turkey 1973 only - Jun 3 1:00 1:00 S
+Rule Turkey 1973 only - Nov 4 3:00 0 -
+Rule Turkey 1974 only - Mar 31 2:00 1:00 S
+Rule Turkey 1974 only - Nov 3 5:00 0 -
+Rule Turkey 1975 only - Mar 30 0:00 1:00 S
+Rule Turkey 1975 1976 - Oct lastSun 0:00 0 -
+Rule Turkey 1976 only - Jun 1 0:00 1:00 S
+Rule Turkey 1977 1978 - Apr Sun>=1 0:00 1:00 S
+Rule Turkey 1977 only - Oct 16 0:00 0 -
+Rule Turkey 1979 1980 - Apr Sun>=1 3:00 1:00 S
+Rule Turkey 1979 1982 - Oct Mon>=11 0:00 0 -
+Rule Turkey 1981 1982 - Mar lastSun 3:00 1:00 S
+Rule Turkey 1983 only - Jul 31 0:00 1:00 S
+Rule Turkey 1983 only - Oct 2 0:00 0 -
+Rule Turkey 1985 only - Apr 20 0:00 1:00 S
+Rule Turkey 1985 only - Sep 28 0:00 0 -
+Rule Turkey 1986 1990 - Mar lastSun 2:00s 1:00 S
+Rule Turkey 1986 1990 - Sep lastSun 2:00s 0 -
+Rule Turkey 1991 2006 - Mar lastSun 1:00s 1:00 S
+Rule Turkey 1991 1995 - Sep lastSun 1:00s 0 -
+Rule Turkey 1996 2006 - Oct lastSun 1:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Istanbul 1:55:52 - LMT 1880
+ 1:56:56 - IMT 1910 Oct # Istanbul Mean Time?
+ 2:00 Turkey EE%sT 1978 Oct 15
+ 3:00 Turkey TR%sT 1985 Apr 20 # Turkey Time
+ 2:00 Turkey EE%sT 2007
+ 2:00 EU EE%sT
+Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents.
+
+# Ukraine
+#
+# From Igor Karpov, who works for the Ukranian Ministry of Justice,
+# via Garrett Wollman (2003-01-27):
+# BTW, I've found the official document on this matter. It's goverment
+# regulations number 509, May 13, 1996. In my poor translation it says:
+# "Time in Ukraine is set to second timezone (Kiev time). Each last Sunday
+# of March at 3am the time is changing to 4am and each last Sunday of
+# October the time at 4am is changing to 3am"
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# Most of Ukraine since 1970 has been like Kiev.
+# "Kyiv" is the transliteration of the Ukrainian name, but
+# "Kiev" is more common in English.
+Zone Europe/Kiev 2:02:04 - LMT 1880
+ 2:02:04 - KMT 1924 May 2 # Kiev Mean Time
+ 2:00 - EET 1930 Jun 21
+ 3:00 - MSK 1941 Sep 20
+ 1:00 C-Eur CE%sT 1943 Nov 6
+ 3:00 Russia MSK/MSD 1990
+ 3:00 - MSK 1990 Jul 1 2:00
+ 2:00 - EET 1992
+ 2:00 E-Eur EE%sT 1995
+ 2:00 EU EE%sT
+# Ruthenia used CET 1990/1991.
+# "Uzhhorod" is the transliteration of the Ukrainian name, but
+# "Uzhgorod" is more common in English.
+Zone Europe/Uzhgorod 1:29:12 - LMT 1890 Oct
+ 1:00 - CET 1940
+ 1:00 C-Eur CE%sT 1944 Oct
+ 1:00 1:00 CEST 1944 Oct 26
+ 1:00 - CET 1945 Jun 29
+ 3:00 Russia MSK/MSD 1990
+ 3:00 - MSK 1990 Jul 1 2:00
+ 1:00 - CET 1991 Mar 31 3:00
+ 2:00 - EET 1992
+ 2:00 E-Eur EE%sT 1995
+ 2:00 EU EE%sT
+# Zaporozh'ye and eastern Lugansk oblasts observed DST 1990/1991.
+# "Zaporizhia" is the transliteration of the Ukrainian name, but
+# "Zaporozh'ye" is more common in English. Use the common English
+# spelling, except omit the apostrophe as it is not allowed in
+# portable Posix file names.
+Zone Europe/Zaporozhye 2:20:40 - LMT 1880
+ 2:20 - CUT 1924 May 2 # Central Ukraine T
+ 2:00 - EET 1930 Jun 21
+ 3:00 - MSK 1941 Aug 25
+ 1:00 C-Eur CE%sT 1943 Oct 25
+ 3:00 Russia MSK/MSD 1991 Mar 31 2:00
+ 2:00 E-Eur EE%sT 1995
+ 2:00 EU EE%sT
+# Central Crimea used Moscow time 1994/1997.
+Zone Europe/Simferopol 2:16:24 - LMT 1880
+ 2:16 - SMT 1924 May 2 # Simferopol Mean T
+ 2:00 - EET 1930 Jun 21
+ 3:00 - MSK 1941 Nov
+ 1:00 C-Eur CE%sT 1944 Apr 13
+ 3:00 Russia MSK/MSD 1990
+ 3:00 - MSK 1990 Jul 1 2:00
+ 2:00 - EET 1992
+# From Paul Eggert (2006-03-22):
+# The _Economist_ (1994-05-28, p 45) reports that central Crimea switched
+# from Kiev to Moscow time sometime after the January 1994 elections.
+# Shanks (1999) says ``date of change uncertain'', but implies that it happened
+# sometime between the 1994 DST switches. Shanks & Pottenger simply say
+# 1994-09-25 03:00, but that can't be right. For now, guess it
+# changed in May.
+ 2:00 E-Eur EE%sT 1994 May
+# From IATA SSIM (1994/1997), which also says that Kerch is still like Kiev.
+ 3:00 E-Eur MSK/MSD 1996 Mar 31 3:00s
+ 3:00 1:00 MSD 1996 Oct 27 3:00s
+# IATA SSIM (1997-09) says Crimea switched to EET/EEST.
+# Assume it happened in March by not changing the clocks.
+ 3:00 Russia MSK/MSD 1997
+ 3:00 - MSK 1997 Mar lastSun 1:00u
+ 2:00 EU EE%sT
+
+###############################################################################
+
+# One source shows that Bulgaria, Cyprus, Finland, and Greece observe DST from
+# the last Sunday in March to the last Sunday in September in 1986.
+# The source shows Romania changing a day later than everybody else.
+#
+# According to Bernard Sieloff's source, Poland is in the MET time zone but
+# uses the WE DST rules. The Western USSR uses EET+1 and ME DST rules.
+# Bernard Sieloff's source claims Romania switches on the same day, but at
+# 00:00 standard time (i.e., 01:00 DST). It also claims that Turkey
+# switches on the same day, but switches on at 01:00 standard time
+# and off at 00:00 standard time (i.e., 01:00 DST)
+
+# ...
+# Date: Wed, 28 Jan 87 16:56:27 -0100
+# From: Tom Hofmann
+# ...
+#
+# ...the European time rules are...standardized since 1981, when
+# most European coun[tr]ies started DST. Before that year, only
+# a few countries (UK, France, Italy) had DST, each according
+# to own national rules. In 1981, however, DST started on
+# 'Apr firstSun', and not on 'Mar lastSun' as in the following
+# years...
+# But also since 1981 there are some more national exceptions
+# than listed in 'europe': Switzerland, for example, joined DST
+# one year later, Denmark ended DST on 'Oct 1' instead of 'Sep
+# lastSun' in 1981---I don't know how they handle now.
+#
+# Finally, DST ist always from 'Apr 1' to 'Oct 1' in the
+# Soviet Union (as far as I know).
+#
+# Tom Hofmann, Scientific Computer Center, CIBA-GEIGY AG,
+# 4002 Basle, Switzerland
+# ...
+
+# ...
+# Date: Wed, 4 Feb 87 22:35:22 +0100
+# From: Dik T. Winter
+# ...
+#
+# The information from Tom Hofmann is (as far as I know) not entirely correct.
+# After a request from chongo at amdahl I tried to retrieve all information
+# about DST in Europe. I was able to find all from about 1969.
+#
+# ...standardization on DST in Europe started in about 1977 with switches on
+# first Sunday in April and last Sunday in September...
+# In 1981 UK joined Europe insofar that
+# the starting day for both shifted to last Sunday in March. And from 1982
+# the whole of Europe used DST, with switch dates April 1 and October 1 in
+# the Sov[i]et Union. In 1985 the SU reverted to standard Europe[a]n switch
+# dates...
+#
+# It should also be remembered that time-zones are not constants; e.g.
+# Portugal switched in 1976 from MET (or CET) to WET with DST...
+# Note also that though there were rules for switch dates not
+# all countries abided to these dates, and many individual deviations
+# occurred, though not since 1982 I believe. Another note: it is always
+# assumed that DST is 1 hour ahead of normal time, this need not be the
+# case; at least in the Netherlands there have been times when DST was 2 hours
+# in advance of normal time.
+#
+# ...
+# dik t. winter, cwi, amsterdam, nederland
+# ...
+
+# From Bob Devine (1988-01-28):
+# ...
+# Greece: Last Sunday in April to last Sunday in September (iffy on dates).
+# Since 1978. Change at midnight.
+# ...
+# Monaco: has same DST as France.
+# ...
diff --git a/jdk/make/sun/javazic/tzdata/factory b/jdk/make/sun/javazic/tzdata/factory
new file mode 100644
index 0000000..3842b9b
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/factory
@@ -0,0 +1,30 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# For companies who don't want to put time zone specification in
+# their installation procedures. When users run date, they'll get the message.
+# Also useful for the "comp.sources" version.
+
+# Zone NAME GMTOFF RULES FORMAT
+Zone Factory 0 - "Local time zone must be set--see zic manual page"
diff --git a/jdk/make/sun/javazic/tzdata/iso3166.tab b/jdk/make/sun/javazic/tzdata/iso3166.tab
new file mode 100644
index 0000000..d976eb1
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/iso3166.tab
@@ -0,0 +1,289 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# ISO 3166 alpha-2 country codes
+#
+#
+# From Paul Eggert (2006-09-27):
+#
+# This file contains a table with the following columns:
+# 1. ISO 3166-1 alpha-2 country code, current as of
+# ISO 3166-1 Newsletter No. V-12 (2006-09-26). See:
+# <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/index.html">
+# ISO 3166 Maintenance agency (ISO 3166/MA)
+# </a>.
+# 2. The usual English name for the country,
+# chosen so that alphabetic sorting of subsets produces helpful lists.
+# This is not the same as the English name in the ISO 3166 tables.
+#
+# Columns are separated by a single tab.
+# The table is sorted by country code.
+#
+# Lines beginning with `#' are comments.
+#
+#country-
+#code country name
+AD Andorra
+AE United Arab Emirates
+AF Afghanistan
+AG Antigua & Barbuda
+AI Anguilla
+AL Albania
+AM Armenia
+AN Netherlands Antilles
+AO Angola
+AQ Antarctica
+AR Argentina
+AS Samoa (American)
+AT Austria
+AU Australia
+AW Aruba
+AX Aaland Islands
+AZ Azerbaijan
+BA Bosnia & Herzegovina
+BB Barbados
+BD Bangladesh
+BE Belgium
+BF Burkina Faso
+BG Bulgaria
+BH Bahrain
+BI Burundi
+BJ Benin
+BM Bermuda
+BN Brunei
+BO Bolivia
+BR Brazil
+BS Bahamas
+BT Bhutan
+BV Bouvet Island
+BW Botswana
+BY Belarus
+BZ Belize
+CA Canada
+CC Cocos (Keeling) Islands
+CD Congo (Dem. Rep.)
+CF Central African Rep.
+CG Congo (Rep.)
+CH Switzerland
+CI Cote d'Ivoire
+CK Cook Islands
+CL Chile
+CM Cameroon
+CN China
+CO Colombia
+CR Costa Rica
+CU Cuba
+CV Cape Verde
+CX Christmas Island
+CY Cyprus
+CZ Czech Republic
+DE Germany
+DJ Djibouti
+DK Denmark
+DM Dominica
+DO Dominican Republic
+DZ Algeria
+EC Ecuador
+EE Estonia
+EG Egypt
+EH Western Sahara
+ER Eritrea
+ES Spain
+ET Ethiopia
+FI Finland
+FJ Fiji
+FK Falkland Islands
+FM Micronesia
+FO Faroe Islands
+FR France
+GA Gabon
+GB Britain (UK)
+GD Grenada
+GE Georgia
+GF French Guiana
+GG Guernsey
+GH Ghana
+GI Gibraltar
+GL Greenland
+GM Gambia
+GN Guinea
+GP Guadeloupe
+GQ Equatorial Guinea
+GR Greece
+GS South Georgia & the South Sandwich Islands
+GT Guatemala
+GU Guam
+GW Guinea-Bissau
+GY Guyana
+HK Hong Kong
+HM Heard Island & McDonald Islands
+HN Honduras
+HR Croatia
+HT Haiti
+HU Hungary
+ID Indonesia
+IE Ireland
+IL Israel
+IM Isle of Man
+IN India
+IO British Indian Ocean Territory
+IQ Iraq
+IR Iran
+IS Iceland
+IT Italy
+JE Jersey
+JM Jamaica
+JO Jordan
+JP Japan
+KE Kenya
+KG Kyrgyzstan
+KH Cambodia
+KI Kiribati
+KM Comoros
+KN St Kitts & Nevis
+KP Korea (North)
+KR Korea (South)
+KW Kuwait
+KY Cayman Islands
+KZ Kazakhstan
+LA Laos
+LB Lebanon
+LC St Lucia
+LI Liechtenstein
+LK Sri Lanka
+LR Liberia
+LS Lesotho
+LT Lithuania
+LU Luxembourg
+LV Latvia
+LY Libya
+MA Morocco
+MC Monaco
+MD Moldova
+ME Montenegro
+MG Madagascar
+MH Marshall Islands
+MK Macedonia
+ML Mali
+MM Myanmar (Burma)
+MN Mongolia
+MO Macau
+MP Northern Mariana Islands
+MQ Martinique
+MR Mauritania
+MS Montserrat
+MT Malta
+MU Mauritius
+MV Maldives
+MW Malawi
+MX Mexico
+MY Malaysia
+MZ Mozambique
+NA Namibia
+NC New Caledonia
+NE Niger
+NF Norfolk Island
+NG Nigeria
+NI Nicaragua
+NL Netherlands
+NO Norway
+NP Nepal
+NR Nauru
+NU Niue
+NZ New Zealand
+OM Oman
+PA Panama
+PE Peru
+PF French Polynesia
+PG Papua New Guinea
+PH Philippines
+PK Pakistan
+PL Poland
+PM St Pierre & Miquelon
+PN Pitcairn
+PR Puerto Rico
+PS Palestine
+PT Portugal
+PW Palau
+PY Paraguay
+QA Qatar
+RE Reunion
+RO Romania
+RS Serbia
+RU Russia
+RW Rwanda
+SA Saudi Arabia
+SB Solomon Islands
+SC Seychelles
+SD Sudan
+SE Sweden
+SG Singapore
+SH St Helena
+SI Slovenia
+SJ Svalbard & Jan Mayen
+SK Slovakia
+SL Sierra Leone
+SM San Marino
+SN Senegal
+SO Somalia
+SR Suriname
+ST Sao Tome & Principe
+SV El Salvador
+SY Syria
+SZ Swaziland
+TC Turks & Caicos Is
+TD Chad
+TF French Southern & Antarctic Lands
+TG Togo
+TH Thailand
+TJ Tajikistan
+TK Tokelau
+TL East Timor
+TM Turkmenistan
+TN Tunisia
+TO Tonga
+TR Turkey
+TT Trinidad & Tobago
+TV Tuvalu
+TW Taiwan
+TZ Tanzania
+UA Ukraine
+UG Uganda
+UM US minor outlying islands
+US United States
+UY Uruguay
+UZ Uzbekistan
+VA Vatican City
+VC St Vincent
+VE Venezuela
+VG Virgin Islands (UK)
+VI Virgin Islands (US)
+VN Vietnam
+VU Vanuatu
+WF Wallis & Futuna
+WS Samoa (western)
+YE Yemen
+YT Mayotte
+ZA South Africa
+ZM Zambia
+ZW Zimbabwe
diff --git a/jdk/make/sun/javazic/tzdata/leapseconds b/jdk/make/sun/javazic/tzdata/leapseconds
new file mode 100644
index 0000000..77d28da
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/leapseconds
@@ -0,0 +1,104 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Allowance for leapseconds added to each timezone file.
+
+# The International Earth Rotation Service periodically uses leap seconds
+# to keep UTC to within 0.9 s of UT1
+# (which measures the true angular orientation of the earth in space); see
+# Terry J Quinn, The BIPM and the accurate measure of time,
+# Proc IEEE 79, 7 (July 1991), 894-905.
+# There were no leap seconds before 1972, because the official mechanism
+# accounting for the discrepancy between atomic time and the earth's rotation
+# did not exist until the early 1970s.
+
+# The correction (+ or -) is made at the given time, so lines
+# will typically look like:
+# Leap YEAR MON DAY 23:59:60 + R/S
+# or
+# Leap YEAR MON DAY 23:59:59 - R/S
+
+# If the leapsecond is Rolling (R) the given time is local time
+# If the leapsecond is Stationary (S) the given time is UTC
+
+# Leap YEAR MONTH DAY HH:MM:SS CORR R/S
+Leap 1972 Jun 30 23:59:60 + S
+Leap 1972 Dec 31 23:59:60 + S
+Leap 1973 Dec 31 23:59:60 + S
+Leap 1974 Dec 31 23:59:60 + S
+Leap 1975 Dec 31 23:59:60 + S
+Leap 1976 Dec 31 23:59:60 + S
+Leap 1977 Dec 31 23:59:60 + S
+Leap 1978 Dec 31 23:59:60 + S
+Leap 1979 Dec 31 23:59:60 + S
+Leap 1981 Jun 30 23:59:60 + S
+Leap 1982 Jun 30 23:59:60 + S
+Leap 1983 Jun 30 23:59:60 + S
+Leap 1985 Jun 30 23:59:60 + S
+Leap 1987 Dec 31 23:59:60 + S
+Leap 1989 Dec 31 23:59:60 + S
+Leap 1990 Dec 31 23:59:60 + S
+Leap 1992 Jun 30 23:59:60 + S
+Leap 1993 Jun 30 23:59:60 + S
+Leap 1994 Jun 30 23:59:60 + S
+Leap 1995 Dec 31 23:59:60 + S
+Leap 1997 Jun 30 23:59:60 + S
+Leap 1998 Dec 31 23:59:60 + S
+Leap 2005 Dec 31 23:59:60 + S
+
+# INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
+# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE
+#
+# SERVICE DE LA ROTATION TERRESTRE
+# OBSERVATOIRE DE PARIS
+# 61, Av. de l'Observatoire 75014 PARIS (France)
+# Tel. : 33 (0) 1 40 51 22 26
+# FAX : 33 (0) 1 40 51 22 91
+# Internet : services.iers@obspm.fr
+#
+# Paris, 28 June 2007
+#
+# Bulletin C 34
+#
+# To authorities responsible
+# for the measurement and
+# distribution of time
+#
+# INFORMATION ON UTC - TAI
+#
+# NO positive leap second will be introduced at the end of December 2007.
+# The difference between Coordinated Universal Time UTC and the
+# International Atomic Time TAI is :
+#
+# from 2006 January 1, 0h UTC, until further notice : UTC-TAI = -33 s
+#
+# Leap seconds can be introduced in UTC at the end of the months of December
+# or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every
+# six months, either to announce a time step in UTC, or to confirm that there
+# will be no time step at the next possible date.
+#
+# Daniel GAMBIS
+# Director
+# Earth Orientation Center of IERS
+# Observatoire de Paris, France
diff --git a/jdk/make/sun/javazic/tzdata/northamerica b/jdk/make/sun/javazic/tzdata/northamerica
new file mode 100644
index 0000000..ab5bb5b
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/northamerica
@@ -0,0 +1,2606 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# <pre>
+
+# also includes Central America and the Caribbean
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@elsie.nci.nih.gov for general use in the future).
+
+# From Paul Eggert (1999-03-22):
+# A reliable and entertaining source about time zones is
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+
+###############################################################################
+
+# United States
+
+# From Paul Eggert (1999-03-31):
+# Howse writes (pp 121-125) that time zones were invented by
+# Professor Charles Ferdinand Dowd (1825-1904),
+# Principal of Temple Grove Ladies' Seminary (Saratoga Springs, NY).
+# His pamphlet ``A System of National Time for Railroads'' (1870)
+# was the result of his proposals at the Convention of Railroad Trunk Lines
+# in New York City (1869-10). His 1870 proposal was based on Washington, DC,
+# but in 1872-05 he moved the proposed origin to Greenwich.
+# His proposal was adopted by the railroads on 1883-11-18 at 12:00,
+# and the most of the country soon followed suit.
+
+# From Paul Eggert (2005-04-16):
+# That 1883 transition occurred at 12:00 new time, not at 12:00 old time.
+# See p 46 of David Prerau, Seize the daylight, Thunder's Mouth Press (2005).
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data in the US is
+# Thomas G. Shanks, The American Atlas (5th edition),
+# San Diego: ACS Publications, Inc. (1991).
+# Make sure you have the errata sheet; the book is somewhat useless without it.
+# It is the source for most of the pre-1991 US entries below.
+
+# From Paul Eggert (2001-03-06):
+# Daylight Saving Time was first suggested as a joke by Benjamin Franklin
+# in his whimsical essay ``An Economical Project for Diminishing the Cost
+# of Light'' published in the Journal de Paris (1784-04-26).
+# Not everyone is happy with the results:
+#
+# I don't really care how time is reckoned so long as there is some
+# agreement about it, but I object to being told that I am saving
+# daylight when my reason tells me that I am doing nothing of the kind.
+# I even object to the implication that I am wasting something
+# valuable if I stay in bed after the sun has risen. As an admirer
+# of moonlight I resent the bossy insistence of those who want to
+# reduce my time for enjoying it. At the back of the Daylight Saving
+# scheme I detect the bony, blue-fingered hand of Puritanism, eager
+# to push people into bed earlier, and get them up earlier, to make
+# them healthy, wealthy and wise in spite of themselves.
+#
+# -- Robertson Davies, The diary of Samuel Marchbanks,
+# Clarke, Irwin (1947), XIX, Sunday
+#
+# For more about the first ten years of DST in the United States, see
+# Robert Garland's <a href="http://www.clpgh.org/exhibit/dst.html">
+# Ten years of daylight saving from the Pittsburgh standpoint
+# (Carnegie Library of Pittsburgh, 1927)</a>.
+#
+# Shanks says that DST was called "War Time" in the US in 1918 and 1919.
+# However, DST was imposed by the Standard Time Act of 1918, which
+# was the first nationwide legal time standard, and apparently
+# time was just called "Standard Time" or "Daylight Saving Time".
+
+# From Arthur David Olson:
+# US Daylight Saving Time ended on the last Sunday of *October* in 1974.
+# See, for example, the front page of the Saturday, 1974-10-26
+# and Sunday, 1974-10-27 editions of the Washington Post.
+
+# From Arthur David Olson:
+# Before the Uniform Time Act of 1966 took effect in 1967, observance of
+# Daylight Saving Time in the US was by local option, except during wartime.
+
+# From Arthur David Olson (2000-09-25):
+# Last night I heard part of a rebroadcast of a 1945 Arch Oboler radio drama.
+# In the introduction, Oboler spoke of "Eastern Peace Time."
+# An AltaVista search turned up
+# <a href="http://rowayton.org/rhs/hstaug45.html">:
+# "When the time is announced over the radio now, it is 'Eastern Peace
+# Time' instead of the old familiar 'Eastern War Time.' Peace is wonderful."
+# </a> (August 1945) by way of confirmation.
+
+# From Joseph Gallant citing
+# George H. Douglas, _The Early Days of Radio Broadcasting_ (1987):
+# At 7 P.M. (Eastern War Time) [on 1945-08-14], the networks were set
+# to switch to London for Attlee's address, but the American people
+# never got to hear his speech live. According to one press account,
+# CBS' Bob Trout was first to announce the word of Japan's surrender,
+# but a few seconds later, NBC, ABC and Mutual also flashed the word
+# of surrender, all of whom interrupting the bells of Big Ben in
+# London which were to precede Mr. Attlee's speech.
+
+# From Paul Eggert (2003-02-09): It was Robert St John, not Bob Trout. From
+# Myrna Oliver's obituary of St John on page B16 of today's Los Angeles Times:
+#
+# ... a war-weary U.S. clung to radios, awaiting word of Japan's surrender.
+# Any announcement from Asia would reach St. John's New York newsroom on a
+# wire service teletype machine, which had prescribed signals for major news.
+# Associated Press, for example, would ring five bells before spewing out
+# typed copy of an important story, and 10 bells for news "of transcendental
+# importance."
+#
+# On Aug. 14, stalling while talking steadily into the NBC networks' open
+# microphone, St. John heard five bells and waited only to hear a sixth bell,
+# before announcing confidently: "Ladies and gentlemen, World War II is over.
+# The Japanese have agreed to our surrender terms."
+#
+# He had scored a 20-second scoop on other broadcasters.
+
+# From Arthur David Olson (2005-08-22):
+# Paul has been careful to use the "US" rules only in those locations
+# that are part of the United States; this reflects the real scope of
+# U.S. government action. So even though the "US" rules have changed
+# in the latest release, other countries won't be affected.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule US 1918 1919 - Mar lastSun 2:00 1:00 D
+Rule US 1918 1919 - Oct lastSun 2:00 0 S
+Rule US 1942 only - Feb 9 2:00 1:00 W # War
+Rule US 1945 only - Aug 14 23:00u 1:00 P # Peace
+Rule US 1945 only - Sep 30 2:00 0 S
+Rule US 1967 2006 - Oct lastSun 2:00 0 S
+Rule US 1967 1973 - Apr lastSun 2:00 1:00 D
+Rule US 1974 only - Jan 6 2:00 1:00 D
+Rule US 1975 only - Feb 23 2:00 1:00 D
+Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
+Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
+Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
+Rule US 2007 max - Nov Sun>=1 2:00 0 S
+
+# From Arthur David Olson, 2005-12-19
+# We generate the files specified below to guard against old files with
+# obsolete information being left in the time zone binary directory.
+# We limit the list to names that have appeared in previous versions of
+# this time zone package.
+# We do these as separate Zones rather than as Links to avoid problems if
+# a particular place changes whether it observes DST.
+# We put these specifications here in the northamerica file both to
+# increase the chances that they'll actually get compiled and to
+# avoid the need to duplicate the US rules in another file.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone EST -5:00 - EST
+Zone MST -7:00 - MST
+Zone HST -10:00 - HST
+Zone EST5EDT -5:00 US E%sT
+Zone CST6CDT -6:00 US C%sT
+Zone MST7MDT -7:00 US M%sT
+Zone PST8PDT -8:00 US P%sT
+
+# From Bob Devine (1988-01-28):
+# ...Alaska (and Hawaii) had the timezone names changed in 1967.
+# old new
+# Pacific Standard Time(PST) -same-
+# Yukon Standard Time(YST) -same-
+# Central Alaska S.T. (CAT) Alaska-Hawaii St[an]dard Time (AHST)
+# Nome Standard Time (NT) Bering Standard Time (BST)
+#
+# ...Alaska's timezone lines were redrawn in 1983 to give only 2 tz.
+# The YST zone now covers nearly all of the state, AHST just part
+# of the Aleutian islands. No DST.
+
+# From Paul Eggert (1995-12-19):
+# The tables below use `NST', not `NT', for Nome Standard Time.
+# I invented `CAWT' for Central Alaska War Time.
+
+# From U. S. Naval Observatory (1989-01-19):
+# USA EASTERN 5 H BEHIND UTC NEW YORK, WASHINGTON
+# USA EASTERN 4 H BEHIND UTC APR 3 - OCT 30
+# USA CENTRAL 6 H BEHIND UTC CHICAGO, HOUSTON
+# USA CENTRAL 5 H BEHIND UTC APR 3 - OCT 30
+# USA MOUNTAIN 7 H BEHIND UTC DENVER
+# USA MOUNTAIN 6 H BEHIND UTC APR 3 - OCT 30
+# USA PACIFIC 8 H BEHIND UTC L.A., SAN FRANCISCO
+# USA PACIFIC 7 H BEHIND UTC APR 3 - OCT 30
+# USA ALASKA STD 9 H BEHIND UTC MOST OF ALASKA (AKST)
+# USA ALASKA STD 8 H BEHIND UTC APR 3 - OCT 30 (AKDT)
+# USA ALEUTIAN 10 H BEHIND UTC ISLANDS WEST OF 170W
+# USA - " - 9 H BEHIND UTC APR 3 - OCT 30
+# USA HAWAII 10 H BEHIND UTC
+# USA BERING 11 H BEHIND UTC SAMOA, MIDWAY
+
+# From Arthur David Olson (1989-01-21):
+# The above dates are for 1988.
+# Note the "AKST" and "AKDT" abbreviations, the claim that there's
+# no DST in Samoa, and the claim that there is DST in Alaska and the
+# Aleutians.
+
+# From Arthur David Olson (1988-02-13):
+# Legal standard time zone names, from United States Code (1982 Edition and
+# Supplement III), Title 15, Chapter 6, Section 260 and forward. First, names
+# up to 1967-04-01 (when most provisions of the Uniform Time Act of 1966
+# took effect), as explained in sections 263 and 261:
+# (none)
+# United States standard eastern time
+# United States standard mountain time
+# United States standard central time
+# United States standard Pacific time
+# (none)
+# United States standard Alaska time
+# (none)
+# Next, names from 1967-04-01 until 1983-11-30 (the date for
+# public law 98-181):
+# Atlantic standard time
+# eastern standard time
+# central standard time
+# mountain standard time
+# Pacific standard time
+# Yukon standard time
+# Alaska-Hawaii standard time
+# Bering standard time
+# And after 1983-11-30:
+# Atlantic standard time
+# eastern standard time
+# central standard time
+# mountain standard time
+# Pacific standard time
+# Alaska standard time
+# Hawaii-Aleutian standard time
+# Samoa standard time
+# The law doesn't give abbreviations.
+#
+# From Paul Eggert (2000-01-08), following a heads-up from Rives McDow:
+# Public law 106-564 (2000-12-23) introduced the abbreviation
+# "Chamorro Standard Time" for time in Guam and the Northern Marianas.
+# See the file "australasia".
+
+# From Arthur David Olson, 2005-08-09
+# The following was signed into law on 2005-08-08.
+#
+# H.R. 6, Energy Policy Act of 2005, SEC. 110. DAYLIGHT SAVINGS.
+# (a) Amendment- Section 3(a) of the Uniform Time Act of 1966 (15
+# U.S.C. 260a(a)) is amended--
+# (1) by striking `first Sunday of April' and inserting `second
+# Sunday of March'; and
+# (2) by striking `last Sunday of October' and inserting `first
+# Sunday of November'.
+# (b) Effective Date- Subsection (a) shall take effect 1 year after the
+# date of enactment of this Act or March 1, 2007, whichever is later.
+# (c) Report to Congress- Not later than 9 months after the effective
+# date stated in subsection (b), the Secretary shall report to Congress
+# on the impact of this section on energy consumption in the United
+# States.
+# (d) Right to Revert- Congress retains the right to revert the
+# Daylight Saving Time back to the 2005 time schedules once the
+# Department study is complete.
+
+# US eastern time, represented by New York
+
+# Connecticut, Delaware, District of Columbia, most of Florida,
+# Georgia, southeast Indiana (Dearborn and Ohio counties), eastern Kentucky
+# (except America/Kentucky/Louisville below), Maine, Maryland, Massachusetts,
+# New Hampshire, New Jersey, New York, North Carolina, Ohio,
+# Pennsylvania, Rhode Island, South Carolina, eastern Tennessee,
+# Vermont, Virginia, West Virginia
+
+# From Dave Cantor (2004-11-02):
+# Early this summer I had the occasion to visit the Mount Washington
+# Observatory weather station atop (of course!) Mount Washington [, NH]....
+# One of the staff members said that the station was on Eastern Standard Time
+# and didn't change their clocks for Daylight Saving ... so that their
+# reports will always have times which are 5 hours behind UTC.
+
+# From Paul Eggert (2005-08-26):
+# According to today's Huntsville Times
+# <http://www.al.com/news/huntsvilletimes/index.ssf?/base/news/1125047783228320.xml&coll=1>
+# a few towns on Alabama's "eastern border with Georgia, such as Phenix City
+# in Russell County, Lanett in Chambers County and some towns in Lee County,
+# set their watches and clocks on Eastern time." It quotes H.H. "Bubba"
+# Roberts, city administrator in Phenix City. as saying "We are in the Central
+# time zone, but we do go by the Eastern time zone because so many people work
+# in Columbus."
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule NYC 1920 only - Mar lastSun 2:00 1:00 D
+Rule NYC 1920 only - Oct lastSun 2:00 0 S
+Rule NYC 1921 1966 - Apr lastSun 2:00 1:00 D
+Rule NYC 1921 1954 - Sep lastSun 2:00 0 S
+Rule NYC 1955 1966 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:03:58
+ -5:00 US E%sT 1920
+ -5:00 NYC E%sT 1942
+ -5:00 US E%sT 1946
+ -5:00 NYC E%sT 1967
+ -5:00 US E%sT
+
+# US central time, represented by Chicago
+
+# Alabama, Arkansas, Florida panhandle (Bay, Calhoun, Escambia,
+# Gulf, Holmes, Jackson, Okaloosa, Santa Rosa, Walton, and
+# Washington counties), Illinois, western Indiana
+# (Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
+# Vanderburgh, and Warrick counties), Iowa, most of Kansas, western
+# Kentucky, Louisiana, Minnesota, Mississippi, Missouri, eastern
+# Nebraska, eastern North Dakota, Oklahoma, eastern South Dakota,
+# western Tennessee, most of Texas, Wisconsin
+
+# From Larry M. Smith (2006-04-26) re Wisconsin:
+# http://www.legis.state.wi.us/statutes/Stat0175.pdf ...
+# is currently enforced at the 01:00 time of change. Because the local
+# "bar time" in the state corresponds to 02:00, a number of citations
+# are issued for the "sale of class 'B' alcohol after prohibited
+# hours" within the deviated hour of this change every year....
+#
+# From Douglas R. Bomberg (2007-03-12):
+# Wisconsin has enacted (nearly eleventh-hour) legislation to get WI
+# Statue 175 closer in synch with the US Congress' intent....
+# http://www.legis.state.wi.us/2007/data/acts/07Act3.pdf
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Chicago 1920 only - Jun 13 2:00 1:00 D
+Rule Chicago 1920 1921 - Oct lastSun 2:00 0 S
+Rule Chicago 1921 only - Mar lastSun 2:00 1:00 D
+Rule Chicago 1922 1966 - Apr lastSun 2:00 1:00 D
+Rule Chicago 1922 1954 - Sep lastSun 2:00 0 S
+Rule Chicago 1955 1966 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Chicago -5:50:36 - LMT 1883 Nov 18 12:09:24
+ -6:00 US C%sT 1920
+ -6:00 Chicago C%sT 1936 Mar 1 2:00
+ -5:00 - EST 1936 Nov 15 2:00
+ -6:00 Chicago C%sT 1942
+ -6:00 US C%sT 1946
+ -6:00 Chicago C%sT 1967
+ -6:00 US C%sT
+# Oliver County, ND switched from mountain to central time on 1992-10-25.
+Zone America/North_Dakota/Center -6:45:12 - LMT 1883 Nov 18 12:14:48
+ -7:00 US M%sT 1992 Oct 25 02:00
+ -6:00 US C%sT
+# Morton County, ND, switched from mountain to central time on
+# 2003-10-26, except for the area around Mandan which was already central time.
+# See <http://dmses.dot.gov/docimages/p63/135818.pdf>.
+# Officially this switch also included part of Sioux County, and
+# Jones, Mellette, and Todd Counties in South Dakota;
+# but in practice these other counties were already observing central time.
+# See <http://www.epa.gov/fedrgstr/EPA-IMPACT/2003/October/Day-28/i27056.htm>.
+Zone America/North_Dakota/New_Salem -6:45:39 - LMT 1883 Nov 18 12:14:21
+ -7:00 US M%sT 2003 Oct 26 02:00
+ -6:00 US C%sT
+
+# US mountain time, represented by Denver
+#
+# Colorado, far western Kansas, Montana, western
+# Nebraska, Nevada border (Jackpot, Owyhee, and Mountain City),
+# New Mexico, southwestern North Dakota,
+# western South Dakota, far western Texas (El Paso County, Hudspeth County,
+# and Pine Springs and Nickel Creek in Culberson County), Utah, Wyoming
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Denver 1920 1921 - Mar lastSun 2:00 1:00 D
+Rule Denver 1920 only - Oct lastSun 2:00 0 S
+Rule Denver 1921 only - May 22 2:00 0 S
+Rule Denver 1965 1966 - Apr lastSun 2:00 1:00 D
+Rule Denver 1965 1966 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Denver -6:59:56 - LMT 1883 Nov 18 12:00:04
+ -7:00 US M%sT 1920
+ -7:00 Denver M%sT 1942
+ -7:00 US M%sT 1946
+ -7:00 Denver M%sT 1967
+ -7:00 US M%sT
+
+# US Pacific time, represented by Los Angeles
+#
+# California, northern Idaho (Benewah, Bonner, Boundary, Clearwater,
+# Idaho, Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties,
+# and the northern three-quarters of Idaho county),
+# most of Nevada, most of Oregon, and Washington
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule CA 1948 only - Mar 14 2:00 1:00 D
+Rule CA 1949 only - Jan 1 2:00 0 S
+Rule CA 1950 1966 - Apr lastSun 2:00 1:00 D
+Rule CA 1950 1961 - Sep lastSun 2:00 0 S
+Rule CA 1962 1966 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Los_Angeles -7:52:58 - LMT 1883 Nov 18 12:07:02
+ -8:00 US P%sT 1946
+ -8:00 CA P%sT 1967
+ -8:00 US P%sT
+
+# Alaska
+# AK%sT is the modern abbreviation for -9:00 per USNO.
+#
+# From Paul Eggert (2001-05-30):
+# Howse writes that Alaska switched from the Julian to the Gregorian calendar,
+# and from east-of-GMT to west-of-GMT days, when the US bought it from Russia.
+# This was on 1867-10-18, a Friday; the previous day was 1867-10-06 Julian,
+# also a Friday. Include only the time zone part of this transition,
+# ignoring the switch from Julian to Gregorian, since we can't represent
+# the Julian calendar.
+#
+# As far as we know, none of the exact locations mentioned below were
+# permanently inhabited in 1867 by anyone using either calendar.
+# (Yakutat was colonized by the Russians in 1799, but the settlement
+# was destroyed in 1805 by a Yakutat-kon war party.) However, there
+# were nearby inhabitants in some cases and for our purposes perhaps
+# it's best to simply use the official transition.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Juneau 15:02:19 - LMT 1867 Oct 18
+ -8:57:41 - LMT 1900 Aug 20 12:00
+ -8:00 - PST 1942
+ -8:00 US P%sT 1946
+ -8:00 - PST 1969
+ -8:00 US P%sT 1983 Oct 30 2:00
+ -9:00 US Y%sT 1983 Nov 30
+ -9:00 US AK%sT
+Zone America/Yakutat 14:41:05 - LMT 1867 Oct 18
+ -9:18:55 - LMT 1900 Aug 20 12:00
+ -9:00 - YST 1942
+ -9:00 US Y%sT 1946
+ -9:00 - YST 1969
+ -9:00 US Y%sT 1983 Nov 30
+ -9:00 US AK%sT
+Zone America/Anchorage 14:00:24 - LMT 1867 Oct 18
+ -9:59:36 - LMT 1900 Aug 20 12:00
+ -10:00 - CAT 1942
+ -10:00 US CAT/CAWT 1945 Aug 14 23:00u
+ -10:00 US CAT/CAPT 1946 # Peace
+ -10:00 - CAT 1967 Apr
+ -10:00 - AHST 1969
+ -10:00 US AH%sT 1983 Oct 30 2:00
+ -9:00 US Y%sT 1983 Nov 30
+ -9:00 US AK%sT
+Zone America/Nome 12:58:21 - LMT 1867 Oct 18
+ -11:01:38 - LMT 1900 Aug 20 12:00
+ -11:00 - NST 1942
+ -11:00 US N%sT 1946
+ -11:00 - NST 1967 Apr
+ -11:00 - BST 1969
+ -11:00 US B%sT 1983 Oct 30 2:00
+ -9:00 US Y%sT 1983 Nov 30
+ -9:00 US AK%sT
+Zone America/Adak 12:13:21 - LMT 1867 Oct 18
+ -11:46:38 - LMT 1900 Aug 20 12:00
+ -11:00 - NST 1942
+ -11:00 US N%sT 1946
+ -11:00 - NST 1967 Apr
+ -11:00 - BST 1969
+ -11:00 US B%sT 1983 Oct 30 2:00
+ -10:00 US AH%sT 1983 Nov 30
+ -10:00 US HA%sT
+# The following switches don't quite make our 1970 cutoff.
+#
+# Shanks writes that part of southwest Alaska (e.g. Aniak)
+# switched from -11:00 to -10:00 on 1968-09-22 at 02:00,
+# and another part (e.g. Akiak) made the same switch five weeks later.
+#
+# From David Flater (2004-11-09):
+# In e-mail, 2004-11-02, Ray Hudson, historian/liaison to the Unalaska
+# Historic Preservation Commission, provided this information, which
+# suggests that Unalaska deviated from statutory time from early 1967
+# possibly until 1983:
+#
+# Minutes of the Unalaska City Council Meeting, January 10, 1967:
+# "Except for St. Paul and Akutan, Unalaska is the only important
+# location not on Alaska Standard Time. The following resolution was
+# made by William Robinson and seconded by Henry Swanson: Be it
+# resolved that the City of Unalaska hereby goes to Alaska Standard
+# Time as of midnight Friday, January 13, 1967 (1 A.M. Saturday,
+# January 14, Alaska Standard Time.) This resolution was passed with
+# three votes for and one against."
+
+# Hawaii
+#
+# From Arthur David Olson:
+# And then there's Hawaii.
+# DST was observed for one day in 1933;
+# standard time was changed by half an hour in 1947;
+# it's always standard as of 1986.
+#
+# From Paul Eggert:
+# Shanks says the 1933 experiment lasted for three weeks. Go with Shanks.
+#
+Zone Pacific/Honolulu -10:31:26 - LMT 1900 Jan 1 12:00
+ -10:30 - HST 1933 Apr 30 2:00
+ -10:30 1:00 HDT 1933 May 21 2:00
+ -10:30 US H%sT 1947 Jun 8 2:00
+ -10:00 - HST
+
+# Now we turn to US areas that have diverged from the consensus since 1970.
+
+# Arizona mostly uses MST.
+
+# From Paul Eggert (2002-10-20):
+#
+# The information in the rest of this paragraph is derived from the
+# <a href="http://www.dlapr.lib.az.us/links/daylight.htm">
+# Daylight Saving Time web page (2002-01-23)</a> maintained by the
+# Arizona State Library, Archives and Public Records.
+# Between 1944-01-01 and 1944-04-01 the State of Arizona used standard
+# time, but by federal law railroads, airlines, bus lines, military
+# personnel, and some engaged in interstate commerce continued to
+# observe war (i.e., daylight saving) time. The 1944-03-17 Phoenix
+# Gazette says that was the date the law changed, and that 04-01 was
+# the date the state's clocks would change. In 1945 the State of
+# Arizona used standard time all year, again with exceptions only as
+# mandated by federal law. Arizona observed DST in 1967, but Arizona
+# Laws 1968, ch. 183 (effective 1968-03-21) repealed DST.
+#
+# Shanks says the 1944 experiment came to an end on 1944-03-17.
+# Go with the Arizona State Library instead.
+
+Zone America/Phoenix -7:28:18 - LMT 1883 Nov 18 11:31:42
+ -7:00 US M%sT 1944 Jan 1 00:01
+ -7:00 - MST 1944 Apr 1 00:01
+ -7:00 US M%sT 1944 Oct 1 00:01
+ -7:00 - MST 1967
+ -7:00 US M%sT 1968 Mar 21
+ -7:00 - MST
+# From Arthur David Olson (1988-02-13):
+# A writer from the Inter Tribal Council of Arizona, Inc.,
+# notes in private correspondence dated 1987-12-28 that "Presently, only the
+# Navajo Nation participates in the Daylight Saving Time policy, due to its
+# large size and location in three states." (The "only" means that other
+# tribal nations don't use DST.)
+
+Link America/Denver America/Shiprock
+
+# Southern Idaho (Ada, Adams, Bannock, Bear Lake, Bingham, Blaine,
+# Boise, Bonneville, Butte, Camas, Canyon, Caribou, Cassia, Clark,
+# Custer, Elmore, Franklin, Fremont, Gem, Gooding, Jefferson, Jerome,
+# Lemhi, Lincoln, Madison, Minidoka, Oneida, Owyhee, Payette, Power,
+# Teton, Twin Falls, Valley, Washington counties, and the southern
+# quarter of Idaho county) and eastern Oregon (most of Malheur County)
+# switched four weeks late in 1974.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:15:11
+ -8:00 US P%sT 1923 May 13 2:00
+ -7:00 US M%sT 1974
+ -7:00 - MST 1974 Feb 3 2:00
+ -7:00 US M%sT
+
+# Indiana
+#
+# For a map of Indiana's time zone regions, see:
+# <a href="http://www.mccsc.edu/time.html">
+# What time is it in Indiana?
+# </a> (2006-03-01)
+#
+# From Paul Eggert (2007-08-17):
+# Since 1970, most of Indiana has been like America/Indiana/Indianapolis,
+# with the following exceptions:
+#
+# - Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
+# Vandenburgh, and Warrick counties have been like America/Chicago.
+#
+# - Dearborn and Ohio counties have been like America/New_York.
+#
+# - Clark, Floyd, and Harrison counties have been like
+# America/Kentucky/Louisville.
+#
+# - Crawford, Daviess, Dubois, Knox, Martin, Perry, Pike, Pulaski, Starke,
+# and Switzerland counties have their own time zone histories as noted below.
+#
+# Shanks partitioned Indiana into 345 regions, each with its own time history,
+# and wrote ``Even newspaper reports present contradictory information.''
+# Those Hoosiers! Such a flighty and changeable people!
+# Fortunately, most of the complexity occurred before our cutoff date of 1970.
+#
+# Other than Indianapolis, the Indiana place names are so nondescript
+# that they would be ambiguous if we left them at the `America' level.
+# So we reluctantly put them all in a subdirectory `America/Indiana'.
+
+# From Paul Eggert (2005-08-16):
+# http://www.mccsc.edu/time.html says that Indiana will use DST starting 2006.
+
+# From Nathan Stratton Treadway (2006-03-30):
+# http://www.dot.gov/affairs/dot0406.htm [3705 B]
+# From Deborah Goldsmith (2006-01-18):
+# http://dmses.dot.gov/docimages/pdf95/382329_web.pdf [2.9 MB]
+# From Paul Eggert (2006-01-20):
+# It says "DOT is relocating the time zone boundary in Indiana to move Starke,
+# Pulaski, Knox, Daviess, Martin, Pike, Dubois, and Perry Counties from the
+# Eastern Time Zone to the Central Time Zone.... The effective date of
+# this rule is 2:OO a.m. EST Sunday, April 2, 2006, which is the
+# changeover date from standard time to Daylight Saving Time."
+# Strictly speaking, this means the affected counties will change their
+# clocks twice that night, but this obviously is in error. The intent
+# is that 01:59:59 EST be followed by 02:00:00 CDT.
+
+# From Gwillim Law (2007-02-10):
+# The Associated Press has been reporting that Pulaski County, Indiana is
+# going to switch from Central to Eastern Time on March 11, 2007....
+# http://www.indystar.com/apps/pbcs.dll/article?AID=/20070207/LOCAL190108/702070524/0/LOCAL
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Indianapolis 1941 only - Jun 22 2:00 1:00 D
+Rule Indianapolis 1941 1954 - Sep lastSun 2:00 0 S
+Rule Indianapolis 1946 1954 - Apr lastSun 2:00 1:00 D
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Indianapolis -5:44:38 - LMT 1883 Nov 18 12:15:22
+ -6:00 US C%sT 1920
+ -6:00 Indianapolis C%sT 1942
+ -6:00 US C%sT 1946
+ -6:00 Indianapolis C%sT 1955 Apr 24 2:00
+ -5:00 - EST 1957 Sep 29 2:00
+ -6:00 - CST 1958 Apr 27 2:00
+ -5:00 - EST 1969
+ -5:00 US E%sT 1971
+ -5:00 - EST 2006
+ -5:00 US E%sT
+#
+# Eastern Crawford County, Indiana, left its clocks alone in 1974,
+# as well as from 1976 through 2005.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Marengo 1951 only - Apr lastSun 2:00 1:00 D
+Rule Marengo 1951 only - Sep lastSun 2:00 0 S
+Rule Marengo 1954 1960 - Apr lastSun 2:00 1:00 D
+Rule Marengo 1954 1960 - Sep lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Marengo -5:45:23 - LMT 1883 Nov 18 12:14:37
+ -6:00 US C%sT 1951
+ -6:00 Marengo C%sT 1961 Apr 30 2:00
+ -5:00 - EST 1969
+ -5:00 US E%sT 1974 Jan 6 2:00
+ -6:00 1:00 CDT 1974 Oct 27 2:00
+ -5:00 US E%sT 1976
+ -5:00 - EST 2006
+ -5:00 US E%sT
+#
+# Daviess, Dubois, Knox, and Martin Counties, Indiana,
+# switched from eastern to central time in April 2006, then switched back
+# in November 2007.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Vincennes 1946 only - Apr lastSun 2:00 1:00 D
+Rule Vincennes 1946 only - Sep lastSun 2:00 0 S
+Rule Vincennes 1953 1954 - Apr lastSun 2:00 1:00 D
+Rule Vincennes 1953 1959 - Sep lastSun 2:00 0 S
+Rule Vincennes 1955 only - May 1 0:00 1:00 D
+Rule Vincennes 1956 1963 - Apr lastSun 2:00 1:00 D
+Rule Vincennes 1960 only - Oct lastSun 2:00 0 S
+Rule Vincennes 1961 only - Sep lastSun 2:00 0 S
+Rule Vincennes 1962 1963 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Vincennes -5:50:07 - LMT 1883 Nov 18 12:09:53
+ -6:00 US C%sT 1946
+ -6:00 Vincennes C%sT 1964 Apr 26 2:00
+ -5:00 - EST 1969
+ -5:00 US E%sT 1971
+ -5:00 - EST 2006 Apr 2 2:00
+ -6:00 US C%sT 2007 Nov 4 2:00
+ -5:00 US E%sT
+#
+# Perry County, Indiana, switched from eastern to central time in April 2006.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Perry 1946 only - Apr lastSun 2:00 1:00 D
+Rule Perry 1946 only - Sep lastSun 2:00 0 S
+Rule Perry 1953 1954 - Apr lastSun 2:00 1:00 D
+Rule Perry 1953 1959 - Sep lastSun 2:00 0 S
+Rule Perry 1955 only - May 1 0:00 1:00 D
+Rule Perry 1956 1963 - Apr lastSun 2:00 1:00 D
+Rule Perry 1960 only - Oct lastSun 2:00 0 S
+Rule Perry 1961 only - Sep lastSun 2:00 0 S
+Rule Perry 1962 1963 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Tell_City -5:47:03 - LMT 1883 Nov 18 12:12:57
+ -6:00 US C%sT 1946
+ -6:00 Perry C%sT 1964 Apr 26 2:00
+ -5:00 - EST 1969
+ -5:00 US E%sT 1971
+ -5:00 - EST 2006 Apr 2 2:00
+ -6:00 US C%sT
+#
+# Pike County, Indiana moved from central to eastern time in 1977,
+# then switched back in 2006, then switched back again in 2007.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Pike 1955 only - May 1 0:00 1:00 D
+Rule Pike 1955 1960 - Sep lastSun 2:00 0 S
+Rule Pike 1956 1964 - Apr lastSun 2:00 1:00 D
+Rule Pike 1961 1964 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Petersburg -5:49:07 - LMT 1883 Nov 18 12:10:53
+ -6:00 US C%sT 1955
+ -6:00 Pike C%sT 1965 Apr 25 2:00
+ -5:00 - EST 1966 Oct 30 2:00
+ -6:00 US C%sT 1977 Oct 30 2:00
+ -5:00 - EST 2006 Apr 2 2:00
+ -6:00 US C%sT 2007 Nov 4 2:00
+ -5:00 US E%sT
+#
+# Starke County, Indiana moved from central to eastern time in 1991,
+# then switched back in 2006.
+# From Arthur David Olson (1991-10-28):
+# An article on page A3 of the Sunday, 1991-10-27 Washington Post
+# notes that Starke County switched from Central time to Eastern time as of
+# 1991-10-27.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Starke 1947 1961 - Apr lastSun 2:00 1:00 D
+Rule Starke 1947 1954 - Sep lastSun 2:00 0 S
+Rule Starke 1955 1956 - Oct lastSun 2:00 0 S
+Rule Starke 1957 1958 - Sep lastSun 2:00 0 S
+Rule Starke 1959 1961 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Knox -5:46:30 - LMT 1883 Nov 18 12:13:30
+ -6:00 US C%sT 1947
+ -6:00 Starke C%sT 1962 Apr 29 2:00
+ -5:00 - EST 1963 Oct 27 2:00
+ -6:00 US C%sT 1991 Oct 27 2:00
+ -5:00 - EST 2006 Apr 2 2:00
+ -6:00 US C%sT
+#
+# Pulaski County, Indiana, switched from eastern to central time in
+# April 2006 and then switched back in March 2007.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Pulaski 1946 1960 - Apr lastSun 2:00 1:00 D
+Rule Pulaski 1946 1954 - Sep lastSun 2:00 0 S
+Rule Pulaski 1955 1956 - Oct lastSun 2:00 0 S
+Rule Pulaski 1957 1960 - Sep lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Winamac -5:46:25 - LMT 1883 Nov 18 12:13:35
+ -6:00 US C%sT 1946
+ -6:00 Pulaski C%sT 1961 Apr 30 2:00
+ -5:00 - EST 1969
+ -5:00 US E%sT 1971
+ -5:00 - EST 2006 Apr 2 2:00
+ -6:00 US C%sT 2007 Mar 11 2:00
+ -5:00 US E%sT
+#
+# Switzerland County, Indiana, did not observe DST from 1973 through 2005.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Vevay -5:40:16 - LMT 1883 Nov 18 12:19:44
+ -6:00 US C%sT 1954 Apr 25 2:00
+ -5:00 - EST 1969
+ -5:00 US E%sT 1973
+ -5:00 - EST 2006
+ -5:00 US E%sT
+
+# Part of Kentucky left its clocks alone in 1974.
+# This also includes Clark, Floyd, and Harrison counties in Indiana.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Louisville 1921 only - May 1 2:00 1:00 D
+Rule Louisville 1921 only - Sep 1 2:00 0 S
+Rule Louisville 1941 1961 - Apr lastSun 2:00 1:00 D
+Rule Louisville 1941 only - Sep lastSun 2:00 0 S
+Rule Louisville 1946 only - Jun 2 2:00 0 S
+Rule Louisville 1950 1955 - Sep lastSun 2:00 0 S
+Rule Louisville 1956 1960 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Kentucky/Louisville -5:43:02 - LMT 1883 Nov 18 12:16:58
+ -6:00 US C%sT 1921
+ -6:00 Louisville C%sT 1942
+ -6:00 US C%sT 1946
+ -6:00 Louisville C%sT 1961 Jul 23 2:00
+ -5:00 - EST 1968
+ -5:00 US E%sT 1974 Jan 6 2:00
+ -6:00 1:00 CDT 1974 Oct 27 2:00
+ -5:00 US E%sT
+#
+# Wayne County, Kentucky
+#
+# From
+# <a href="http://www.lake-cumberland.com/life/archive/news990129time.shtml">
+# Lake Cumberland LIFE
+# </a> (1999-01-29) via WKYM-101.7:
+# Clinton County has joined Wayne County in asking the DoT to change from
+# the Central to the Eastern time zone.... The Wayne County government made
+# the same request in December. And while Russell County officials have not
+# taken action, the majority of respondents to a poll conducted there in
+# August indicated they would like to change to "fast time" also.
+# The three Lake Cumberland counties are the farthest east of any U.S.
+# location in the Central time zone.
+#
+# From Rich Wales (2000-08-29):
+# After prolonged debate, and despite continuing deep differences of opinion,
+# Wayne County (central Kentucky) is switching from Central (-0600) to Eastern
+# (-0500) time. They won't "fall back" this year. See Sara Shipley,
+# The difference an hour makes, Nando Times (2000-08-29 15:33 -0400).
+#
+# From Paul Eggert (2001-07-16):
+# The final rule was published in the
+# <a href="http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=2000_register&docid=fr17au00-22">
+# Federal Register 65, 160 (2000-08-17), page 50154-50158.
+# </a>
+#
+Zone America/Kentucky/Monticello -5:39:24 - LMT 1883 Nov 18 12:20:36
+ -6:00 US C%sT 1946
+ -6:00 - CST 1968
+ -6:00 US C%sT 2000 Oct 29 2:00
+ -5:00 US E%sT
+
+
+# From Rives McDow (2000-08-30):
+# Here ... are all the changes in the US since 1985.
+# Kearny County, KS (put all of county on central;
+# previously split between MST and CST) ... 1990-10
+# Starke County, IN (from CST to EST) ... 1991-10
+# Oliver County, ND (from MST to CST) ... 1992-10
+# West Wendover, NV (from PST TO MST) ... 1999-10
+# Wayne County, KY (from CST to EST) ... 2000-10
+#
+# From Paul Eggert (2001-07-17):
+# We don't know where the line used to be within Kearny County, KS,
+# so omit that change for now.
+# See America/Indiana/Knox for the Starke County, IN change.
+# See America/North_Dakota/Center for the Oliver County, ND change.
+# West Wendover, NV officially switched from Pacific to mountain time on
+# 1999-10-31. See the
+# <a href="http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=1999_register&docid=fr21oc99-15">
+# Federal Register 64, 203 (1999-10-21), page 56705-56707.
+# </a>
+# However, the Federal Register says that West Wendover already operated
+# on mountain time, and the rule merely made this official;
+# hence a separate tz entry is not needed.
+
+# Michigan
+#
+# From Bob Devine (1988-01-28):
+# Michigan didn't observe DST from 1968 to 1973.
+#
+# From Paul Eggert (1999-03-31):
+# Shanks writes that Michigan started using standard time on 1885-09-18,
+# but Howse writes (pp 124-125, referring to Popular Astronomy, 1901-01)
+# that Detroit kept
+#
+# local time until 1900 when the City Council decreed that clocks should
+# be put back twenty-eight minutes to Central Standard Time. Half the
+# city obeyed, half refused. After considerable debate, the decision
+# was rescinded and the city reverted to Sun time. A derisive offer to
+# erect a sundial in front of the city hall was referred to the
+# Committee on Sewers. Then, in 1905, Central time was adopted
+# by city vote.
+#
+# This story is too entertaining to be false, so go with Howse over Shanks.
+#
+# From Paul Eggert (2001-03-06):
+# Garland (1927) writes ``Cleveland and Detroit advanced their clocks
+# one hour in 1914.'' This change is not in Shanks. We have no more
+# info, so omit this for now.
+#
+# Most of Michigan observed DST from 1973 on, but was a bit late in 1975.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Detroit 1948 only - Apr lastSun 2:00 1:00 D
+Rule Detroit 1948 only - Sep lastSun 2:00 0 S
+Rule Detroit 1967 only - Jun 14 2:00 1:00 D
+Rule Detroit 1967 only - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Detroit -5:32:11 - LMT 1905
+ -6:00 - CST 1915 May 15 2:00
+ -5:00 - EST 1942
+ -5:00 US E%sT 1946
+ -5:00 Detroit E%sT 1973
+ -5:00 US E%sT 1975
+ -5:00 - EST 1975 Apr 27 2:00
+ -5:00 US E%sT
+#
+# Dickinson, Gogebic, Iron, and Menominee Counties, Michigan,
+# switched from EST to CST/CDT in 1973.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Menominee 1946 only - Apr lastSun 2:00 1:00 D
+Rule Menominee 1946 only - Sep lastSun 2:00 0 S
+Rule Menominee 1966 only - Apr lastSun 2:00 1:00 D
+Rule Menominee 1966 only - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Menominee -5:50:27 - LMT 1885 Sep 18 12:00
+ -6:00 US C%sT 1946
+ -6:00 Menominee C%sT 1969 Apr 27 2:00
+ -5:00 - EST 1973 Apr 29 2:00
+ -6:00 US C%sT
+
+# Navassa
+# administered by the US Fish and Wildlife Service
+# claimed by US under the provisions of the 1856 Guano Islands Act
+# also claimed by Haiti
+# occupied 1857/1900 by the Navassa Phosphate Co
+# US lighthouse 1917/1996-09
+# currently uninhabited
+# see Mark Fineman, ``An Isle Rich in Guano and Discord'',
+# _Los Angeles Times_ (1998-11-10), A1, A10; it cites
+# Jimmy Skaggs, _The Great Guano Rush_ (1994).
+
+################################################################################
+
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually. Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Other sources occasionally used include:
+#
+# Edward W. Whitman, World Time Differences,
+# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
+# which I found in the UCLA library.
+#
+# <a href="http://www.pettswoodvillage.co.uk/Daylight_Savings_William_Willett.pdf">
+# William Willett, The Waste of Daylight, 19th edition
+# </a> (1914-03)
+#
+# See the `europe' file for Greenland.
+
+# Canada
+
+# From Alain LaBont<e'> (1994-11-14):
+# I post here the time zone abbreviations standardized in Canada
+# for both English and French in the CAN/CSA-Z234.4-89 standard....
+#
+# UTC Standard time Daylight savings time
+# offset French English French English
+# -2:30 - - HAT NDT
+# -3 - - HAA ADT
+# -3:30 HNT NST - -
+# -4 HNA AST HAE EDT
+# -5 HNE EST HAC CDT
+# -6 HNC CST HAR MDT
+# -7 HNR MST HAP PDT
+# -8 HNP PST HAY YDT
+# -9 HNY YST - -
+#
+# HN: Heure Normale ST: Standard Time
+# HA: Heure Avanc<e'>e DT: Daylight saving Time
+#
+# A: de l'Atlantique Atlantic
+# C: du Centre Central
+# E: de l'Est Eastern
+# M: Mountain
+# N: Newfoundland
+# P: du Pacifique Pacific
+# R: des Rocheuses
+# T: de Terre-Neuve
+# Y: du Yukon Yukon
+#
+# From Paul Eggert (1994-11-22):
+# Alas, this sort of thing must be handled by localization software.
+
+# Unless otherwise specified, the data for Canada are all from Shanks
+# & Pottenger.
+
+# From Chris Walton (2006-04-01, 2006-04-25, 2006-06-26, 2007-01-31,
+# 2007-03-01):
+# The British Columbia government announced yesterday that it will
+# adjust daylight savings next year to align with changes in the
+# U.S. and the rest of Canada....
+# http://www2.news.gov.bc.ca/news_releases_2005-2009/2006AG0014-000330.htm
+# ...
+# Nova Scotia
+# Daylight saving time will be extended by four weeks starting in 2007....
+# http://www.gov.ns.ca/just/regulations/rg2/2006/ma1206.pdf
+#
+# [For New Brunswick] the new legislation dictates that the time change is to
+# be done at 02:00 instead of 00:01.
+# http://www.gnb.ca/0062/acts/BBA-2006/Chap-19.pdf
+# ...
+# Manitoba has traditionally changed the clock every fall at 03:00.
+# As of 2006, the transition is to take place one hour earlier at 02:00.
+# http://web2.gov.mb.ca/laws/statutes/ccsm/o030e.php
+# ...
+# [Alberta, Ontario, Quebec] will follow US rules.
+# http://www.qp.gov.ab.ca/documents/spring/CH03_06.CFM
+# http://www.e-laws.gov.on.ca/DBLaws/Source/Regs/English/2006/R06111_e.htm
+# http://www2.publicationsduquebec.gouv.qc.ca/dynamicSearch/telecharge.php?type=5&file=2006C39A.PDF
+# ...
+# P.E.I. will follow US rules....
+# http://www.assembly.pe.ca/bills/pdf_chapter/62/3/chapter-41.pdf
+# ...
+# Province of Newfoundland and Labrador....
+# http://www.hoa.gov.nl.ca/hoa/bills/Bill0634.htm
+# ...
+# Yukon
+# http://www.gov.yk.ca/legislation/regs/oic2006_127.pdf
+# ...
+# N.W.T. will follow US rules. Whoever maintains the government web site
+# does not seem to believe in bookmarks. To see the news release, click the
+# following link and search for "Daylight Savings Time Change". Press the
+# "Daylight Savings Time Change" link; it will fire off a popup using
+# JavaScript.
+# http://www.exec.gov.nt.ca/currentnews/currentPR.asp?mode=archive
+# ...
+# Nunavut
+# An amendment to the Interpretation Act was registered on February 19/2007....
+# http://action.attavik.ca/home/justice-gn/attach/2007/gaz02part2.pdf
+
+# From Paul Eggert (2006-04-25):
+# H. David Matthews and Mary Vincent's map
+# <a href="http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp">
+# "It's about TIME", _Canadian Geographic_ (September-October 1998)
+# </a> contains detailed boundaries for regions observing nonstandard
+# time and daylight saving time arrangements in Canada circa 1998.
+#
+# INMS, the Institute for National Measurement Standards in Ottawa, has <a
+# href="http://inms-ienm.nrc-cnrc.gc.ca/en/time_services/daylight_saving_e.php">
+# information about standard and daylight saving time zones in Canada.
+# </a> (updated periodically).
+# Its unofficial information is often taken from Matthews and Vincent.
+
+# From Paul Eggert (2006-06-27):
+# For now, assume all of DST-observing Canada will fall into line with the
+# new US DST rules,
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Canada 1918 only - Apr 14 2:00 1:00 D
+Rule Canada 1918 only - Oct 31 2:00 0 S
+Rule Canada 1942 only - Feb 9 2:00 1:00 W # War
+Rule Canada 1945 only - Aug 14 23:00u 1:00 P # Peace
+Rule Canada 1945 only - Sep 30 2:00 0 S
+Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
+Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
+Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
+Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
+Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
+
+
+# Newfoundland and Labrador
+
+# From Paul Eggert (2000-10-02):
+# Matthews and Vincent (1998) write that Labrador should use NST/NDT,
+# but the only part of Labrador that follows the rules is the
+# southeast corner, including Port Hope Simpson and Mary's Harbour,
+# but excluding, say, Black Tickle.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule StJohns 1917 only - Apr 8 2:00 1:00 D
+Rule StJohns 1917 only - Sep 17 2:00 0 S
+# Whitman gives 1919 Apr 5 and 1920 Apr 5; go with Shanks & Pottenger.
+Rule StJohns 1919 only - May 5 23:00 1:00 D
+Rule StJohns 1919 only - Aug 12 23:00 0 S
+# For 1931-1935 Whitman gives Apr same date; go with Shanks & Pottenger.
+Rule StJohns 1920 1935 - May Sun>=1 23:00 1:00 D
+Rule StJohns 1920 1935 - Oct lastSun 23:00 0 S
+# For 1936-1941 Whitman gives May Sun>=8 and Oct Sun>=1; go with Shanks &
+# Pottenger.
+Rule StJohns 1936 1941 - May Mon>=9 0:00 1:00 D
+Rule StJohns 1936 1941 - Oct Mon>=2 0:00 0 S
+# Whitman gives the following transitions:
+# 1942 03-01/12-31, 1943 05-30/09-05, 1944 07-10/09-02, 1945 01-01/10-07
+# but go with Shanks & Pottenger and assume they used Canadian rules.
+# For 1946-9 Whitman gives May 5,4,9,1 - Oct 1,5,3,2, and for 1950 he gives
+# Apr 30 - Sep 24; go with Shanks & Pottenger.
+Rule StJohns 1946 1950 - May Sun>=8 2:00 1:00 D
+Rule StJohns 1946 1950 - Oct Sun>=2 2:00 0 S
+Rule StJohns 1951 1986 - Apr lastSun 2:00 1:00 D
+Rule StJohns 1951 1959 - Sep lastSun 2:00 0 S
+Rule StJohns 1960 1986 - Oct lastSun 2:00 0 S
+# From Paul Eggert (2000-10-02):
+# INMS (2000-09-12) says that, since 1988 at least, Newfoundland switches
+# at 00:01 local time. For now, assume it started in 1987.
+Rule StJohns 1987 only - Apr Sun>=1 0:01 1:00 D
+Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S
+Rule StJohns 1988 only - Apr Sun>=1 0:01 2:00 DD
+Rule StJohns 1989 2006 - Apr Sun>=1 0:01 1:00 D
+Rule StJohns 2007 max - Mar Sun>=8 0:01 1:00 D
+Rule StJohns 2007 max - Nov Sun>=1 0:01 0 S
+#
+# St John's has an apostrophe, but Posix file names can't have apostrophes.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/St_Johns -3:30:52 - LMT 1884
+ -3:30:52 StJohns N%sT 1918
+ -3:30:52 Canada N%sT 1919
+ -3:30:52 StJohns N%sT 1935 Mar 30
+ -3:30 StJohns N%sT 1942 May 11
+ -3:30 Canada N%sT 1946
+ -3:30 StJohns N%sT
+
+# most of east Labrador
+
+# The name `Happy Valley-Goose Bay' is too long; use `Goose Bay'.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Goose_Bay -4:01:40 - LMT 1884 # Happy Valley-Goose Bay
+ -3:30:52 - NST 1918
+ -3:30:52 Canada N%sT 1919
+ -3:30:52 - NST 1935 Mar 30
+ -3:30 - NST 1936
+ -3:30 StJohns N%sT 1942 May 11
+ -3:30 Canada N%sT 1946
+ -3:30 StJohns N%sT 1966 Mar 15 2:00
+ -4:00 StJohns A%sT
+
+
+# west Labrador, Nova Scotia, Prince Edward I
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that since 1970 most of this region has been like
+# Halifax. Many locales did not observe peacetime DST until 1972;
+# Glace Bay, NS is the largest that we know of.
+# Shanks & Pottenger also write that Liverpool, NS was the only town
+# in Canada to observe DST in 1971 but not 1970; for now we'll assume
+# this is a typo.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Halifax 1916 only - Apr 1 0:00 1:00 D
+Rule Halifax 1916 only - Oct 1 0:00 0 S
+Rule Halifax 1920 only - May 9 0:00 1:00 D
+Rule Halifax 1920 only - Aug 29 0:00 0 S
+Rule Halifax 1921 only - May 6 0:00 1:00 D
+Rule Halifax 1921 1922 - Sep 5 0:00 0 S
+Rule Halifax 1922 only - Apr 30 0:00 1:00 D
+Rule Halifax 1923 1925 - May Sun>=1 0:00 1:00 D
+Rule Halifax 1923 only - Sep 4 0:00 0 S
+Rule Halifax 1924 only - Sep 15 0:00 0 S
+Rule Halifax 1925 only - Sep 28 0:00 0 S
+Rule Halifax 1926 only - May 16 0:00 1:00 D
+Rule Halifax 1926 only - Sep 13 0:00 0 S
+Rule Halifax 1927 only - May 1 0:00 1:00 D
+Rule Halifax 1927 only - Sep 26 0:00 0 S
+Rule Halifax 1928 1931 - May Sun>=8 0:00 1:00 D
+Rule Halifax 1928 only - Sep 9 0:00 0 S
+Rule Halifax 1929 only - Sep 3 0:00 0 S
+Rule Halifax 1930 only - Sep 15 0:00 0 S
+Rule Halifax 1931 1932 - Sep Mon>=24 0:00 0 S
+Rule Halifax 1932 only - May 1 0:00 1:00 D
+Rule Halifax 1933 only - Apr 30 0:00 1:00 D
+Rule Halifax 1933 only - Oct 2 0:00 0 S
+Rule Halifax 1934 only - May 20 0:00 1:00 D
+Rule Halifax 1934 only - Sep 16 0:00 0 S
+Rule Halifax 1935 only - Jun 2 0:00 1:00 D
+Rule Halifax 1935 only - Sep 30 0:00 0 S
+Rule Halifax 1936 only - Jun 1 0:00 1:00 D
+Rule Halifax 1936 only - Sep 14 0:00 0 S
+Rule Halifax 1937 1938 - May Sun>=1 0:00 1:00 D
+Rule Halifax 1937 1941 - Sep Mon>=24 0:00 0 S
+Rule Halifax 1939 only - May 28 0:00 1:00 D
+Rule Halifax 1940 1941 - May Sun>=1 0:00 1:00 D
+Rule Halifax 1946 1949 - Apr lastSun 2:00 1:00 D
+Rule Halifax 1946 1949 - Sep lastSun 2:00 0 S
+Rule Halifax 1951 1954 - Apr lastSun 2:00 1:00 D
+Rule Halifax 1951 1954 - Sep lastSun 2:00 0 S
+Rule Halifax 1956 1959 - Apr lastSun 2:00 1:00 D
+Rule Halifax 1956 1959 - Sep lastSun 2:00 0 S
+Rule Halifax 1962 1973 - Apr lastSun 2:00 1:00 D
+Rule Halifax 1962 1973 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Halifax -4:14:24 - LMT 1902 Jun 15
+ -4:00 Halifax A%sT 1918
+ -4:00 Canada A%sT 1919
+ -4:00 Halifax A%sT 1942 Feb 9 2:00s
+ -4:00 Canada A%sT 1946
+ -4:00 Halifax A%sT 1974
+ -4:00 Canada A%sT
+Zone America/Glace_Bay -3:59:48 - LMT 1902 Jun 15
+ -4:00 Canada A%sT 1953
+ -4:00 Halifax A%sT 1954
+ -4:00 - AST 1972
+ -4:00 Halifax A%sT 1974
+ -4:00 Canada A%sT
+
+# New Brunswick
+
+# From Paul Eggert (2007-01-31):
+# The Time Definition Act <http://www.gnb.ca/0062/PDF-acts/t-06.pdf>
+# says they changed at 00:01 through 2006, and
+# <http://www.canlii.org/nb/laws/sta/t-6/20030127/whole.html> makes it
+# clear that this was the case since at least 1993.
+# For now, assume it started in 1993.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Moncton 1933 1935 - Jun Sun>=8 1:00 1:00 D
+Rule Moncton 1933 1935 - Sep Sun>=8 1:00 0 S
+Rule Moncton 1936 1938 - Jun Sun>=1 1:00 1:00 D
+Rule Moncton 1936 1938 - Sep Sun>=1 1:00 0 S
+Rule Moncton 1939 only - May 27 1:00 1:00 D
+Rule Moncton 1939 1941 - Sep Sat>=21 1:00 0 S
+Rule Moncton 1940 only - May 19 1:00 1:00 D
+Rule Moncton 1941 only - May 4 1:00 1:00 D
+Rule Moncton 1946 1972 - Apr lastSun 2:00 1:00 D
+Rule Moncton 1946 1956 - Sep lastSun 2:00 0 S
+Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
+Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
+Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Moncton -4:19:08 - LMT 1883 Dec 9
+ -5:00 - EST 1902 Jun 15
+ -4:00 Canada A%sT 1933
+ -4:00 Moncton A%sT 1942
+ -4:00 Canada A%sT 1946
+ -4:00 Moncton A%sT 1973
+ -4:00 Canada A%sT 1993
+ -4:00 Moncton A%sT 2007
+ -4:00 Canada A%sT
+
+# Quebec
+
+# From Paul Eggert (2006-07-09):
+# Shanks & Pottenger write that since 1970 most of Quebec has been
+# like Montreal.
+
+# From Paul Eggert (2006-06-27):
+# Matthews and Vincent (1998) also write that Quebec east of the -63
+# meridian is supposed to observe AST, but residents as far east as
+# Natashquan use EST/EDT, and residents east of Natashquan use AST.
+# In "Official time in Quebec" the Quebec department of justice writes in
+# http://www.justice.gouv.qc.ca/english/publications/generale/temps-regl-1-a.htm
+# that "The residents of the Municipality of the
+# Cote-Nord-du-Golfe-Saint-Laurent and the municipalities of Saint-Augustin,
+# Bonne-Esperance and Blanc-Sablon apply the Official Time Act as it is
+# written and use Atlantic standard time all year round. The same applies to
+# the residents of the Native facilities along the lower North Shore."
+# <http://www.assnat.qc.ca/eng/37legislature2/Projets-loi/Publics/06-a002.htm>
+# says this common practice was codified into law as of 2007.
+# For lack of better info, guess this practice began around 1970, contra to
+# Shanks & Pottenger who have this region observing AST/ADT.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Mont 1917 only - Mar 25 2:00 1:00 D
+Rule Mont 1917 only - Apr 24 0:00 0 S
+Rule Mont 1919 only - Mar 31 2:30 1:00 D
+Rule Mont 1919 only - Oct 25 2:30 0 S
+Rule Mont 1920 only - May 2 2:30 1:00 D
+Rule Mont 1920 1922 - Oct Sun>=1 2:30 0 S
+Rule Mont 1921 only - May 1 2:00 1:00 D
+Rule Mont 1922 only - Apr 30 2:00 1:00 D
+Rule Mont 1924 only - May 17 2:00 1:00 D
+Rule Mont 1924 1926 - Sep lastSun 2:30 0 S
+Rule Mont 1925 1926 - May Sun>=1 2:00 1:00 D
+# The 1927-to-1937 rules can be expressed more simply as
+# Rule Mont 1927 1937 - Apr lastSat 24:00 1:00 D
+# Rule Mont 1927 1937 - Sep lastSat 24:00 0 S
+# The rules below avoid use of 24:00
+# (which pre-1998 versions of zic cannot handle).
+Rule Mont 1927 only - May 1 0:00 1:00 D
+Rule Mont 1927 1932 - Sep lastSun 0:00 0 S
+Rule Mont 1928 1931 - Apr lastSun 0:00 1:00 D
+Rule Mont 1932 only - May 1 0:00 1:00 D
+Rule Mont 1933 1940 - Apr lastSun 0:00 1:00 D
+Rule Mont 1933 only - Oct 1 0:00 0 S
+Rule Mont 1934 1939 - Sep lastSun 0:00 0 S
+Rule Mont 1946 1973 - Apr lastSun 2:00 1:00 D
+Rule Mont 1945 1948 - Sep lastSun 2:00 0 S
+Rule Mont 1949 1950 - Oct lastSun 2:00 0 S
+Rule Mont 1951 1956 - Sep lastSun 2:00 0 S
+Rule Mont 1957 1973 - Oct lastSun 2:00 0 S
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Blanc-Sablon -3:48:28 - LMT 1884
+ -4:00 Canada A%sT 1970
+ -4:00 - AST
+Zone America/Montreal -4:54:16 - LMT 1884
+ -5:00 Mont E%sT 1918
+ -5:00 Canada E%sT 1919
+ -5:00 Mont E%sT 1942 Feb 9 2:00s
+ -5:00 Canada E%sT 1946
+ -5:00 Mont E%sT 1974
+ -5:00 Canada E%sT
+
+
+# Ontario
+
+# From Paul Eggert (2006-07-09):
+# Shanks & Pottenger write that since 1970 most of Ontario has been like
+# Toronto.
+# Thunder Bay skipped DST in 1973.
+# Many smaller locales did not observe peacetime DST until 1974;
+# Nipigon (EST) and Rainy River (CST) are the largest that we know of.
+# Far west Ontario is like Winnipeg; far east Quebec is like Halifax.
+
+# From Mark Brader (2003-07-26):
+# [According to the Toronto Star] Orillia, Ontario, adopted DST
+# effective Saturday, 1912-06-22, 22:00; the article mentions that
+# Port Arthur (now part of Thunder Bay, Ontario) as well as Moose Jaw
+# have already done so. In Orillia DST was to run until Saturday,
+# 1912-08-31 (no time mentioned), but it was met with considerable
+# hostility from certain segments of the public, and was revoked after
+# only two weeks -- I copied it as Saturday, 1912-07-07, 22:00, but
+# presumably that should be -07-06. (1912-06-19, -07-12; also letters
+# earlier in June).
+#
+# Kenora, Ontario, was to abandon DST on 1914-06-01 (-05-21).
+
+# From Paul Eggert (1997-10-17):
+# Mark Brader writes that an article in the 1997-10-14 Toronto Star
+# says that Atikokan, Ontario currently does not observe DST,
+# but will vote on 11-10 whether to use EST/EDT.
+# He also writes that the
+# <a href="http://www.gov.on.ca/MBS/english/publications/statregs/conttext.html">
+# Ontario Time Act (1990, Chapter T.9)
+# </a>
+# says that Ontario east of 90W uses EST/EDT, and west of 90W uses CST/CDT.
+# Officially Atikokan is therefore on CST/CDT, and most likely this report
+# concerns a non-official time observed as a matter of local practice.
+#
+# From Paul Eggert (2000-10-02):
+# Matthews and Vincent (1998) write that Atikokan, Pickle Lake, and
+# New Osnaburgh observe CST all year, that Big Trout Lake observes
+# CST/CDT, and that Upsala and Shebandowan observe EST/EDT, all in
+# violation of the official Ontario rules.
+#
+# From Paul Eggert (2006-07-09):
+# Chris Walton (2006-07-06) mentioned an article by Stephanie MacLellan in the
+# 2005-07-21 Chronicle-Journal, which said:
+#
+# The clocks in Atikokan stay set on standard time year-round.
+# This means they spend about half the time on central time and
+# the other half on eastern time.
+#
+# For the most part, the system works, Mayor Dennis Brown said.
+#
+# "The majority of businesses in Atikokan deal more with Eastern
+# Canada, but there are some that deal with Western Canada," he
+# said. "I don't see any changes happening here."
+#
+# Walton also writes "Supposedly Pickle Lake and Mishkeegogamang
+# [New Osnaburgh] follow the same practice."
+
+# From Garry McKinnon (2006-07-14) via Chris Walton:
+# I chatted with a member of my board who has an outstanding memory
+# and a long history in Atikokan (and in the telecom industry) and he
+# can say for certain that Atikokan has been practicing the current
+# time keeping since 1952, at least.
+
+# From Paul Eggert (2006-07-17):
+# Shanks & Pottenger say that Atikokan has agreed with Rainy River
+# ever since standard time was introduced, but the information from
+# McKinnon sounds more authoritative. For now, assume that Atikokan
+# switched to EST immediately after WWII era daylight saving time
+# ended. This matches the old (less-populous) America/Coral_Harbour
+# entry since our cutoff date of 1970, so we can move
+# America/Coral_Harbour to the 'backward' file.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Toronto 1919 only - Mar 30 23:30 1:00 D
+Rule Toronto 1919 only - Oct 26 0:00 0 S
+Rule Toronto 1920 only - May 2 2:00 1:00 D
+Rule Toronto 1920 only - Sep 26 0:00 0 S
+Rule Toronto 1921 only - May 15 2:00 1:00 D
+Rule Toronto 1921 only - Sep 15 2:00 0 S
+Rule Toronto 1922 1923 - May Sun>=8 2:00 1:00 D
+# Shanks & Pottenger say 1923-09-19; assume it's a typo and that "-16"
+# was meant.
+Rule Toronto 1922 1926 - Sep Sun>=15 2:00 0 S
+Rule Toronto 1924 1927 - May Sun>=1 2:00 1:00 D
+# The 1927-to-1939 rules can be expressed more simply as
+# Rule Toronto 1927 1937 - Sep Sun>=25 2:00 0 S
+# Rule Toronto 1928 1937 - Apr Sun>=25 2:00 1:00 D
+# Rule Toronto 1938 1940 - Apr lastSun 2:00 1:00 D
+# Rule Toronto 1938 1939 - Sep lastSun 2:00 0 S
+# The rules below avoid use of Sun>=25
+# (which pre-2004 versions of zic cannot handle).
+Rule Toronto 1927 1932 - Sep lastSun 2:00 0 S
+Rule Toronto 1928 1931 - Apr lastSun 2:00 1:00 D
+Rule Toronto 1932 only - May 1 2:00 1:00 D
+Rule Toronto 1933 1940 - Apr lastSun 2:00 1:00 D
+Rule Toronto 1933 only - Oct 1 2:00 0 S
+Rule Toronto 1934 1939 - Sep lastSun 2:00 0 S
+Rule Toronto 1945 1946 - Sep lastSun 2:00 0 S
+Rule Toronto 1946 only - Apr lastSun 2:00 1:00 D
+Rule Toronto 1947 1949 - Apr lastSun 0:00 1:00 D
+Rule Toronto 1947 1948 - Sep lastSun 0:00 0 S
+Rule Toronto 1949 only - Nov lastSun 0:00 0 S
+Rule Toronto 1950 1973 - Apr lastSun 2:00 1:00 D
+Rule Toronto 1950 only - Nov lastSun 2:00 0 S
+Rule Toronto 1951 1956 - Sep lastSun 2:00 0 S
+# Shanks & Pottenger say Toronto ended DST a week early in 1971,
+# namely on 1971-10-24, but Mark Brader wrote (2003-05-31) that this
+# is wrong, and that he had confirmed it by checking the 1971-10-30
+# Toronto Star, which said that DST was ending 1971-10-31 as usual.
+Rule Toronto 1957 1973 - Oct lastSun 2:00 0 S
+
+# From Paul Eggert (2003-07-27):
+# Willett (1914-03) writes (p. 17) "In the Cities of Fort William, and
+# Port Arthur, Ontario, the principle of the Bill has been in
+# operation for the past three years, and in the City of Moose Jaw,
+# Saskatchewan, for one year."
+
+# From David Bryan via Tory Tronrud, Director/Curator,
+# Thunder Bay Museum (2003-11-12):
+# There is some suggestion, however, that, by-law or not, daylight
+# savings time was being practiced in Fort William and Port Arthur
+# before 1909.... [I]n 1910, the line between the Eastern and Central
+# Time Zones was permanently moved about two hundred miles west to
+# include the Thunder Bay area.... When Canada adopted daylight
+# savings time in 1916, Fort William and Port Arthur, having done so
+# already, did not change their clocks.... During the Second World
+# War,... [t]he cities agreed to implement DST during the summer
+# months for the remainder of the war years.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Toronto -5:17:32 - LMT 1895
+ -5:00 Canada E%sT 1919
+ -5:00 Toronto E%sT 1942 Feb 9 2:00s
+ -5:00 Canada E%sT 1946
+ -5:00 Toronto E%sT 1974
+ -5:00 Canada E%sT
+Zone America/Thunder_Bay -5:57:00 - LMT 1895
+ -6:00 - CST 1910
+ -5:00 - EST 1942
+ -5:00 Canada E%sT 1970
+ -5:00 Mont E%sT 1973
+ -5:00 - EST 1974
+ -5:00 Canada E%sT
+Zone America/Nipigon -5:53:04 - LMT 1895
+ -5:00 Canada E%sT 1940 Sep 29
+ -5:00 1:00 EDT 1942 Feb 9 2:00s
+ -5:00 Canada E%sT
+Zone America/Rainy_River -6:18:16 - LMT 1895
+ -6:00 Canada C%sT 1940 Sep 29
+ -6:00 1:00 CDT 1942 Feb 9 2:00s
+ -6:00 Canada C%sT
+Zone America/Atikokan -6:06:28 - LMT 1895
+ -6:00 Canada C%sT 1940 Sep 29
+ -6:00 1:00 CDT 1942 Feb 9 2:00s
+ -6:00 Canada C%sT 1945 Sep 30 2:00
+ -5:00 - EST
+
+
+# Manitoba
+
+# From Rob Douglas (2006-04-06):
+# the old Manitoba Time Act - as amended by Bill 2, assented to
+# March 27, 1987 ... said ...
+# "between two o'clock Central Standard Time in the morning of
+# the first Sunday of April of each year and two o'clock Central
+# Standard Time in the morning of the last Sunday of October next
+# following, one hour in advance of Central Standard Time."...
+# I believe that the English legislation [of the old time act] had =
+# been assented to (March 22, 1967)....
+# Also, as far as I can tell, there was no order-in-council varying
+# the time of Daylight Saving Time for 2005 and so the provisions of
+# the 1987 version would apply - the changeover was at 2:00 Central
+# Standard Time (i.e. not until 3:00 Central Daylight Time).
+
+# From Paul Eggert (2006-04-10):
+# Shanks & Pottenger say Manitoba switched at 02:00 (not 02:00s)
+# starting 1966. Since 02:00s is clearly correct for 1967 on, assume
+# it was also 02:00s in 1966.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Winn 1916 only - Apr 23 0:00 1:00 D
+Rule Winn 1916 only - Sep 17 0:00 0 S
+Rule Winn 1918 only - Apr 14 2:00 1:00 D
+Rule Winn 1918 only - Oct 31 2:00 0 S
+Rule Winn 1937 only - May 16 2:00 1:00 D
+Rule Winn 1937 only - Sep 26 2:00 0 S
+Rule Winn 1942 only - Feb 9 2:00 1:00 W # War
+Rule Winn 1945 only - Aug 14 23:00u 1:00 P # Peace
+Rule Winn 1945 only - Sep lastSun 2:00 0 S
+Rule Winn 1946 only - May 12 2:00 1:00 D
+Rule Winn 1946 only - Oct 13 2:00 0 S
+Rule Winn 1947 1949 - Apr lastSun 2:00 1:00 D
+Rule Winn 1947 1949 - Sep lastSun 2:00 0 S
+Rule Winn 1950 only - May 1 2:00 1:00 D
+Rule Winn 1950 only - Sep 30 2:00 0 S
+Rule Winn 1951 1960 - Apr lastSun 2:00 1:00 D
+Rule Winn 1951 1958 - Sep lastSun 2:00 0 S
+Rule Winn 1959 only - Oct lastSun 2:00 0 S
+Rule Winn 1960 only - Sep lastSun 2:00 0 S
+Rule Winn 1963 only - Apr lastSun 2:00 1:00 D
+Rule Winn 1963 only - Sep 22 2:00 0 S
+Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
+Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
+Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Winnipeg -6:28:36 - LMT 1887 Jul 16
+ -6:00 Winn C%sT 2006
+ -6:00 Canada C%sT
+
+
+# Saskatchewan
+
+# From Mark Brader (2003-07-26):
+# The first actual adoption of DST in Canada was at the municipal
+# level. As the [Toronto] Star put it (1912-06-07), "While people
+# elsewhere have long been talking of legislation to save daylight,
+# the city of Moose Jaw [Saskatchewan] has acted on its own hook."
+# DST in Moose Jaw began on Saturday, 1912-06-01 (no time mentioned:
+# presumably late evening, as below), and would run until "the end of
+# the summer". The discrepancy between municipal time and railroad
+# time was noted.
+
+# From Paul Eggert (2003-07-27):
+# Willett (1914-03) notes that DST "has been in operation ... in the
+# City of Moose Jaw, Saskatchewan, for one year."
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger say that since 1970 this region has mostly been as Regina.
+# Some western towns (e.g. Swift Current) switched from MST/MDT to CST in 1972.
+# Other western towns (e.g. Lloydminster) are like Edmonton.
+# Matthews and Vincent (1998) write that Denare Beach and Creighton
+# are like Winnipeg, in violation of Saskatchewan law.
+
+# From W. Jones (1992-11-06):
+# The. . .below is based on information I got from our law library, the
+# provincial archives, and the provincial Community Services department.
+# A precise history would require digging through newspaper archives, and
+# since you didn't say what you wanted, I didn't bother.
+#
+# Saskatchewan is split by a time zone meridian (105W) and over the years
+# the boundary became pretty ragged as communities near it reevaluated
+# their affiliations in one direction or the other. In 1965 a provincial
+# referendum favoured legislating common time practices.
+#
+# On 15 April 1966 the Time Act (c. T-14, Revised Statutes of
+# Saskatchewan 1978) was proclaimed, and established that the eastern
+# part of Saskatchewan would use CST year round, that districts in
+# northwest Saskatchewan would by default follow CST but could opt to
+# follow Mountain Time rules (thus 1 hour difference in the winter and
+# zero in the summer), and that districts in southwest Saskatchewan would
+# by default follow MT but could opt to follow CST.
+#
+# It took a few years for the dust to settle (I know one story of a town
+# on one time zone having its school in another, such that a mom had to
+# serve her family lunch in two shifts), but presently it seems that only
+# a few towns on the border with Alberta (e.g. Lloydminster) follow MT
+# rules any more; all other districts appear to have used CST year round
+# since sometime in the 1960s.
+
+# From Chris Walton (2006-06-26):
+# The Saskatchewan time act which was last updated in 1996 is about 30 pages
+# long and rather painful to read.
+# http://www.qp.gov.sk.ca/documents/English/Statutes/Statutes/T14.pdf
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Regina 1918 only - Apr 14 2:00 1:00 D
+Rule Regina 1918 only - Oct 31 2:00 0 S
+Rule Regina 1930 1934 - May Sun>=1 0:00 1:00 D
+Rule Regina 1930 1934 - Oct Sun>=1 0:00 0 S
+Rule Regina 1937 1941 - Apr Sun>=8 0:00 1:00 D
+Rule Regina 1937 only - Oct Sun>=8 0:00 0 S
+Rule Regina 1938 only - Oct Sun>=1 0:00 0 S
+Rule Regina 1939 1941 - Oct Sun>=8 0:00 0 S
+Rule Regina 1942 only - Feb 9 2:00 1:00 W # War
+Rule Regina 1945 only - Aug 14 23:00u 1:00 P # Peace
+Rule Regina 1945 only - Sep lastSun 2:00 0 S
+Rule Regina 1946 only - Apr Sun>=8 2:00 1:00 D
+Rule Regina 1946 only - Oct Sun>=8 2:00 0 S
+Rule Regina 1947 1957 - Apr lastSun 2:00 1:00 D
+Rule Regina 1947 1957 - Sep lastSun 2:00 0 S
+Rule Regina 1959 only - Apr lastSun 2:00 1:00 D
+Rule Regina 1959 only - Oct lastSun 2:00 0 S
+#
+Rule Swift 1957 only - Apr lastSun 2:00 1:00 D
+Rule Swift 1957 only - Oct lastSun 2:00 0 S
+Rule Swift 1959 1961 - Apr lastSun 2:00 1:00 D
+Rule Swift 1959 only - Oct lastSun 2:00 0 S
+Rule Swift 1960 1961 - Sep lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Regina -6:58:36 - LMT 1905 Sep
+ -7:00 Regina M%sT 1960 Apr lastSun 2:00
+ -6:00 - CST
+Zone America/Swift_Current -7:11:20 - LMT 1905 Sep
+ -7:00 Canada M%sT 1946 Apr lastSun 2:00
+ -7:00 Regina M%sT 1950
+ -7:00 Swift M%sT 1972 Apr lastSun 2:00
+ -6:00 - CST
+
+
+# Alberta
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Edm 1918 1919 - Apr Sun>=8 2:00 1:00 D
+Rule Edm 1918 only - Oct 31 2:00 0 S
+Rule Edm 1919 only - May 27 2:00 0 S
+Rule Edm 1920 1923 - Apr lastSun 2:00 1:00 D
+Rule Edm 1920 only - Oct lastSun 2:00 0 S
+Rule Edm 1921 1923 - Sep lastSun 2:00 0 S
+Rule Edm 1942 only - Feb 9 2:00 1:00 W # War
+Rule Edm 1945 only - Aug 14 23:00u 1:00 P # Peace
+Rule Edm 1945 only - Sep lastSun 2:00 0 S
+Rule Edm 1947 only - Apr lastSun 2:00 1:00 D
+Rule Edm 1947 only - Sep lastSun 2:00 0 S
+Rule Edm 1967 only - Apr lastSun 2:00 1:00 D
+Rule Edm 1967 only - Oct lastSun 2:00 0 S
+Rule Edm 1969 only - Apr lastSun 2:00 1:00 D
+Rule Edm 1969 only - Oct lastSun 2:00 0 S
+Rule Edm 1972 1986 - Apr lastSun 2:00 1:00 D
+Rule Edm 1972 2006 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Edmonton -7:33:52 - LMT 1906 Sep
+ -7:00 Edm M%sT 1987
+ -7:00 Canada M%sT
+
+
+# British Columbia
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that since 1970 most of this region has
+# been like Vancouver.
+# Dawson Creek uses MST. Much of east BC is like Edmonton.
+# Matthews and Vincent (1998) write that Creston is like Dawson Creek.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Vanc 1918 only - Apr 14 2:00 1:00 D
+Rule Vanc 1918 only - Oct 31 2:00 0 S
+Rule Vanc 1942 only - Feb 9 2:00 1:00 W # War
+Rule Vanc 1945 only - Aug 14 23:00u 1:00 P # Peace
+Rule Vanc 1945 only - Sep 30 2:00 0 S
+Rule Vanc 1946 1986 - Apr lastSun 2:00 1:00 D
+Rule Vanc 1946 only - Oct 13 2:00 0 S
+Rule Vanc 1947 1961 - Sep lastSun 2:00 0 S
+Rule Vanc 1962 2006 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Vancouver -8:12:28 - LMT 1884
+ -8:00 Vanc P%sT 1987
+ -8:00 Canada P%sT
+Zone America/Dawson_Creek -8:00:56 - LMT 1884
+ -8:00 Canada P%sT 1947
+ -8:00 Vanc P%sT 1972 Aug 30 2:00
+ -7:00 - MST
+
+
+# Northwest Territories, Nunavut, Yukon
+
+# From Paul Eggert (2006-03-22):
+# Dawson switched to PST in 1973. Inuvik switched to MST in 1979.
+# Mathew Englander (1996-10-07) gives the following refs:
+# * 1967. Paragraph 28(34)(g) of the Interpretation Act, S.C. 1967-68,
+# c. 7 defines Yukon standard time as UTC-9. This is still valid;
+# see Interpretation Act, R.S.C. 1985, c. I-21, s. 35(1).
+# * C.O. 1973/214 switched Yukon to PST on 1973-10-28 00:00.
+# * O.I.C. 1980/02 established DST.
+# * O.I.C. 1987/056 changed DST to Apr firstSun 2:00 to Oct lastSun 2:00.
+# Shanks & Pottenger say Yukon's 1973-10-28 switch was at 2:00; go
+# with Englander.
+# From Chris Walton (2006-06-26):
+# Here is a link to the old daylight saving portion of the interpretation
+# act which was last updated in 1987:
+# http://www.gov.yk.ca/legislation/regs/oic1987_056.pdf
+
+# From Rives McDow (1999-09-04):
+# Nunavut ... moved ... to incorporate the whole territory into one time zone.
+# <a href="http://www.nunatsiaq.com/nunavut/nvt90903_13.html">
+# Nunavut moves to single time zone Oct. 31
+# </a>
+#
+# From Antoine Leca (1999-09-06):
+# We then need to create a new timezone for the Kitikmeot region of Nunavut
+# to differentiate it from the Yellowknife region.
+
+# From Paul Eggert (1999-09-20):
+# <a href="http://www.nunavut.com/basicfacts/english/basicfacts_1territory.html">
+# Basic Facts: The New Territory
+# </a> (1999) reports that Pangnirtung operates on eastern time,
+# and that Coral Harbour does not observe DST. We don't know when
+# Pangnirtung switched to eastern time; we'll guess 1995.
+
+# From Rives McDow (1999-11-08):
+# On October 31, when the rest of Nunavut went to Central time,
+# Pangnirtung wobbled. Here is the result of their wobble:
+#
+# The following businesses and organizations in Pangnirtung use Central Time:
+#
+# First Air, Power Corp, Nunavut Construction, Health Center, RCMP,
+# Eastern Arctic National Parks, A & D Specialist
+#
+# The following businesses and organizations in Pangnirtung use Eastern Time:
+#
+# Hamlet office, All other businesses, Both schools, Airport operator
+#
+# This has made for an interesting situation there, which warranted the news.
+# No one there that I spoke with seems concerned, or has plans to
+# change the local methods of keeping time, as it evidently does not
+# really interfere with any activities or make things difficult locally.
+# They plan to celebrate New Year's turn-over twice, one hour apart,
+# so it appears that the situation will last at least that long.
+# The Nunavut Intergovernmental Affairs hopes that they will "come to
+# their senses", but the locals evidently don't see any problem with
+# the current state of affairs.
+
+# From Michaela Rodrigue, writing in the
+# <a href="http://www.nunatsiaq.com/archives/nunavut991130/nvt91119_17.html">
+# Nunatsiaq News (1999-11-19)</a>:
+# Clyde River, Pangnirtung and Sanikiluaq now operate with two time zones,
+# central - or Nunavut time - for government offices, and eastern time
+# for municipal offices and schools.... Igloolik [was similar but then]
+# made the switch to central time on Saturday, Nov. 6.
+
+# From Paul Eggert (2000-10-02):
+# Matthews and Vincent (1998) say the following, but we lack histories
+# for these potential new Zones.
+#
+# The Canadian Forces station at Alert uses Eastern Time while the
+# handful of residents at the Eureka weather station [in the Central
+# zone] skip daylight savings. Baffin Island, which is crossed by the
+# Central, Eastern and Atlantic Time zones only uses Eastern Time.
+# Gjoa Haven, Taloyoak and Pelly Bay all use Mountain instead of
+# Central Time and Southampton Island [in the Central zone] is not
+# required to use daylight savings.
+
+# From
+# <a href="http://www.nunatsiaq.com/archives/nunavut001130/nvt21110_02.html">
+# Nunavut now has two time zones
+# </a> (2000-11-10):
+# The Nunavut government would allow its employees in Kugluktuk and
+# Cambridge Bay to operate on central time year-round, putting them
+# one hour behind the rest of Nunavut for six months during the winter.
+# At the end of October the two communities had rebelled against
+# Nunavut's unified time zone, refusing to shift to eastern time with
+# the rest of the territory for the winter. Cambridge Bay remained on
+# central time, while Kugluktuk, even farther west, reverted to
+# mountain time, which they had used before the advent of Nunavut's
+# unified time zone in 1999.
+#
+# From Rives McDow (2001-01-20), quoting the Nunavut government:
+# The preceding decision came into effect at midnight, Saturday Nov 4, 2000.
+
+# From Paul Eggert (2000-12-04):
+# Let's just keep track of the official times for now.
+
+# From Rives McDow (2001-03-07):
+# The premier of Nunavut has issued a ministerial statement advising
+# that effective 2001-04-01, the territory of Nunavut will revert
+# back to three time zones (mountain, central, and eastern). Of the
+# cities in Nunavut, Coral Harbor is the only one that I know of that
+# has said it will not observe dst, staying on EST year round. I'm
+# checking for more info, and will get back to you if I come up with
+# more.
+# [Also see <http://www.nunatsiaq.com/nunavut/nvt10309_06.html> (2001-03-09).]
+
+# From Gwillim Law (2005-05-21):
+# According to maps at
+# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SWE.jpg
+# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SSE.jpg
+# (both dated 2003), and
+# http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp
+# (from a 1998 Canadian Geographic article), the de facto and de jure time
+# for Southampton Island (at the north end of Hudson Bay) is UTC-5 all year
+# round. Using Google, it's easy to find other websites that confirm this.
+# I wasn't able to find how far back this time regimen goes, but since it
+# predates the creation of Nunavut, it probably goes back many years....
+# The Inuktitut name of Coral Harbour is Sallit, but it's rarely used.
+#
+# From Paul Eggert (2005-07-26):
+# For lack of better information, assume that Southampton Island observed
+# daylight saving only during wartime.
+
+# From Chris Walton (2007-03-01):
+# ... the community of Resolute (located on Cornwallis Island in
+# Nunavut) moved from Central Time to Eastern Time last November.
+# Basically the community did not change its clocks at the end of
+# daylight saving....
+# http://www.nnsl.com/frames/newspapers/2006-11/nov13_06none.html
+
+# From Chris Walton (2007-03-14):
+# Today I phoned the "hamlet office" to find out what Resolute was doing with
+# its clocks.
+#
+# The individual that answered the phone confirmed that the clocks did not
+# move at the end of daylight saving on October 29/2006. He also told me that
+# the clocks did not move this past weekend (March 11/2007)....
+#
+# America/Resolute should use the "Canada" Rule up to October 29/2006.
+# After that it should be fixed on Eastern Standard Time until further notice.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule NT_YK 1918 only - Apr 14 2:00 1:00 D
+Rule NT_YK 1918 only - Oct 27 2:00 0 S
+Rule NT_YK 1919 only - May 25 2:00 1:00 D
+Rule NT_YK 1919 only - Nov 1 0:00 0 S
+Rule NT_YK 1942 only - Feb 9 2:00 1:00 W # War
+Rule NT_YK 1945 only - Aug 14 23:00u 1:00 P # Peace
+Rule NT_YK 1945 only - Sep 30 2:00 0 S
+Rule NT_YK 1965 only - Apr lastSun 0:00 2:00 DD
+Rule NT_YK 1965 only - Oct lastSun 2:00 0 S
+Rule NT_YK 1980 1986 - Apr lastSun 2:00 1:00 D
+Rule NT_YK 1980 2006 - Oct lastSun 2:00 0 S
+Rule NT_YK 1987 2006 - Apr Sun>=1 2:00 1:00 D
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# aka Panniqtuuq
+Zone America/Pangnirtung 0 - zzz 1921 # trading post est.
+ -4:00 NT_YK A%sT 1995 Apr Sun>=1 2:00
+ -5:00 Canada E%sT 1999 Oct 31 2:00
+ -6:00 Canada C%sT 2000 Oct 29 2:00
+ -5:00 Canada E%sT
+# formerly Frobisher Bay
+Zone America/Iqaluit 0 - zzz 1942 Aug # Frobisher Bay est.
+ -5:00 NT_YK E%sT 1999 Oct 31 2:00
+ -6:00 Canada C%sT 2000 Oct 29 2:00
+ -5:00 Canada E%sT
+# aka Qausuittuq
+Zone America/Resolute 0 - zzz 1947 Aug 31 # Resolute founded
+ -6:00 NT_YK C%sT 2000 Oct 29 2:00
+ -5:00 - EST 2001 Apr 1 3:00
+ -6:00 Canada C%sT 2006 Oct 29 2:00
+ -5:00 - EST
+# aka Kangiqiniq
+Zone America/Rankin_Inlet 0 - zzz 1957 # Rankin Inlet founded
+ -6:00 NT_YK C%sT 2000 Oct 29 2:00
+ -5:00 - EST 2001 Apr 1 3:00
+ -6:00 Canada C%sT
+# aka Iqaluktuuttiaq
+Zone America/Cambridge_Bay 0 - zzz 1920 # trading post est.?
+ -7:00 NT_YK M%sT 1999 Oct 31 2:00
+ -6:00 Canada C%sT 2000 Oct 29 2:00
+ -5:00 - EST 2000 Nov 5 0:00
+ -6:00 - CST 2001 Apr 1 3:00
+ -7:00 Canada M%sT
+Zone America/Yellowknife 0 - zzz 1935 # Yellowknife founded?
+ -7:00 NT_YK M%sT 1980
+ -7:00 Canada M%sT
+Zone America/Inuvik 0 - zzz 1953 # Inuvik founded
+ -8:00 NT_YK P%sT 1979 Apr lastSun 2:00
+ -7:00 NT_YK M%sT 1980
+ -7:00 Canada M%sT
+Zone America/Whitehorse -9:00:12 - LMT 1900 Aug 20
+ -9:00 NT_YK Y%sT 1966 Jul 1 2:00
+ -8:00 NT_YK P%sT 1980
+ -8:00 Canada P%sT
+Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
+ -9:00 NT_YK Y%sT 1973 Oct 28 0:00
+ -8:00 NT_YK P%sT 1980
+ -8:00 Canada P%sT
+
+
+###############################################################################
+
+# Mexico
+
+# From Paul Eggert (2001-03-05):
+# The Investigation and Analysis Service of the
+# Mexican Library of Congress (MLoC) has published a
+# <a href="http://www.cddhcu.gob.mx/bibliot/publica/inveyana/polisoc/horver/">
+# history of Mexican local time (in Spanish)
+# </a>.
+#
+# Here are the discrepancies between Shanks & Pottenger (S&P) and the MLoC.
+# (In all cases we go with the MLoC.)
+# S&P report that Baja was at -8:00 in 1922/1923.
+# S&P say the 1930 transition in Baja was 1930-11-16.
+# S&P report no DST during summer 1931.
+# S&P report a transition at 1932-03-30 23:00, not 1932-04-01.
+
+# From Gwillim Law (2001-02-20):
+# There are some other discrepancies between the Decrees page and the
+# tz database. I think they can best be explained by supposing that
+# the researchers who prepared the Decrees page failed to find some of
+# the relevant documents.
+
+# From Alan Perry (1996-02-15):
+# A guy from our Mexico subsidiary finally found the Presidential Decree
+# outlining the timezone changes in Mexico.
+#
+# ------------- Begin Forwarded Message -------------
+#
+# I finally got my hands on the Official Presidential Decree that sets up the
+# rules for the DST changes. The rules are:
+#
+# 1. The country is divided in 3 timezones:
+# - Baja California Norte (the Mexico/BajaNorte TZ)
+# - Baja California Sur, Nayarit, Sinaloa and Sonora (the Mexico/BajaSur TZ)
+# - The rest of the country (the Mexico/General TZ)
+#
+# 2. From the first Sunday in April at 2:00 AM to the last Sunday in October
+# at 2:00 AM, the times in each zone are as follows:
+# BajaNorte: GMT+7
+# BajaSur: GMT+6
+# General: GMT+5
+#
+# 3. The rest of the year, the times are as follows:
+# BajaNorte: GMT+8
+# BajaSur: GMT+7
+# General: GMT+6
+#
+# The Decree was published in Mexico's Official Newspaper on January 4th.
+#
+# -------------- End Forwarded Message --------------
+# From Paul Eggert (1996-06-12):
+# For an English translation of the decree, see
+# <a href="http://mexico-travel.com/extra/timezone_eng.html">
+# ``Diario Oficial: Time Zone Changeover'' (1996-01-04).
+# </a>
+
+# From Rives McDow (1998-10-08):
+# The State of Quintana Roo has reverted back to central STD and DST times
+# (i.e. UTC -0600 and -0500 as of 1998-08-02).
+
+# From Rives McDow (2000-01-10):
+# Effective April 4, 1999 at 2:00 AM local time, Sonora changed to the time
+# zone 5 hours from the International Date Line, and will not observe daylight
+# savings time so as to stay on the same time zone as the southern part of
+# Arizona year round.
+
+# From Jesper Norgaard, translating
+# <http://www.reforma.com/nacional/articulo/064327/> (2001-01-17):
+# In Oaxaca, the 55.000 teachers from the Section 22 of the National
+# Syndicate of Education Workers, refuse to apply daylight saving each
+# year, so that the more than 10,000 schools work at normal hour the
+# whole year.
+
+# From Gwillim Law (2001-01-19):
+# <http://www.reforma.com/negocios_y_dinero/articulo/064481/> ... says
+# (translated):...
+# January 17, 2000 - The Energy Secretary, Ernesto Martens, announced
+# that Summer Time will be reduced from seven to five months, starting
+# this year....
+# <http://www.publico.com.mx/scripts/texto3.asp?action=pagina&pag=21&pos=p&secc=naci&date=01/17/2001>
+# [translated], says "summer time will ... take effect on the first Sunday
+# in May, and end on the last Sunday of September.
+
+# From Arthur David Olson (2001-01-25):
+# The 2001-01-24 traditional Washington Post contained the page one
+# story "Timely Issue Divides Mexicans."...
+# http://www.washingtonpost.com/wp-dyn/articles/A37383-2001Jan23.html
+# ... Mexico City Mayor Lopez Obrador "...is threatening to keep
+# Mexico City and its 20 million residents on a different time than
+# the rest of the country..." In particular, Lopez Obrador would abolish
+# observation of Daylight Saving Time.
+
+# <a href="http://www.conae.gob.mx/ahorro/decretohorver2001.html#decre">
+# Official statute published by the Energy Department
+# </a> (2001-02-01) shows Baja and Chihauhua as still using US DST rules,
+# and Sonora with no DST. This was reported by Jesper Norgaard (2001-02-03).
+
+# From Paul Eggert (2001-03-03):
+#
+# <a href="http://www.latimes.com/news/nation/20010303/t000018766.html">
+# James F. Smith writes in today's LA Times
+# </a>
+# * Sonora will continue to observe standard time.
+# * Last week Mexico City's mayor Andres Manuel Lopez Obrador decreed that
+# the Federal District will not adopt DST.
+# * 4 of 16 district leaders announced they'll ignore the decree.
+# * The decree does not affect federal-controlled facilities including
+# the airport, banks, hospitals, and schools.
+#
+# For now we'll assume that the Federal District will bow to federal rules.
+
+# From Jesper Norgaard (2001-04-01):
+# I found some references to the Mexican application of daylight
+# saving, which modifies what I had already sent you, stating earlier
+# that a number of northern Mexican states would go on daylight
+# saving. The modification reverts this to only cover Baja California
+# (Norte), while all other states (except Sonora, who has no daylight
+# saving all year) will follow the original decree of president
+# Vicente Fox, starting daylight saving May 6, 2001 and ending
+# September 30, 2001.
+# References: "Diario de Monterrey" <www.diariodemonterrey.com/index.asp>
+# Palabra <http://palabra.infosel.com/010331/primera/ppri3101.pdf> (2001-03-31)
+
+# From Reuters (2001-09-04):
+# Mexico's Supreme Court on Tuesday declared that daylight savings was
+# unconstitutional in Mexico City, creating the possibility the
+# capital will be in a different time zone from the rest of the nation
+# next year.... The Supreme Court's ruling takes effect at 2:00
+# a.m. (0800 GMT) on Sept. 30, when Mexico is scheduled to revert to
+# standard time. "This is so residents of the Federal District are not
+# subject to unexpected time changes," a statement from the court said.
+
+# From Jesper Norgaard Welen (2002-03-12):
+# ... consulting my local grocery store(!) and my coworkers, they all insisted
+# that a new decision had been made to reinstate US style DST in Mexico....
+# http://www.conae.gob.mx/ahorro/horaver2001_m1_2002.html (2002-02-20)
+# confirms this. Sonora as usual is the only state where DST is not applied.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Mexico 1939 only - Feb 5 0:00 1:00 D
+Rule Mexico 1939 only - Jun 25 0:00 0 S
+Rule Mexico 1940 only - Dec 9 0:00 1:00 D
+Rule Mexico 1941 only - Apr 1 0:00 0 S
+Rule Mexico 1943 only - Dec 16 0:00 1:00 W # War
+Rule Mexico 1944 only - May 1 0:00 0 S
+Rule Mexico 1950 only - Feb 12 0:00 1:00 D
+Rule Mexico 1950 only - Jul 30 0:00 0 S
+Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
+Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
+Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
+Rule Mexico 2001 only - Sep lastSun 2:00 0 S
+Rule Mexico 2002 max - Apr Sun>=1 2:00 1:00 D
+Rule Mexico 2002 max - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# Quintana Roo
+Zone America/Cancun -5:47:04 - LMT 1922 Jan 1 0:12:56
+ -6:00 - CST 1981 Dec 23
+ -5:00 Mexico E%sT 1998 Aug 2 2:00
+ -6:00 Mexico C%sT
+# Campeche, Yucatan
+Zone America/Merida -5:58:28 - LMT 1922 Jan 1 0:01:32
+ -6:00 - CST 1981 Dec 23
+ -5:00 - EST 1982 Dec 2
+ -6:00 Mexico C%sT
+# Coahuila, Durango, Nuevo Leon, Tamaulipas
+Zone America/Monterrey -6:41:16 - LMT 1921 Dec 31 23:18:44
+ -6:00 - CST 1988
+ -6:00 US C%sT 1989
+ -6:00 Mexico C%sT
+# Central Mexico
+Zone America/Mexico_City -6:36:36 - LMT 1922 Jan 1 0:23:24
+ -7:00 - MST 1927 Jun 10 23:00
+ -6:00 - CST 1930 Nov 15
+ -7:00 - MST 1931 May 1 23:00
+ -6:00 - CST 1931 Oct
+ -7:00 - MST 1932 Apr 1
+ -6:00 Mexico C%sT 2001 Sep 30 02:00
+ -6:00 - CST 2002 Feb 20
+ -6:00 Mexico C%sT
+# Chihuahua
+Zone America/Chihuahua -7:04:20 - LMT 1921 Dec 31 23:55:40
+ -7:00 - MST 1927 Jun 10 23:00
+ -6:00 - CST 1930 Nov 15
+ -7:00 - MST 1931 May 1 23:00
+ -6:00 - CST 1931 Oct
+ -7:00 - MST 1932 Apr 1
+ -6:00 - CST 1996
+ -6:00 Mexico C%sT 1998
+ -6:00 - CST 1998 Apr Sun>=1 3:00
+ -7:00 Mexico M%sT
+# Sonora
+Zone America/Hermosillo -7:23:52 - LMT 1921 Dec 31 23:36:08
+ -7:00 - MST 1927 Jun 10 23:00
+ -6:00 - CST 1930 Nov 15
+ -7:00 - MST 1931 May 1 23:00
+ -6:00 - CST 1931 Oct
+ -7:00 - MST 1932 Apr 1
+ -6:00 - CST 1942 Apr 24
+ -7:00 - MST 1949 Jan 14
+ -8:00 - PST 1970
+ -7:00 Mexico M%sT 1999
+ -7:00 - MST
+# Baja California Sur, Nayarit, Sinaloa
+Zone America/Mazatlan -7:05:40 - LMT 1921 Dec 31 23:54:20
+ -7:00 - MST 1927 Jun 10 23:00
+ -6:00 - CST 1930 Nov 15
+ -7:00 - MST 1931 May 1 23:00
+ -6:00 - CST 1931 Oct
+ -7:00 - MST 1932 Apr 1
+ -6:00 - CST 1942 Apr 24
+ -7:00 - MST 1949 Jan 14
+ -8:00 - PST 1970
+ -7:00 Mexico M%sT
+# Baja California
+Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 0:11:56
+ -7:00 - MST 1924
+ -8:00 - PST 1927 Jun 10 23:00
+ -7:00 - MST 1930 Nov 15
+ -8:00 - PST 1931 Apr 1
+ -8:00 1:00 PDT 1931 Sep 30
+ -8:00 - PST 1942 Apr 24
+ -8:00 1:00 PWT 1945 Aug 14 23:00u
+ -8:00 1:00 PPT 1945 Nov 12 # Peace
+ -8:00 - PST 1948 Apr 5
+ -8:00 1:00 PDT 1949 Jan 14
+ -8:00 - PST 1954
+ -8:00 CA P%sT 1961
+ -8:00 - PST 1976
+ -8:00 US P%sT 1996
+ -8:00 Mexico P%sT 2001
+ -8:00 US P%sT 2002 Feb 20
+ -8:00 Mexico P%sT
+# From Paul Eggert (2006-03-22):
+# Formerly there was an America/Ensenada zone, which differed from
+# America/Tijuana only in that it did not observe DST from 1976
+# through 1995. This was as per Shanks (1999). But Shanks & Pottenger say
+# Ensenada did not observe DST from 1948 through 1975. Guy Harris reports
+# that the 1987 OAG says "Only Ensenada, Mexicale, San Felipe and
+# Tijuana observe DST," which agrees with Shanks & Pottenger but implies that
+# DST-observance was a town-by-town matter back then. This concerns
+# data after 1970 so most likely there should be at least one Zone
+# other than America/Tijuana for Baja, but it's not clear yet what its
+# name or contents should be.
+#
+# Revillagigedo Is
+# no information
+
+###############################################################################
+
+# Anguilla
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Anguilla -4:12:16 - LMT 1912 Mar 2
+ -4:00 - AST
+
+# Antigua and Barbuda
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Antigua -4:07:12 - LMT 1912 Mar 2
+ -5:00 - EST 1951
+ -4:00 - AST
+
+# Bahamas
+#
+# From Sue Williams (2006-12-07):
+# The Bahamas announced about a month ago that they plan to change their DST
+# rules to sync with the U.S. starting in 2007....
+# http://www.jonesbahamas.com/?c=45&a=10412
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Bahamas 1964 2006 - Oct lastSun 2:00 0 S
+Rule Bahamas 1964 1986 - Apr lastSun 2:00 1:00 D
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Nassau -5:09:24 - LMT 1912 Mar 2
+ -5:00 Bahamas E%sT 1976
+ -5:00 US E%sT
+
+# Barbados
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Barb 1977 only - Jun 12 2:00 1:00 D
+Rule Barb 1977 1978 - Oct Sun>=1 2:00 0 S
+Rule Barb 1978 1980 - Apr Sun>=15 2:00 1:00 D
+Rule Barb 1979 only - Sep 30 2:00 0 S
+Rule Barb 1980 only - Sep 25 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Barbados -3:58:28 - LMT 1924 # Bridgetown
+ -3:58:28 - BMT 1932 # Bridgetown Mean Time
+ -4:00 Barb A%sT
+
+# Belize
+# Whitman entirely disagrees with Shanks; go with Shanks & Pottenger.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Belize 1918 1942 - Oct Sun>=2 0:00 0:30 HD
+Rule Belize 1919 1943 - Feb Sun>=9 0:00 0 S
+Rule Belize 1973 only - Dec 5 0:00 1:00 D
+Rule Belize 1974 only - Feb 9 0:00 0 S
+Rule Belize 1982 only - Dec 18 0:00 1:00 D
+Rule Belize 1983 only - Feb 12 0:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Belize -5:52:48 - LMT 1912 Apr
+ -6:00 Belize C%sT
+
+# Bermuda
+
+# From Dan Jones, reporting in The Royal Gazette (2006-06-26):
+
+# Next year, however, clocks in the US will go forward on the second Sunday
+# in March, until the first Sunday in November. And, after the Time Zone
+# (Seasonal Variation) Bill 2006 was passed in the House of Assembly on
+# Friday, the same thing will happen in Bermuda.
+# http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Atlantic/Bermuda -4:19:04 - LMT 1930 Jan 1 2:00 # Hamilton
+ -4:00 - AST 1974 Apr 28 2:00
+ -4:00 Bahamas A%sT 1976
+ -4:00 US A%sT
+
+# Cayman Is
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown
+ -5:07:12 - KMT 1912 Feb # Kingston Mean Time
+ -5:00 - EST
+
+# Costa Rica
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D
+Rule CR 1979 1980 - Jun Sun>=1 0:00 0 S
+Rule CR 1991 1992 - Jan Sat>=15 0:00 1:00 D
+# IATA SSIM (1991-09) says the following was at 1:00;
+# go with Shanks & Pottenger.
+Rule CR 1991 only - Jul 1 0:00 0 S
+Rule CR 1992 only - Mar 15 0:00 0 S
+# There are too many San Joses elsewhere, so we'll use `Costa Rica'.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Costa_Rica -5:36:20 - LMT 1890 # San Jose
+ -5:36:20 - SJMT 1921 Jan 15 # San Jose Mean Time
+ -6:00 CR C%sT
+# Coco
+# no information; probably like America/Costa_Rica
+
+# Cuba
+
+# From Arthur David Olson (1999-03-29):
+# The 1999-03-28 exhibition baseball game held in Havana, Cuba, between
+# the Cuban National Team and the Baltimore Orioles was carried live on
+# the Orioles Radio Network, including affiliate WTOP in Washington, DC.
+# During the game, play-by-play announcer Jim Hunter noted that
+# "We'll be losing two hours of sleep...Cuba switched to Daylight Saving
+# Time today." (The "two hour" remark referred to losing one hour of
+# sleep on 1999-03-28--when the announcers were in Cuba as it switched
+# to DST--and one more hour on 1999-04-04--when the announcers will have
+# returned to Baltimore, which switches on that date.)
+
+# From Evert van der Veer via Steffen Thorsen (2004-10-28):
+# Cuba is not going back to standard time this year.
+# From Paul Eggert (2006-03-22):
+# http://www.granma.cu/ingles/2004/septiembre/juev30/41medid-i.html
+# says that it's due to a problem at the Antonio Guiteras
+# thermoelectric plant, and says "This October there will be no return
+# to normal hours (after daylight saving time)".
+# For now, let's assume that it's a temporary measure.
+
+# From Carlos A. Carnero Delgado (2005-11-12):
+# This year (just like in 2004-2005) there's no change in time zone
+# adjustment in Cuba. We will stay in daylight saving time:
+# http://www.granma.cu/espanol/2005/noviembre/mier9/horario.html
+
+# From Jesper Norgaard Welen (2006-10-21):
+# An article in GRANMA INTERNACIONAL claims that Cuba will end
+# the 3 years of permanent DST next weekend, see
+# http://www.granma.cu/ingles/2006/octubre/lun16/43horario.html
+# "On Saturday night, October 28 going into Sunday, October 29, at 01:00,
+# watches should be set back one hour -- going back to 00:00 hours -- returning
+# to the normal schedule....
+
+# From Paul Eggert (2007-03-02):
+# http://www.granma.cubaweb.cu/english/news/art89.html, dated yesterday,
+# says Cuban clocks will advance at midnight on March 10.
+# For lack of better information, assume Cuba will use US rules,
+# except that it switches at midnight standard time as usual.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Cuba 1928 only - Jun 10 0:00 1:00 D
+Rule Cuba 1928 only - Oct 10 0:00 0 S
+Rule Cuba 1940 1942 - Jun Sun>=1 0:00 1:00 D
+Rule Cuba 1940 1942 - Sep Sun>=1 0:00 0 S
+Rule Cuba 1945 1946 - Jun Sun>=1 0:00 1:00 D
+Rule Cuba 1945 1946 - Sep Sun>=1 0:00 0 S
+Rule Cuba 1965 only - Jun 1 0:00 1:00 D
+Rule Cuba 1965 only - Sep 30 0:00 0 S
+Rule Cuba 1966 only - May 29 0:00 1:00 D
+Rule Cuba 1966 only - Oct 2 0:00 0 S
+Rule Cuba 1967 only - Apr 8 0:00 1:00 D
+Rule Cuba 1967 1968 - Sep Sun>=8 0:00 0 S
+Rule Cuba 1968 only - Apr 14 0:00 1:00 D
+Rule Cuba 1969 1977 - Apr lastSun 0:00 1:00 D
+Rule Cuba 1969 1971 - Oct lastSun 0:00 0 S
+Rule Cuba 1972 1974 - Oct 8 0:00 0 S
+Rule Cuba 1975 1977 - Oct lastSun 0:00 0 S
+Rule Cuba 1978 only - May 7 0:00 1:00 D
+Rule Cuba 1978 1990 - Oct Sun>=8 0:00 0 S
+Rule Cuba 1979 1980 - Mar Sun>=15 0:00 1:00 D
+Rule Cuba 1981 1985 - May Sun>=5 0:00 1:00 D
+Rule Cuba 1986 1989 - Mar Sun>=14 0:00 1:00 D
+Rule Cuba 1990 1997 - Apr Sun>=1 0:00 1:00 D
+Rule Cuba 1991 1995 - Oct Sun>=8 0:00s 0 S
+Rule Cuba 1996 only - Oct 6 0:00s 0 S
+Rule Cuba 1997 only - Oct 12 0:00s 0 S
+Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
+Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
+Rule Cuba 2000 2006 - Apr Sun>=1 0:00s 1:00 D
+Rule Cuba 2006 only - Oct lastSun 0:00s 0 S
+Rule Cuba 2007 max - Mar Sun>=8 0:00s 1:00 D
+Rule Cuba 2007 max - Nov Sun>=1 0:00s 0 S
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Havana -5:29:28 - LMT 1890
+ -5:29:36 - HMT 1925 Jul 19 12:00 # Havana MT
+ -5:00 Cuba C%sT
+
+# Dominica
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Dominica -4:05:36 - LMT 1911 Jul 1 0:01 # Roseau
+ -4:00 - AST
+
+# Dominican Republic
+
+# From Steffen Thorsen (2000-10-30):
+# Enrique Morales reported to me that the Dominican Republic has changed the
+# time zone to Eastern Standard Time as of Sunday 29 at 2 am....
+# http://www.listin.com.do/antes/261000/republica/princi.html
+
+# From Paul Eggert (2000-12-04):
+# That URL (2000-10-26, in Spanish) says they planned to use US-style DST.
+
+# From Rives McDow (2000-12-01):
+# Dominican Republic changed its mind and presidential decree on Tuesday,
+# November 28, 2000, with a new decree. On Sunday, December 3 at 1:00 AM the
+# Dominican Republic will be reverting to 8 hours from the International Date
+# Line, and will not be using DST in the foreseeable future. The reason they
+# decided to use DST was to be in synch with Puerto Rico, who was also going
+# to implement DST. When Puerto Rico didn't implement DST, the president
+# decided to revert.
+
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule DR 1966 only - Oct 30 0:00 1:00 D
+Rule DR 1967 only - Feb 28 0:00 0 S
+Rule DR 1969 1973 - Oct lastSun 0:00 0:30 HD
+Rule DR 1970 only - Feb 21 0:00 0 S
+Rule DR 1971 only - Jan 20 0:00 0 S
+Rule DR 1972 1974 - Jan 21 0:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Santo_Domingo -4:39:36 - LMT 1890
+ -4:40 - SDMT 1933 Apr 1 12:00 # S. Dom. MT
+ -5:00 DR E%sT 1974 Oct 27
+ -4:00 - AST 2000 Oct 29 02:00
+ -5:00 US E%sT 2000 Dec 3 01:00
+ -4:00 - AST
+
+# El Salvador
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Salv 1987 1988 - May Sun>=1 0:00 1:00 D
+Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
+# There are too many San Salvadors elsewhere, so use America/El_Salvador
+# instead of America/San_Salvador.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/El_Salvador -5:56:48 - LMT 1921 # San Salvador
+ -6:00 Salv C%sT
+
+# Grenada
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Grenada -4:07:00 - LMT 1911 Jul # St George's
+ -4:00 - AST
+
+# Guadeloupe
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Guadeloupe -4:06:08 - LMT 1911 Jun 8 # Pointe a Pitre
+ -4:00 - AST
+
+# Guatemala
+#
+# From Gwillim Law (2006-04-22), after a heads-up from Oscar van Vlijmen:
+# Diario Co Latino, at
+# http://www.diariocolatino.com/internacionales/detalles.asp?NewsID=8079,
+# says in an article dated 2006-04-19 that the Guatemalan government had
+# decided on that date to advance official time by 60 minutes, to lessen the
+# impact of the elevated cost of oil.... Daylight saving time will last from
+# 2006-04-29 24:00 (Guatemalan standard time) to 2006-09-30 (time unspecified).
+# From Paul Eggert (2006-06-22):
+# The Ministry of Energy and Mines, press release CP-15/2006
+# (2006-04-19), says DST ends at 24:00. See
+# <http://www.sieca.org.gt/Sitio_publico/Energeticos/Doc/Medidas/Cambio_Horario_Nac_190406.pdf>.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Guat 1973 only - Nov 25 0:00 1:00 D
+Rule Guat 1974 only - Feb 24 0:00 0 S
+Rule Guat 1983 only - May 21 0:00 1:00 D
+Rule Guat 1983 only - Sep 22 0:00 0 S
+Rule Guat 1991 only - Mar 23 0:00 1:00 D
+Rule Guat 1991 only - Sep 7 0:00 0 S
+Rule Guat 2006 only - Apr 30 0:00 1:00 D
+Rule Guat 2006 only - Oct 1 0:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Guatemala -6:02:04 - LMT 1918 Oct 5
+ -6:00 Guat C%sT
+
+# Haiti
+# From Gwillim Law (2005-04-15):
+# Risto O. Nykanen wrote me that Haiti is now on DST.
+# I searched for confirmation, and I found a
+# <a href="http://www.haitianconsulate.org/time.doc"> press release
+# on the Web page of the Haitian Consulate in Chicago (2005-03-31),
+# </a>. Translated from French, it says:
+#
+# "The Prime Minister's Communication Office notifies the public in general
+# and the press in particular that, following a decision of the Interior
+# Ministry and the Territorial Collectivities [I suppose that means the
+# provinces], Haiti will move to Eastern Daylight Time in the night from next
+# Saturday the 2nd to Sunday the 3rd.
+#
+# "Consequently, the Prime Minister's Communication Office wishes to inform
+# the population that the country's clocks will be set forward one hour
+# starting at midnight. This provision will hold until the last Saturday in
+# October 2005.
+#
+# "Port-au-Prince, March 31, 2005"
+#
+# From Steffen Thorsen (2006-04-04):
+# I have been informed by users that Haiti observes DST this year like
+# last year, so the current "only" rule for 2005 might be changed to a
+# "max" rule or to last until 2006. (Who knows if they will observe DST
+# next year or if they will extend their DST like US/Canada next year).
+#
+# I have found this article about it (in French):
+# http://www.haitipressnetwork.com/news.cfm?articleID=7612
+#
+# The reason seems to be an energy crisis.
+
+# From Stephen Colebourne (2007-02-22):
+# Some IATA info: Haiti won't be having DST in 2007.
+
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Haiti 1983 only - May 8 0:00 1:00 D
+Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D
+Rule Haiti 1983 1987 - Oct lastSun 0:00 0 S
+# Shanks & Pottenger say AT is 2:00, but IATA SSIM (1991/1997) says 1:00s.
+# Go with IATA.
+Rule Haiti 1988 1997 - Apr Sun>=1 1:00s 1:00 D
+Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
+Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
+Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Port-au-Prince -4:49:20 - LMT 1890
+ -4:49 - PPMT 1917 Jan 24 12:00 # P-a-P MT
+ -5:00 Haiti E%sT
+
+# Honduras
+# Shanks & Pottenger say 1921 Jan 1; go with Whitman's more precise Apr 1.
+
+# From Paul Eggert (2006-05-05):
+# worldtimezone.com reports a 2006-05-02 Spanish-language AP article
+# saying Honduras will start using DST midnight Saturday, effective 4
+# months until September. La Tribuna reported today
+# <http://www.latribuna.hn/99299.html> that Manuel Zelaya, the president
+# of Honduras, refused to back down on this.
+
+# From Jesper Norgaard Welen (2006-08-08):
+# It seems that Honduras has returned from DST to standard time this Monday at
+# 00:00 hours (prolonging Sunday to 25 hours duration).
+# http://www.worldtimezone.com/dst_news/dst_news_honduras04.html
+
+# From Paul Eggert (2006-08-08):
+# Also see Diario El Heraldo, The country returns to standard time (2006-08-08)
+# <http://www.elheraldo.hn/nota.php?nid=54941&sec=12>.
+# It mentions executive decree 18-2006.
+
+# From Steffen Thorsen (2006-08-17):
+# Honduras will observe DST from 2007 to 2009, exact dates are not
+# published, I have located this authoritative source:
+# http://www.presidencia.gob.hn/noticia.aspx?nId=47
+
+# From Steffen Thorsen (2007-03-30):
+# http://www.laprensahn.com/pais_nota.php?id04962=7386
+# So it seems that Honduras will not enter DST this year....
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Hond 1987 1988 - May Sun>=1 0:00 1:00 D
+Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
+Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
+Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Tegucigalpa -5:48:52 - LMT 1921 Apr
+ -6:00 Hond C%sT
+#
+# Great Swan I ceded by US to Honduras in 1972
+
+# Jamaica
+
+# From Bob Devine (1988-01-28):
+# Follows US rules.
+
+# From U. S. Naval Observatory (1989-01-19):
+# JAMAICA 5 H BEHIND UTC
+
+# From Shanks & Pottenger:
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Jamaica -5:07:12 - LMT 1890 # Kingston
+ -5:07:12 - KMT 1912 Feb # Kingston Mean Time
+ -5:00 - EST 1974 Apr 28 2:00
+ -5:00 US E%sT 1984
+ -5:00 - EST
+
+# Martinique
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Martinique -4:04:20 - LMT 1890 # Fort-de-France
+ -4:04:20 - FFMT 1911 May # Fort-de-France MT
+ -4:00 - AST 1980 Apr 6
+ -4:00 1:00 ADT 1980 Sep 28
+ -4:00 - AST
+
+# Montserrat
+# From Paul Eggert (2006-03-22):
+# In 1995 volcanic eruptions forced evacuation of Plymouth, the capital.
+# world.gazetteer.com says Cork Hill is the most populous location now.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Cork Hill
+ -4:00 - AST
+
+# Nicaragua
+#
+# This uses Shanks & Pottenger for times before 2005.
+#
+# From Steffen Thorsen (2005-04-12):
+# I've got reports from 8 different people that Nicaragua just started
+# DST on Sunday 2005-04-10, in order to save energy because of
+# expensive petroleum. The exact end date for DST is not yet
+# announced, only "September" but some sites also say "mid-September".
+# Some background information is available on the President's official site:
+# http://www.presidencia.gob.ni/Presidencia/Files_index/Secretaria/Notas%20de%20Prensa/Presidente/2005/ABRIL/Gobierno-de-nicaragua-adelanta-hora-oficial-06abril.htm
+# The Decree, no 23-2005 is available here:
+# http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2005/Decreto%2023-2005%20Se%20adelanta%20en%20una%20hora%20en%20todo%20el%20territorio%20nacional%20apartir%20de%20las%2024horas%20del%2009%20de%20Abril.pdf
+#
+# From Paul Eggert (2005-05-01):
+# The decree doesn't say anything about daylight saving, but for now let's
+# assume that it is daylight saving....
+#
+# From Gwillim Law (2005-04-21):
+# The Associated Press story on the time change, which can be found at
+# http://www.lapalmainteractivo.com/guias/content/gen/ap/America_Latina/AMC_GEN_NICARAGUA_HORA.html
+# and elsewhere, says (fifth paragraph, translated from Spanish): "The last
+# time that a change of clocks was applied to save energy was in the year 2000
+# during the Arnoldo Aleman administration."...
+# The northamerica file says that Nicaragua has been on UTC-6 continuously
+# since December 1998. I wasn't able to find any details of Nicaraguan time
+# changes in 2000. Perhaps a note could be added to the northamerica file, to
+# the effect that we have indirect evidence that DST was observed in 2000.
+#
+# From Jesper Norgaard Welen (2005-11-02):
+# Nicaragua left DST the 2005-10-02 at 00:00 (local time).
+# http://www.presidencia.gob.ni/presidencia/files_index/secretaria/comunicados/2005/septiembre/26septiembre-cambio-hora.htm
+# (2005-09-26)
+#
+# From Jesper Norgaard Welen (2006-05-05):
+# http://www.elnuevodiario.com.ni/2006/05/01/nacionales/18410
+# (my informal translation)
+# By order of the president of the republic, Enrique Bolanos, Nicaragua
+# advanced by sixty minutes their official time, yesterday at 2 in the
+# morning, and will stay that way until 30.th. of september.
+#
+# From Jesper Norgaard Welen (2006-09-30):
+# http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2006/D-063-2006P-PRN-Cambio-Hora.pdf
+# My informal translation runs:
+# The natural sun time is restored in all the national territory, in that the
+# time is returned one hour at 01:00 am of October 1 of 2006.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Nic 1979 1980 - Mar Sun>=16 0:00 1:00 D
+Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
+Rule Nic 2005 only - Apr 10 0:00 1:00 D
+Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
+Rule Nic 2006 only - Apr 30 2:00 1:00 D
+Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Managua -5:45:08 - LMT 1890
+ -5:45:12 - MMT 1934 Jun 23 # Managua Mean Time?
+ -6:00 - CST 1973 May
+ -5:00 - EST 1975 Feb 16
+ -6:00 Nic C%sT 1992 Jan 1 4:00
+ -5:00 - EST 1992 Sep 24
+ -6:00 - CST 1993
+ -5:00 - EST 1997
+ -6:00 Nic C%sT
+
+# Panama
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Panama -5:18:08 - LMT 1890
+ -5:19:36 - CMT 1908 Apr 22 # Colon Mean Time
+ -5:00 - EST
+
+# Puerto Rico
+# There are too many San Juans elsewhere, so we'll use `Puerto_Rico'.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12:00 # San Juan
+ -4:00 - AST 1942 May 3
+ -4:00 US A%sT 1946
+ -4:00 - AST
+
+# St Kitts-Nevis
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/St_Kitts -4:10:52 - LMT 1912 Mar 2 # Basseterre
+ -4:00 - AST
+
+# St Lucia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/St_Lucia -4:04:00 - LMT 1890 # Castries
+ -4:04:00 - CMT 1912 # Castries Mean Time
+ -4:00 - AST
+
+# St Pierre and Miquelon
+# There are too many St Pierres elsewhere, so we'll use `Miquelon'.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Miquelon -3:44:40 - LMT 1911 May 15 # St Pierre
+ -4:00 - AST 1980 May
+ -3:00 - PMST 1987 # Pierre & Miquelon Time
+ -3:00 Canada PM%sT
+
+# St Vincent and the Grenadines
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/St_Vincent -4:04:56 - LMT 1890 # Kingstown
+ -4:04:56 - KMT 1912 # Kingstown Mean Time
+ -4:00 - AST
+
+# Turks and Caicos
+#
+# From Chris Dunn in
+# <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=415007>
+# (2007-03-15): In the Turks & Caicos Islands (America/Grand_Turk) the
+# daylight saving dates for time changes have been adjusted to match
+# the recent U.S. change of dates.
+#
+# From Brian Inglis (2007-04-28):
+# http://www.turksandcaicos.tc/calendar/index.htm [2007-04-26]
+# there is an entry for Nov 4 "Daylight Savings Time Ends 2007" and three
+# rows before that there is an out of date entry for Oct:
+# "Eastern Standard Times Begins 2007
+# Clocks are set back one hour at 2:00 a.m. local Daylight Saving Time"
+# indicating that the normal ET rules are followed.
+#
+# From Paul Eggert (2006-05-01):
+# Shanks & Pottenger say they use US DST rules, but IATA SSIM (1991/1998)
+# says they switch at midnight. Go with Shanks & Pottenger.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule TC 1979 1986 - Apr lastSun 2:00 1:00 D
+Rule TC 1979 2006 - Oct lastSun 2:00 0 S
+Rule TC 1987 2006 - Apr Sun>=1 2:00 1:00 D
+Rule TC 2007 max - Mar Sun>=8 2:00 1:00 D
+Rule TC 2007 max - Nov Sun>=1 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Grand_Turk -4:44:32 - LMT 1890
+ -5:07:12 - KMT 1912 Feb # Kingston Mean Time
+ -5:00 TC E%sT
+
+# British Virgin Is
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Tortola -4:18:28 - LMT 1911 Jul # Road Town
+ -4:00 - AST
+
+# Virgin Is
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/St_Thomas -4:19:44 - LMT 1911 Jul # Charlotte Amalie
+ -4:00 - AST
diff --git a/jdk/make/sun/javazic/tzdata/pacificnew b/jdk/make/sun/javazic/tzdata/pacificnew
new file mode 100644
index 0000000..5cc4387
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/pacificnew
@@ -0,0 +1,48 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# From Arthur David Olson (1989-04-05):
+# On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill
+# establishing "Pacific Presidential Election Time"; it was not acted on
+# by the Senate or signed into law by the President.
+# You might want to change the "PE" (Presidential Election) below to
+# "Q" (Quadrennial) to maintain three-character zone abbreviations.
+# If you're really conservative, you might want to change it to "D".
+# Avoid "L" (Leap Year), which won't be true in 2100.
+
+# If Presidential Election Time is ever established, replace "XXXX" below
+# with the year the law takes effect and uncomment the "##" lines.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+## Rule Twilite XXXX max - Apr Sun>=1 2:00 1:00 D
+## Rule Twilite XXXX max uspres Oct lastSun 2:00 1:00 PE
+## Rule Twilite XXXX max uspres Nov Sun>=7 2:00 0 S
+## Rule Twilite XXXX max nonpres Oct lastSun 2:00 0 S
+
+# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
+## Zone America/Los_Angeles-PET -8:00 US P%sT XXXX
+## -8:00 Twilite P%sT
+
+# For now...
+Link America/Los_Angeles US/Pacific-New ##
diff --git a/jdk/make/sun/javazic/tzdata/solar87 b/jdk/make/sun/javazic/tzdata/solar87
new file mode 100644
index 0000000..6e3bfe5
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/solar87
@@ -0,0 +1,410 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# So much for footnotes about Saudi Arabia.
+# Apparent noon times below are for Riyadh; your mileage will vary.
+# Times were computed using formulas in the U.S. Naval Observatory's
+# Almanac for Computers 1987; the formulas "will give EqT to an accuracy of
+# [plus or minus two] seconds during the current year."
+#
+# Rounding to the nearest five seconds results in fewer than
+# 256 different "time types"--a limit that's faced because time types are
+# stored on disk as unsigned chars.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule sol87 1987 only - Jan 1 12:03:20s -0:03:20 -
+Rule sol87 1987 only - Jan 2 12:03:50s -0:03:50 -
+Rule sol87 1987 only - Jan 3 12:04:15s -0:04:15 -
+Rule sol87 1987 only - Jan 4 12:04:45s -0:04:45 -
+Rule sol87 1987 only - Jan 5 12:05:10s -0:05:10 -
+Rule sol87 1987 only - Jan 6 12:05:40s -0:05:40 -
+Rule sol87 1987 only - Jan 7 12:06:05s -0:06:05 -
+Rule sol87 1987 only - Jan 8 12:06:30s -0:06:30 -
+Rule sol87 1987 only - Jan 9 12:06:55s -0:06:55 -
+Rule sol87 1987 only - Jan 10 12:07:20s -0:07:20 -
+Rule sol87 1987 only - Jan 11 12:07:45s -0:07:45 -
+Rule sol87 1987 only - Jan 12 12:08:10s -0:08:10 -
+Rule sol87 1987 only - Jan 13 12:08:30s -0:08:30 -
+Rule sol87 1987 only - Jan 14 12:08:55s -0:08:55 -
+Rule sol87 1987 only - Jan 15 12:09:15s -0:09:15 -
+Rule sol87 1987 only - Jan 16 12:09:35s -0:09:35 -
+Rule sol87 1987 only - Jan 17 12:09:55s -0:09:55 -
+Rule sol87 1987 only - Jan 18 12:10:15s -0:10:15 -
+Rule sol87 1987 only - Jan 19 12:10:35s -0:10:35 -
+Rule sol87 1987 only - Jan 20 12:10:55s -0:10:55 -
+Rule sol87 1987 only - Jan 21 12:11:10s -0:11:10 -
+Rule sol87 1987 only - Jan 22 12:11:30s -0:11:30 -
+Rule sol87 1987 only - Jan 23 12:11:45s -0:11:45 -
+Rule sol87 1987 only - Jan 24 12:12:00s -0:12:00 -
+Rule sol87 1987 only - Jan 25 12:12:15s -0:12:15 -
+Rule sol87 1987 only - Jan 26 12:12:30s -0:12:30 -
+Rule sol87 1987 only - Jan 27 12:12:40s -0:12:40 -
+Rule sol87 1987 only - Jan 28 12:12:55s -0:12:55 -
+Rule sol87 1987 only - Jan 29 12:13:05s -0:13:05 -
+Rule sol87 1987 only - Jan 30 12:13:15s -0:13:15 -
+Rule sol87 1987 only - Jan 31 12:13:25s -0:13:25 -
+Rule sol87 1987 only - Feb 1 12:13:35s -0:13:35 -
+Rule sol87 1987 only - Feb 2 12:13:40s -0:13:40 -
+Rule sol87 1987 only - Feb 3 12:13:50s -0:13:50 -
+Rule sol87 1987 only - Feb 4 12:13:55s -0:13:55 -
+Rule sol87 1987 only - Feb 5 12:14:00s -0:14:00 -
+Rule sol87 1987 only - Feb 6 12:14:05s -0:14:05 -
+Rule sol87 1987 only - Feb 7 12:14:10s -0:14:10 -
+Rule sol87 1987 only - Feb 8 12:14:10s -0:14:10 -
+Rule sol87 1987 only - Feb 9 12:14:15s -0:14:15 -
+Rule sol87 1987 only - Feb 10 12:14:15s -0:14:15 -
+Rule sol87 1987 only - Feb 11 12:14:15s -0:14:15 -
+Rule sol87 1987 only - Feb 12 12:14:15s -0:14:15 -
+Rule sol87 1987 only - Feb 13 12:14:15s -0:14:15 -
+Rule sol87 1987 only - Feb 14 12:14:15s -0:14:15 -
+Rule sol87 1987 only - Feb 15 12:14:10s -0:14:10 -
+Rule sol87 1987 only - Feb 16 12:14:10s -0:14:10 -
+Rule sol87 1987 only - Feb 17 12:14:05s -0:14:05 -
+Rule sol87 1987 only - Feb 18 12:14:00s -0:14:00 -
+Rule sol87 1987 only - Feb 19 12:13:55s -0:13:55 -
+Rule sol87 1987 only - Feb 20 12:13:50s -0:13:50 -
+Rule sol87 1987 only - Feb 21 12:13:45s -0:13:45 -
+Rule sol87 1987 only - Feb 22 12:13:35s -0:13:35 -
+Rule sol87 1987 only - Feb 23 12:13:30s -0:13:30 -
+Rule sol87 1987 only - Feb 24 12:13:20s -0:13:20 -
+Rule sol87 1987 only - Feb 25 12:13:10s -0:13:10 -
+Rule sol87 1987 only - Feb 26 12:13:00s -0:13:00 -
+Rule sol87 1987 only - Feb 27 12:12:50s -0:12:50 -
+Rule sol87 1987 only - Feb 28 12:12:40s -0:12:40 -
+Rule sol87 1987 only - Mar 1 12:12:30s -0:12:30 -
+Rule sol87 1987 only - Mar 2 12:12:20s -0:12:20 -
+Rule sol87 1987 only - Mar 3 12:12:05s -0:12:05 -
+Rule sol87 1987 only - Mar 4 12:11:55s -0:11:55 -
+Rule sol87 1987 only - Mar 5 12:11:40s -0:11:40 -
+Rule sol87 1987 only - Mar 6 12:11:25s -0:11:25 -
+Rule sol87 1987 only - Mar 7 12:11:15s -0:11:15 -
+Rule sol87 1987 only - Mar 8 12:11:00s -0:11:00 -
+Rule sol87 1987 only - Mar 9 12:10:45s -0:10:45 -
+Rule sol87 1987 only - Mar 10 12:10:30s -0:10:30 -
+Rule sol87 1987 only - Mar 11 12:10:15s -0:10:15 -
+Rule sol87 1987 only - Mar 12 12:09:55s -0:09:55 -
+Rule sol87 1987 only - Mar 13 12:09:40s -0:09:40 -
+Rule sol87 1987 only - Mar 14 12:09:25s -0:09:25 -
+Rule sol87 1987 only - Mar 15 12:09:10s -0:09:10 -
+Rule sol87 1987 only - Mar 16 12:08:50s -0:08:50 -
+Rule sol87 1987 only - Mar 17 12:08:35s -0:08:35 -
+Rule sol87 1987 only - Mar 18 12:08:15s -0:08:15 -
+Rule sol87 1987 only - Mar 19 12:08:00s -0:08:00 -
+Rule sol87 1987 only - Mar 20 12:07:40s -0:07:40 -
+Rule sol87 1987 only - Mar 21 12:07:25s -0:07:25 -
+Rule sol87 1987 only - Mar 22 12:07:05s -0:07:05 -
+Rule sol87 1987 only - Mar 23 12:06:50s -0:06:50 -
+Rule sol87 1987 only - Mar 24 12:06:30s -0:06:30 -
+Rule sol87 1987 only - Mar 25 12:06:10s -0:06:10 -
+Rule sol87 1987 only - Mar 26 12:05:55s -0:05:55 -
+Rule sol87 1987 only - Mar 27 12:05:35s -0:05:35 -
+Rule sol87 1987 only - Mar 28 12:05:15s -0:05:15 -
+Rule sol87 1987 only - Mar 29 12:05:00s -0:05:00 -
+Rule sol87 1987 only - Mar 30 12:04:40s -0:04:40 -
+Rule sol87 1987 only - Mar 31 12:04:25s -0:04:25 -
+Rule sol87 1987 only - Apr 1 12:04:05s -0:04:05 -
+Rule sol87 1987 only - Apr 2 12:03:45s -0:03:45 -
+Rule sol87 1987 only - Apr 3 12:03:30s -0:03:30 -
+Rule sol87 1987 only - Apr 4 12:03:10s -0:03:10 -
+Rule sol87 1987 only - Apr 5 12:02:55s -0:02:55 -
+Rule sol87 1987 only - Apr 6 12:02:35s -0:02:35 -
+Rule sol87 1987 only - Apr 7 12:02:20s -0:02:20 -
+Rule sol87 1987 only - Apr 8 12:02:05s -0:02:05 -
+Rule sol87 1987 only - Apr 9 12:01:45s -0:01:45 -
+Rule sol87 1987 only - Apr 10 12:01:30s -0:01:30 -
+Rule sol87 1987 only - Apr 11 12:01:15s -0:01:15 -
+Rule sol87 1987 only - Apr 12 12:00:55s -0:00:55 -
+Rule sol87 1987 only - Apr 13 12:00:40s -0:00:40 -
+Rule sol87 1987 only - Apr 14 12:00:25s -0:00:25 -
+Rule sol87 1987 only - Apr 15 12:00:10s -0:00:10 -
+Rule sol87 1987 only - Apr 16 11:59:55s 0:00:05 -
+Rule sol87 1987 only - Apr 17 11:59:45s 0:00:15 -
+Rule sol87 1987 only - Apr 18 11:59:30s 0:00:30 -
+Rule sol87 1987 only - Apr 19 11:59:15s 0:00:45 -
+Rule sol87 1987 only - Apr 20 11:59:05s 0:00:55 -
+Rule sol87 1987 only - Apr 21 11:58:50s 0:01:10 -
+Rule sol87 1987 only - Apr 22 11:58:40s 0:01:20 -
+Rule sol87 1987 only - Apr 23 11:58:25s 0:01:35 -
+Rule sol87 1987 only - Apr 24 11:58:15s 0:01:45 -
+Rule sol87 1987 only - Apr 25 11:58:05s 0:01:55 -
+Rule sol87 1987 only - Apr 26 11:57:55s 0:02:05 -
+Rule sol87 1987 only - Apr 27 11:57:45s 0:02:15 -
+Rule sol87 1987 only - Apr 28 11:57:35s 0:02:25 -
+Rule sol87 1987 only - Apr 29 11:57:25s 0:02:35 -
+Rule sol87 1987 only - Apr 30 11:57:15s 0:02:45 -
+Rule sol87 1987 only - May 1 11:57:10s 0:02:50 -
+Rule sol87 1987 only - May 2 11:57:00s 0:03:00 -
+Rule sol87 1987 only - May 3 11:56:55s 0:03:05 -
+Rule sol87 1987 only - May 4 11:56:50s 0:03:10 -
+Rule sol87 1987 only - May 5 11:56:45s 0:03:15 -
+Rule sol87 1987 only - May 6 11:56:40s 0:03:20 -
+Rule sol87 1987 only - May 7 11:56:35s 0:03:25 -
+Rule sol87 1987 only - May 8 11:56:30s 0:03:30 -
+Rule sol87 1987 only - May 9 11:56:25s 0:03:35 -
+Rule sol87 1987 only - May 10 11:56:25s 0:03:35 -
+Rule sol87 1987 only - May 11 11:56:20s 0:03:40 -
+Rule sol87 1987 only - May 12 11:56:20s 0:03:40 -
+Rule sol87 1987 only - May 13 11:56:20s 0:03:40 -
+Rule sol87 1987 only - May 14 11:56:20s 0:03:40 -
+Rule sol87 1987 only - May 15 11:56:20s 0:03:40 -
+Rule sol87 1987 only - May 16 11:56:20s 0:03:40 -
+Rule sol87 1987 only - May 17 11:56:20s 0:03:40 -
+Rule sol87 1987 only - May 18 11:56:20s 0:03:40 -
+Rule sol87 1987 only - May 19 11:56:25s 0:03:35 -
+Rule sol87 1987 only - May 20 11:56:25s 0:03:35 -
+Rule sol87 1987 only - May 21 11:56:30s 0:03:30 -
+Rule sol87 1987 only - May 22 11:56:35s 0:03:25 -
+Rule sol87 1987 only - May 23 11:56:40s 0:03:20 -
+Rule sol87 1987 only - May 24 11:56:45s 0:03:15 -
+Rule sol87 1987 only - May 25 11:56:50s 0:03:10 -
+Rule sol87 1987 only - May 26 11:56:55s 0:03:05 -
+Rule sol87 1987 only - May 27 11:57:00s 0:03:00 -
+Rule sol87 1987 only - May 28 11:57:10s 0:02:50 -
+Rule sol87 1987 only - May 29 11:57:15s 0:02:45 -
+Rule sol87 1987 only - May 30 11:57:25s 0:02:35 -
+Rule sol87 1987 only - May 31 11:57:30s 0:02:30 -
+Rule sol87 1987 only - Jun 1 11:57:40s 0:02:20 -
+Rule sol87 1987 only - Jun 2 11:57:50s 0:02:10 -
+Rule sol87 1987 only - Jun 3 11:58:00s 0:02:00 -
+Rule sol87 1987 only - Jun 4 11:58:10s 0:01:50 -
+Rule sol87 1987 only - Jun 5 11:58:20s 0:01:40 -
+Rule sol87 1987 only - Jun 6 11:58:30s 0:01:30 -
+Rule sol87 1987 only - Jun 7 11:58:40s 0:01:20 -
+Rule sol87 1987 only - Jun 8 11:58:50s 0:01:10 -
+Rule sol87 1987 only - Jun 9 11:59:05s 0:00:55 -
+Rule sol87 1987 only - Jun 10 11:59:15s 0:00:45 -
+Rule sol87 1987 only - Jun 11 11:59:30s 0:00:30 -
+Rule sol87 1987 only - Jun 12 11:59:40s 0:00:20 -
+Rule sol87 1987 only - Jun 13 11:59:50s 0:00:10 -
+Rule sol87 1987 only - Jun 14 12:00:05s -0:00:05 -
+Rule sol87 1987 only - Jun 15 12:00:15s -0:00:15 -
+Rule sol87 1987 only - Jun 16 12:00:30s -0:00:30 -
+Rule sol87 1987 only - Jun 17 12:00:45s -0:00:45 -
+Rule sol87 1987 only - Jun 18 12:00:55s -0:00:55 -
+Rule sol87 1987 only - Jun 19 12:01:10s -0:01:10 -
+Rule sol87 1987 only - Jun 20 12:01:20s -0:01:20 -
+Rule sol87 1987 only - Jun 21 12:01:35s -0:01:35 -
+Rule sol87 1987 only - Jun 22 12:01:50s -0:01:50 -
+Rule sol87 1987 only - Jun 23 12:02:00s -0:02:00 -
+Rule sol87 1987 only - Jun 24 12:02:15s -0:02:15 -
+Rule sol87 1987 only - Jun 25 12:02:25s -0:02:25 -
+Rule sol87 1987 only - Jun 26 12:02:40s -0:02:40 -
+Rule sol87 1987 only - Jun 27 12:02:50s -0:02:50 -
+Rule sol87 1987 only - Jun 28 12:03:05s -0:03:05 -
+Rule sol87 1987 only - Jun 29 12:03:15s -0:03:15 -
+Rule sol87 1987 only - Jun 30 12:03:30s -0:03:30 -
+Rule sol87 1987 only - Jul 1 12:03:40s -0:03:40 -
+Rule sol87 1987 only - Jul 2 12:03:50s -0:03:50 -
+Rule sol87 1987 only - Jul 3 12:04:05s -0:04:05 -
+Rule sol87 1987 only - Jul 4 12:04:15s -0:04:15 -
+Rule sol87 1987 only - Jul 5 12:04:25s -0:04:25 -
+Rule sol87 1987 only - Jul 6 12:04:35s -0:04:35 -
+Rule sol87 1987 only - Jul 7 12:04:45s -0:04:45 -
+Rule sol87 1987 only - Jul 8 12:04:55s -0:04:55 -
+Rule sol87 1987 only - Jul 9 12:05:05s -0:05:05 -
+Rule sol87 1987 only - Jul 10 12:05:15s -0:05:15 -
+Rule sol87 1987 only - Jul 11 12:05:20s -0:05:20 -
+Rule sol87 1987 only - Jul 12 12:05:30s -0:05:30 -
+Rule sol87 1987 only - Jul 13 12:05:40s -0:05:40 -
+Rule sol87 1987 only - Jul 14 12:05:45s -0:05:45 -
+Rule sol87 1987 only - Jul 15 12:05:50s -0:05:50 -
+Rule sol87 1987 only - Jul 16 12:06:00s -0:06:00 -
+Rule sol87 1987 only - Jul 17 12:06:05s -0:06:05 -
+Rule sol87 1987 only - Jul 18 12:06:10s -0:06:10 -
+Rule sol87 1987 only - Jul 19 12:06:15s -0:06:15 -
+Rule sol87 1987 only - Jul 20 12:06:15s -0:06:15 -
+Rule sol87 1987 only - Jul 21 12:06:20s -0:06:20 -
+Rule sol87 1987 only - Jul 22 12:06:25s -0:06:25 -
+Rule sol87 1987 only - Jul 23 12:06:25s -0:06:25 -
+Rule sol87 1987 only - Jul 24 12:06:25s -0:06:25 -
+Rule sol87 1987 only - Jul 25 12:06:30s -0:06:30 -
+Rule sol87 1987 only - Jul 26 12:06:30s -0:06:30 -
+Rule sol87 1987 only - Jul 27 12:06:30s -0:06:30 -
+Rule sol87 1987 only - Jul 28 12:06:30s -0:06:30 -
+Rule sol87 1987 only - Jul 29 12:06:25s -0:06:25 -
+Rule sol87 1987 only - Jul 30 12:06:25s -0:06:25 -
+Rule sol87 1987 only - Jul 31 12:06:25s -0:06:25 -
+Rule sol87 1987 only - Aug 1 12:06:20s -0:06:20 -
+Rule sol87 1987 only - Aug 2 12:06:15s -0:06:15 -
+Rule sol87 1987 only - Aug 3 12:06:10s -0:06:10 -
+Rule sol87 1987 only - Aug 4 12:06:05s -0:06:05 -
+Rule sol87 1987 only - Aug 5 12:06:00s -0:06:00 -
+Rule sol87 1987 only - Aug 6 12:05:55s -0:05:55 -
+Rule sol87 1987 only - Aug 7 12:05:50s -0:05:50 -
+Rule sol87 1987 only - Aug 8 12:05:40s -0:05:40 -
+Rule sol87 1987 only - Aug 9 12:05:35s -0:05:35 -
+Rule sol87 1987 only - Aug 10 12:05:25s -0:05:25 -
+Rule sol87 1987 only - Aug 11 12:05:15s -0:05:15 -
+Rule sol87 1987 only - Aug 12 12:05:05s -0:05:05 -
+Rule sol87 1987 only - Aug 13 12:04:55s -0:04:55 -
+Rule sol87 1987 only - Aug 14 12:04:45s -0:04:45 -
+Rule sol87 1987 only - Aug 15 12:04:35s -0:04:35 -
+Rule sol87 1987 only - Aug 16 12:04:25s -0:04:25 -
+Rule sol87 1987 only - Aug 17 12:04:10s -0:04:10 -
+Rule sol87 1987 only - Aug 18 12:04:00s -0:04:00 -
+Rule sol87 1987 only - Aug 19 12:03:45s -0:03:45 -
+Rule sol87 1987 only - Aug 20 12:03:30s -0:03:30 -
+Rule sol87 1987 only - Aug 21 12:03:15s -0:03:15 -
+Rule sol87 1987 only - Aug 22 12:03:00s -0:03:00 -
+Rule sol87 1987 only - Aug 23 12:02:45s -0:02:45 -
+Rule sol87 1987 only - Aug 24 12:02:30s -0:02:30 -
+Rule sol87 1987 only - Aug 25 12:02:15s -0:02:15 -
+Rule sol87 1987 only - Aug 26 12:02:00s -0:02:00 -
+Rule sol87 1987 only - Aug 27 12:01:40s -0:01:40 -
+Rule sol87 1987 only - Aug 28 12:01:25s -0:01:25 -
+Rule sol87 1987 only - Aug 29 12:01:05s -0:01:05 -
+Rule sol87 1987 only - Aug 30 12:00:50s -0:00:50 -
+Rule sol87 1987 only - Aug 31 12:00:30s -0:00:30 -
+Rule sol87 1987 only - Sep 1 12:00:10s -0:00:10 -
+Rule sol87 1987 only - Sep 2 11:59:50s 0:00:10 -
+Rule sol87 1987 only - Sep 3 11:59:35s 0:00:25 -
+Rule sol87 1987 only - Sep 4 11:59:15s 0:00:45 -
+Rule sol87 1987 only - Sep 5 11:58:55s 0:01:05 -
+Rule sol87 1987 only - Sep 6 11:58:35s 0:01:25 -
+Rule sol87 1987 only - Sep 7 11:58:15s 0:01:45 -
+Rule sol87 1987 only - Sep 8 11:57:55s 0:02:05 -
+Rule sol87 1987 only - Sep 9 11:57:30s 0:02:30 -
+Rule sol87 1987 only - Sep 10 11:57:10s 0:02:50 -
+Rule sol87 1987 only - Sep 11 11:56:50s 0:03:10 -
+Rule sol87 1987 only - Sep 12 11:56:30s 0:03:30 -
+Rule sol87 1987 only - Sep 13 11:56:10s 0:03:50 -
+Rule sol87 1987 only - Sep 14 11:55:45s 0:04:15 -
+Rule sol87 1987 only - Sep 15 11:55:25s 0:04:35 -
+Rule sol87 1987 only - Sep 16 11:55:05s 0:04:55 -
+Rule sol87 1987 only - Sep 17 11:54:45s 0:05:15 -
+Rule sol87 1987 only - Sep 18 11:54:20s 0:05:40 -
+Rule sol87 1987 only - Sep 19 11:54:00s 0:06:00 -
+Rule sol87 1987 only - Sep 20 11:53:40s 0:06:20 -
+Rule sol87 1987 only - Sep 21 11:53:15s 0:06:45 -
+Rule sol87 1987 only - Sep 22 11:52:55s 0:07:05 -
+Rule sol87 1987 only - Sep 23 11:52:35s 0:07:25 -
+Rule sol87 1987 only - Sep 24 11:52:15s 0:07:45 -
+Rule sol87 1987 only - Sep 25 11:51:55s 0:08:05 -
+Rule sol87 1987 only - Sep 26 11:51:35s 0:08:25 -
+Rule sol87 1987 only - Sep 27 11:51:10s 0:08:50 -
+Rule sol87 1987 only - Sep 28 11:50:50s 0:09:10 -
+Rule sol87 1987 only - Sep 29 11:50:30s 0:09:30 -
+Rule sol87 1987 only - Sep 30 11:50:10s 0:09:50 -
+Rule sol87 1987 only - Oct 1 11:49:50s 0:10:10 -
+Rule sol87 1987 only - Oct 2 11:49:35s 0:10:25 -
+Rule sol87 1987 only - Oct 3 11:49:15s 0:10:45 -
+Rule sol87 1987 only - Oct 4 11:48:55s 0:11:05 -
+Rule sol87 1987 only - Oct 5 11:48:35s 0:11:25 -
+Rule sol87 1987 only - Oct 6 11:48:20s 0:11:40 -
+Rule sol87 1987 only - Oct 7 11:48:00s 0:12:00 -
+Rule sol87 1987 only - Oct 8 11:47:45s 0:12:15 -
+Rule sol87 1987 only - Oct 9 11:47:25s 0:12:35 -
+Rule sol87 1987 only - Oct 10 11:47:10s 0:12:50 -
+Rule sol87 1987 only - Oct 11 11:46:55s 0:13:05 -
+Rule sol87 1987 only - Oct 12 11:46:40s 0:13:20 -
+Rule sol87 1987 only - Oct 13 11:46:25s 0:13:35 -
+Rule sol87 1987 only - Oct 14 11:46:10s 0:13:50 -
+Rule sol87 1987 only - Oct 15 11:45:55s 0:14:05 -
+Rule sol87 1987 only - Oct 16 11:45:45s 0:14:15 -
+Rule sol87 1987 only - Oct 17 11:45:30s 0:14:30 -
+Rule sol87 1987 only - Oct 18 11:45:20s 0:14:40 -
+Rule sol87 1987 only - Oct 19 11:45:05s 0:14:55 -
+Rule sol87 1987 only - Oct 20 11:44:55s 0:15:05 -
+Rule sol87 1987 only - Oct 21 11:44:45s 0:15:15 -
+Rule sol87 1987 only - Oct 22 11:44:35s 0:15:25 -
+Rule sol87 1987 only - Oct 23 11:44:25s 0:15:35 -
+Rule sol87 1987 only - Oct 24 11:44:20s 0:15:40 -
+Rule sol87 1987 only - Oct 25 11:44:10s 0:15:50 -
+Rule sol87 1987 only - Oct 26 11:44:05s 0:15:55 -
+Rule sol87 1987 only - Oct 27 11:43:55s 0:16:05 -
+Rule sol87 1987 only - Oct 28 11:43:50s 0:16:10 -
+Rule sol87 1987 only - Oct 29 11:43:45s 0:16:15 -
+Rule sol87 1987 only - Oct 30 11:43:45s 0:16:15 -
+Rule sol87 1987 only - Oct 31 11:43:40s 0:16:20 -
+Rule sol87 1987 only - Nov 1 11:43:40s 0:16:20 -
+Rule sol87 1987 only - Nov 2 11:43:35s 0:16:25 -
+Rule sol87 1987 only - Nov 3 11:43:35s 0:16:25 -
+Rule sol87 1987 only - Nov 4 11:43:35s 0:16:25 -
+Rule sol87 1987 only - Nov 5 11:43:35s 0:16:25 -
+Rule sol87 1987 only - Nov 6 11:43:40s 0:16:20 -
+Rule sol87 1987 only - Nov 7 11:43:40s 0:16:20 -
+Rule sol87 1987 only - Nov 8 11:43:45s 0:16:15 -
+Rule sol87 1987 only - Nov 9 11:43:50s 0:16:10 -
+Rule sol87 1987 only - Nov 10 11:43:55s 0:16:05 -
+Rule sol87 1987 only - Nov 11 11:44:00s 0:16:00 -
+Rule sol87 1987 only - Nov 12 11:44:05s 0:15:55 -
+Rule sol87 1987 only - Nov 13 11:44:15s 0:15:45 -
+Rule sol87 1987 only - Nov 14 11:44:20s 0:15:40 -
+Rule sol87 1987 only - Nov 15 11:44:30s 0:15:30 -
+Rule sol87 1987 only - Nov 16 11:44:40s 0:15:20 -
+Rule sol87 1987 only - Nov 17 11:44:50s 0:15:10 -
+Rule sol87 1987 only - Nov 18 11:45:05s 0:14:55 -
+Rule sol87 1987 only - Nov 19 11:45:15s 0:14:45 -
+Rule sol87 1987 only - Nov 20 11:45:30s 0:14:30 -
+Rule sol87 1987 only - Nov 21 11:45:45s 0:14:15 -
+Rule sol87 1987 only - Nov 22 11:46:00s 0:14:00 -
+Rule sol87 1987 only - Nov 23 11:46:15s 0:13:45 -
+Rule sol87 1987 only - Nov 24 11:46:30s 0:13:30 -
+Rule sol87 1987 only - Nov 25 11:46:50s 0:13:10 -
+Rule sol87 1987 only - Nov 26 11:47:10s 0:12:50 -
+Rule sol87 1987 only - Nov 27 11:47:25s 0:12:35 -
+Rule sol87 1987 only - Nov 28 11:47:45s 0:12:15 -
+Rule sol87 1987 only - Nov 29 11:48:05s 0:11:55 -
+Rule sol87 1987 only - Nov 30 11:48:30s 0:11:30 -
+Rule sol87 1987 only - Dec 1 11:48:50s 0:11:10 -
+Rule sol87 1987 only - Dec 2 11:49:10s 0:10:50 -
+Rule sol87 1987 only - Dec 3 11:49:35s 0:10:25 -
+Rule sol87 1987 only - Dec 4 11:50:00s 0:10:00 -
+Rule sol87 1987 only - Dec 5 11:50:25s 0:09:35 -
+Rule sol87 1987 only - Dec 6 11:50:50s 0:09:10 -
+Rule sol87 1987 only - Dec 7 11:51:15s 0:08:45 -
+Rule sol87 1987 only - Dec 8 11:51:40s 0:08:20 -
+Rule sol87 1987 only - Dec 9 11:52:05s 0:07:55 -
+Rule sol87 1987 only - Dec 10 11:52:30s 0:07:30 -
+Rule sol87 1987 only - Dec 11 11:53:00s 0:07:00 -
+Rule sol87 1987 only - Dec 12 11:53:25s 0:06:35 -
+Rule sol87 1987 only - Dec 13 11:53:55s 0:06:05 -
+Rule sol87 1987 only - Dec 14 11:54:25s 0:05:35 -
+Rule sol87 1987 only - Dec 15 11:54:50s 0:05:10 -
+Rule sol87 1987 only - Dec 16 11:55:20s 0:04:40 -
+Rule sol87 1987 only - Dec 17 11:55:50s 0:04:10 -
+Rule sol87 1987 only - Dec 18 11:56:20s 0:03:40 -
+Rule sol87 1987 only - Dec 19 11:56:50s 0:03:10 -
+Rule sol87 1987 only - Dec 20 11:57:20s 0:02:40 -
+Rule sol87 1987 only - Dec 21 11:57:50s 0:02:10 -
+Rule sol87 1987 only - Dec 22 11:58:20s 0:01:40 -
+Rule sol87 1987 only - Dec 23 11:58:50s 0:01:10 -
+Rule sol87 1987 only - Dec 24 11:59:20s 0:00:40 -
+Rule sol87 1987 only - Dec 25 11:59:50s 0:00:10 -
+Rule sol87 1987 only - Dec 26 12:00:20s -0:00:20 -
+Rule sol87 1987 only - Dec 27 12:00:45s -0:00:45 -
+Rule sol87 1987 only - Dec 28 12:01:15s -0:01:15 -
+Rule sol87 1987 only - Dec 29 12:01:45s -0:01:45 -
+Rule sol87 1987 only - Dec 30 12:02:15s -0:02:15 -
+Rule sol87 1987 only - Dec 31 12:02:45s -0:02:45 -
+
+# Riyadh is at about 46 degrees 46 minutes East: 3 hrs, 7 mins, 4 secs
+# Before and after 1987, we'll operate on local mean solar time.
+
+# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
+Zone Asia/Riyadh87 3:07:04 - zzz 1987
+ 3:07:04 sol87 zzz 1988
+ 3:07:04 - zzz
+# For backward compatibility...
+Link Asia/Riyadh87 Mideast/Riyadh87
diff --git a/jdk/make/sun/javazic/tzdata/solar88 b/jdk/make/sun/javazic/tzdata/solar88
new file mode 100644
index 0000000..e5d3265
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/solar88
@@ -0,0 +1,410 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Apparent noon times below are for Riyadh; they're a bit off for other places.
+# Times were computed using formulas in the U.S. Naval Observatory's
+# Almanac for Computers 1988; the formulas "will give EqT to an accuracy of
+# [plus or minus two] seconds during the current year."
+#
+# Rounding to the nearest five seconds results in fewer than
+# 256 different "time types"--a limit that's faced because time types are
+# stored on disk as unsigned chars.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule sol88 1988 only - Jan 1 12:03:15s -0:03:15 -
+Rule sol88 1988 only - Jan 2 12:03:40s -0:03:40 -
+Rule sol88 1988 only - Jan 3 12:04:10s -0:04:10 -
+Rule sol88 1988 only - Jan 4 12:04:40s -0:04:40 -
+Rule sol88 1988 only - Jan 5 12:05:05s -0:05:05 -
+Rule sol88 1988 only - Jan 6 12:05:30s -0:05:30 -
+Rule sol88 1988 only - Jan 7 12:06:00s -0:06:00 -
+Rule sol88 1988 only - Jan 8 12:06:25s -0:06:25 -
+Rule sol88 1988 only - Jan 9 12:06:50s -0:06:50 -
+Rule sol88 1988 only - Jan 10 12:07:15s -0:07:15 -
+Rule sol88 1988 only - Jan 11 12:07:40s -0:07:40 -
+Rule sol88 1988 only - Jan 12 12:08:05s -0:08:05 -
+Rule sol88 1988 only - Jan 13 12:08:25s -0:08:25 -
+Rule sol88 1988 only - Jan 14 12:08:50s -0:08:50 -
+Rule sol88 1988 only - Jan 15 12:09:10s -0:09:10 -
+Rule sol88 1988 only - Jan 16 12:09:30s -0:09:30 -
+Rule sol88 1988 only - Jan 17 12:09:50s -0:09:50 -
+Rule sol88 1988 only - Jan 18 12:10:10s -0:10:10 -
+Rule sol88 1988 only - Jan 19 12:10:30s -0:10:30 -
+Rule sol88 1988 only - Jan 20 12:10:50s -0:10:50 -
+Rule sol88 1988 only - Jan 21 12:11:05s -0:11:05 -
+Rule sol88 1988 only - Jan 22 12:11:25s -0:11:25 -
+Rule sol88 1988 only - Jan 23 12:11:40s -0:11:40 -
+Rule sol88 1988 only - Jan 24 12:11:55s -0:11:55 -
+Rule sol88 1988 only - Jan 25 12:12:10s -0:12:10 -
+Rule sol88 1988 only - Jan 26 12:12:25s -0:12:25 -
+Rule sol88 1988 only - Jan 27 12:12:40s -0:12:40 -
+Rule sol88 1988 only - Jan 28 12:12:50s -0:12:50 -
+Rule sol88 1988 only - Jan 29 12:13:00s -0:13:00 -
+Rule sol88 1988 only - Jan 30 12:13:10s -0:13:10 -
+Rule sol88 1988 only - Jan 31 12:13:20s -0:13:20 -
+Rule sol88 1988 only - Feb 1 12:13:30s -0:13:30 -
+Rule sol88 1988 only - Feb 2 12:13:40s -0:13:40 -
+Rule sol88 1988 only - Feb 3 12:13:45s -0:13:45 -
+Rule sol88 1988 only - Feb 4 12:13:55s -0:13:55 -
+Rule sol88 1988 only - Feb 5 12:14:00s -0:14:00 -
+Rule sol88 1988 only - Feb 6 12:14:05s -0:14:05 -
+Rule sol88 1988 only - Feb 7 12:14:10s -0:14:10 -
+Rule sol88 1988 only - Feb 8 12:14:10s -0:14:10 -
+Rule sol88 1988 only - Feb 9 12:14:15s -0:14:15 -
+Rule sol88 1988 only - Feb 10 12:14:15s -0:14:15 -
+Rule sol88 1988 only - Feb 11 12:14:15s -0:14:15 -
+Rule sol88 1988 only - Feb 12 12:14:15s -0:14:15 -
+Rule sol88 1988 only - Feb 13 12:14:15s -0:14:15 -
+Rule sol88 1988 only - Feb 14 12:14:15s -0:14:15 -
+Rule sol88 1988 only - Feb 15 12:14:10s -0:14:10 -
+Rule sol88 1988 only - Feb 16 12:14:10s -0:14:10 -
+Rule sol88 1988 only - Feb 17 12:14:05s -0:14:05 -
+Rule sol88 1988 only - Feb 18 12:14:00s -0:14:00 -
+Rule sol88 1988 only - Feb 19 12:13:55s -0:13:55 -
+Rule sol88 1988 only - Feb 20 12:13:50s -0:13:50 -
+Rule sol88 1988 only - Feb 21 12:13:45s -0:13:45 -
+Rule sol88 1988 only - Feb 22 12:13:40s -0:13:40 -
+Rule sol88 1988 only - Feb 23 12:13:30s -0:13:30 -
+Rule sol88 1988 only - Feb 24 12:13:20s -0:13:20 -
+Rule sol88 1988 only - Feb 25 12:13:15s -0:13:15 -
+Rule sol88 1988 only - Feb 26 12:13:05s -0:13:05 -
+Rule sol88 1988 only - Feb 27 12:12:55s -0:12:55 -
+Rule sol88 1988 only - Feb 28 12:12:45s -0:12:45 -
+Rule sol88 1988 only - Feb 29 12:12:30s -0:12:30 -
+Rule sol88 1988 only - Mar 1 12:12:20s -0:12:20 -
+Rule sol88 1988 only - Mar 2 12:12:10s -0:12:10 -
+Rule sol88 1988 only - Mar 3 12:11:55s -0:11:55 -
+Rule sol88 1988 only - Mar 4 12:11:45s -0:11:45 -
+Rule sol88 1988 only - Mar 5 12:11:30s -0:11:30 -
+Rule sol88 1988 only - Mar 6 12:11:15s -0:11:15 -
+Rule sol88 1988 only - Mar 7 12:11:00s -0:11:00 -
+Rule sol88 1988 only - Mar 8 12:10:45s -0:10:45 -
+Rule sol88 1988 only - Mar 9 12:10:30s -0:10:30 -
+Rule sol88 1988 only - Mar 10 12:10:15s -0:10:15 -
+Rule sol88 1988 only - Mar 11 12:10:00s -0:10:00 -
+Rule sol88 1988 only - Mar 12 12:09:45s -0:09:45 -
+Rule sol88 1988 only - Mar 13 12:09:30s -0:09:30 -
+Rule sol88 1988 only - Mar 14 12:09:10s -0:09:10 -
+Rule sol88 1988 only - Mar 15 12:08:55s -0:08:55 -
+Rule sol88 1988 only - Mar 16 12:08:40s -0:08:40 -
+Rule sol88 1988 only - Mar 17 12:08:20s -0:08:20 -
+Rule sol88 1988 only - Mar 18 12:08:05s -0:08:05 -
+Rule sol88 1988 only - Mar 19 12:07:45s -0:07:45 -
+Rule sol88 1988 only - Mar 20 12:07:30s -0:07:30 -
+Rule sol88 1988 only - Mar 21 12:07:10s -0:07:10 -
+Rule sol88 1988 only - Mar 22 12:06:50s -0:06:50 -
+Rule sol88 1988 only - Mar 23 12:06:35s -0:06:35 -
+Rule sol88 1988 only - Mar 24 12:06:15s -0:06:15 -
+Rule sol88 1988 only - Mar 25 12:06:00s -0:06:00 -
+Rule sol88 1988 only - Mar 26 12:05:40s -0:05:40 -
+Rule sol88 1988 only - Mar 27 12:05:20s -0:05:20 -
+Rule sol88 1988 only - Mar 28 12:05:05s -0:05:05 -
+Rule sol88 1988 only - Mar 29 12:04:45s -0:04:45 -
+Rule sol88 1988 only - Mar 30 12:04:25s -0:04:25 -
+Rule sol88 1988 only - Mar 31 12:04:10s -0:04:10 -
+Rule sol88 1988 only - Apr 1 12:03:50s -0:03:50 -
+Rule sol88 1988 only - Apr 2 12:03:35s -0:03:35 -
+Rule sol88 1988 only - Apr 3 12:03:15s -0:03:15 -
+Rule sol88 1988 only - Apr 4 12:03:00s -0:03:00 -
+Rule sol88 1988 only - Apr 5 12:02:40s -0:02:40 -
+Rule sol88 1988 only - Apr 6 12:02:25s -0:02:25 -
+Rule sol88 1988 only - Apr 7 12:02:05s -0:02:05 -
+Rule sol88 1988 only - Apr 8 12:01:50s -0:01:50 -
+Rule sol88 1988 only - Apr 9 12:01:35s -0:01:35 -
+Rule sol88 1988 only - Apr 10 12:01:15s -0:01:15 -
+Rule sol88 1988 only - Apr 11 12:01:00s -0:01:00 -
+Rule sol88 1988 only - Apr 12 12:00:45s -0:00:45 -
+Rule sol88 1988 only - Apr 13 12:00:30s -0:00:30 -
+Rule sol88 1988 only - Apr 14 12:00:15s -0:00:15 -
+Rule sol88 1988 only - Apr 15 12:00:00s 0:00:00 -
+Rule sol88 1988 only - Apr 16 11:59:45s 0:00:15 -
+Rule sol88 1988 only - Apr 17 11:59:30s 0:00:30 -
+Rule sol88 1988 only - Apr 18 11:59:20s 0:00:40 -
+Rule sol88 1988 only - Apr 19 11:59:05s 0:00:55 -
+Rule sol88 1988 only - Apr 20 11:58:55s 0:01:05 -
+Rule sol88 1988 only - Apr 21 11:58:40s 0:01:20 -
+Rule sol88 1988 only - Apr 22 11:58:30s 0:01:30 -
+Rule sol88 1988 only - Apr 23 11:58:15s 0:01:45 -
+Rule sol88 1988 only - Apr 24 11:58:05s 0:01:55 -
+Rule sol88 1988 only - Apr 25 11:57:55s 0:02:05 -
+Rule sol88 1988 only - Apr 26 11:57:45s 0:02:15 -
+Rule sol88 1988 only - Apr 27 11:57:35s 0:02:25 -
+Rule sol88 1988 only - Apr 28 11:57:30s 0:02:30 -
+Rule sol88 1988 only - Apr 29 11:57:20s 0:02:40 -
+Rule sol88 1988 only - Apr 30 11:57:10s 0:02:50 -
+Rule sol88 1988 only - May 1 11:57:05s 0:02:55 -
+Rule sol88 1988 only - May 2 11:56:55s 0:03:05 -
+Rule sol88 1988 only - May 3 11:56:50s 0:03:10 -
+Rule sol88 1988 only - May 4 11:56:45s 0:03:15 -
+Rule sol88 1988 only - May 5 11:56:40s 0:03:20 -
+Rule sol88 1988 only - May 6 11:56:35s 0:03:25 -
+Rule sol88 1988 only - May 7 11:56:30s 0:03:30 -
+Rule sol88 1988 only - May 8 11:56:25s 0:03:35 -
+Rule sol88 1988 only - May 9 11:56:25s 0:03:35 -
+Rule sol88 1988 only - May 10 11:56:20s 0:03:40 -
+Rule sol88 1988 only - May 11 11:56:20s 0:03:40 -
+Rule sol88 1988 only - May 12 11:56:20s 0:03:40 -
+Rule sol88 1988 only - May 13 11:56:20s 0:03:40 -
+Rule sol88 1988 only - May 14 11:56:20s 0:03:40 -
+Rule sol88 1988 only - May 15 11:56:20s 0:03:40 -
+Rule sol88 1988 only - May 16 11:56:20s 0:03:40 -
+Rule sol88 1988 only - May 17 11:56:20s 0:03:40 -
+Rule sol88 1988 only - May 18 11:56:25s 0:03:35 -
+Rule sol88 1988 only - May 19 11:56:25s 0:03:35 -
+Rule sol88 1988 only - May 20 11:56:30s 0:03:30 -
+Rule sol88 1988 only - May 21 11:56:35s 0:03:25 -
+Rule sol88 1988 only - May 22 11:56:40s 0:03:20 -
+Rule sol88 1988 only - May 23 11:56:45s 0:03:15 -
+Rule sol88 1988 only - May 24 11:56:50s 0:03:10 -
+Rule sol88 1988 only - May 25 11:56:55s 0:03:05 -
+Rule sol88 1988 only - May 26 11:57:00s 0:03:00 -
+Rule sol88 1988 only - May 27 11:57:05s 0:02:55 -
+Rule sol88 1988 only - May 28 11:57:15s 0:02:45 -
+Rule sol88 1988 only - May 29 11:57:20s 0:02:40 -
+Rule sol88 1988 only - May 30 11:57:30s 0:02:30 -
+Rule sol88 1988 only - May 31 11:57:40s 0:02:20 -
+Rule sol88 1988 only - Jun 1 11:57:50s 0:02:10 -
+Rule sol88 1988 only - Jun 2 11:57:55s 0:02:05 -
+Rule sol88 1988 only - Jun 3 11:58:05s 0:01:55 -
+Rule sol88 1988 only - Jun 4 11:58:15s 0:01:45 -
+Rule sol88 1988 only - Jun 5 11:58:30s 0:01:30 -
+Rule sol88 1988 only - Jun 6 11:58:40s 0:01:20 -
+Rule sol88 1988 only - Jun 7 11:58:50s 0:01:10 -
+Rule sol88 1988 only - Jun 8 11:59:00s 0:01:00 -
+Rule sol88 1988 only - Jun 9 11:59:15s 0:00:45 -
+Rule sol88 1988 only - Jun 10 11:59:25s 0:00:35 -
+Rule sol88 1988 only - Jun 11 11:59:35s 0:00:25 -
+Rule sol88 1988 only - Jun 12 11:59:50s 0:00:10 -
+Rule sol88 1988 only - Jun 13 12:00:00s 0:00:00 -
+Rule sol88 1988 only - Jun 14 12:00:15s -0:00:15 -
+Rule sol88 1988 only - Jun 15 12:00:25s -0:00:25 -
+Rule sol88 1988 only - Jun 16 12:00:40s -0:00:40 -
+Rule sol88 1988 only - Jun 17 12:00:55s -0:00:55 -
+Rule sol88 1988 only - Jun 18 12:01:05s -0:01:05 -
+Rule sol88 1988 only - Jun 19 12:01:20s -0:01:20 -
+Rule sol88 1988 only - Jun 20 12:01:30s -0:01:30 -
+Rule sol88 1988 only - Jun 21 12:01:45s -0:01:45 -
+Rule sol88 1988 only - Jun 22 12:02:00s -0:02:00 -
+Rule sol88 1988 only - Jun 23 12:02:10s -0:02:10 -
+Rule sol88 1988 only - Jun 24 12:02:25s -0:02:25 -
+Rule sol88 1988 only - Jun 25 12:02:35s -0:02:35 -
+Rule sol88 1988 only - Jun 26 12:02:50s -0:02:50 -
+Rule sol88 1988 only - Jun 27 12:03:00s -0:03:00 -
+Rule sol88 1988 only - Jun 28 12:03:15s -0:03:15 -
+Rule sol88 1988 only - Jun 29 12:03:25s -0:03:25 -
+Rule sol88 1988 only - Jun 30 12:03:40s -0:03:40 -
+Rule sol88 1988 only - Jul 1 12:03:50s -0:03:50 -
+Rule sol88 1988 only - Jul 2 12:04:00s -0:04:00 -
+Rule sol88 1988 only - Jul 3 12:04:10s -0:04:10 -
+Rule sol88 1988 only - Jul 4 12:04:25s -0:04:25 -
+Rule sol88 1988 only - Jul 5 12:04:35s -0:04:35 -
+Rule sol88 1988 only - Jul 6 12:04:45s -0:04:45 -
+Rule sol88 1988 only - Jul 7 12:04:55s -0:04:55 -
+Rule sol88 1988 only - Jul 8 12:05:05s -0:05:05 -
+Rule sol88 1988 only - Jul 9 12:05:10s -0:05:10 -
+Rule sol88 1988 only - Jul 10 12:05:20s -0:05:20 -
+Rule sol88 1988 only - Jul 11 12:05:30s -0:05:30 -
+Rule sol88 1988 only - Jul 12 12:05:35s -0:05:35 -
+Rule sol88 1988 only - Jul 13 12:05:45s -0:05:45 -
+Rule sol88 1988 only - Jul 14 12:05:50s -0:05:50 -
+Rule sol88 1988 only - Jul 15 12:05:55s -0:05:55 -
+Rule sol88 1988 only - Jul 16 12:06:00s -0:06:00 -
+Rule sol88 1988 only - Jul 17 12:06:05s -0:06:05 -
+Rule sol88 1988 only - Jul 18 12:06:10s -0:06:10 -
+Rule sol88 1988 only - Jul 19 12:06:15s -0:06:15 -
+Rule sol88 1988 only - Jul 20 12:06:20s -0:06:20 -
+Rule sol88 1988 only - Jul 21 12:06:25s -0:06:25 -
+Rule sol88 1988 only - Jul 22 12:06:25s -0:06:25 -
+Rule sol88 1988 only - Jul 23 12:06:25s -0:06:25 -
+Rule sol88 1988 only - Jul 24 12:06:30s -0:06:30 -
+Rule sol88 1988 only - Jul 25 12:06:30s -0:06:30 -
+Rule sol88 1988 only - Jul 26 12:06:30s -0:06:30 -
+Rule sol88 1988 only - Jul 27 12:06:30s -0:06:30 -
+Rule sol88 1988 only - Jul 28 12:06:30s -0:06:30 -
+Rule sol88 1988 only - Jul 29 12:06:25s -0:06:25 -
+Rule sol88 1988 only - Jul 30 12:06:25s -0:06:25 -
+Rule sol88 1988 only - Jul 31 12:06:20s -0:06:20 -
+Rule sol88 1988 only - Aug 1 12:06:15s -0:06:15 -
+Rule sol88 1988 only - Aug 2 12:06:15s -0:06:15 -
+Rule sol88 1988 only - Aug 3 12:06:10s -0:06:10 -
+Rule sol88 1988 only - Aug 4 12:06:05s -0:06:05 -
+Rule sol88 1988 only - Aug 5 12:05:55s -0:05:55 -
+Rule sol88 1988 only - Aug 6 12:05:50s -0:05:50 -
+Rule sol88 1988 only - Aug 7 12:05:45s -0:05:45 -
+Rule sol88 1988 only - Aug 8 12:05:35s -0:05:35 -
+Rule sol88 1988 only - Aug 9 12:05:25s -0:05:25 -
+Rule sol88 1988 only - Aug 10 12:05:20s -0:05:20 -
+Rule sol88 1988 only - Aug 11 12:05:10s -0:05:10 -
+Rule sol88 1988 only - Aug 12 12:05:00s -0:05:00 -
+Rule sol88 1988 only - Aug 13 12:04:50s -0:04:50 -
+Rule sol88 1988 only - Aug 14 12:04:35s -0:04:35 -
+Rule sol88 1988 only - Aug 15 12:04:25s -0:04:25 -
+Rule sol88 1988 only - Aug 16 12:04:15s -0:04:15 -
+Rule sol88 1988 only - Aug 17 12:04:00s -0:04:00 -
+Rule sol88 1988 only - Aug 18 12:03:50s -0:03:50 -
+Rule sol88 1988 only - Aug 19 12:03:35s -0:03:35 -
+Rule sol88 1988 only - Aug 20 12:03:20s -0:03:20 -
+Rule sol88 1988 only - Aug 21 12:03:05s -0:03:05 -
+Rule sol88 1988 only - Aug 22 12:02:50s -0:02:50 -
+Rule sol88 1988 only - Aug 23 12:02:35s -0:02:35 -
+Rule sol88 1988 only - Aug 24 12:02:20s -0:02:20 -
+Rule sol88 1988 only - Aug 25 12:02:00s -0:02:00 -
+Rule sol88 1988 only - Aug 26 12:01:45s -0:01:45 -
+Rule sol88 1988 only - Aug 27 12:01:30s -0:01:30 -
+Rule sol88 1988 only - Aug 28 12:01:10s -0:01:10 -
+Rule sol88 1988 only - Aug 29 12:00:50s -0:00:50 -
+Rule sol88 1988 only - Aug 30 12:00:35s -0:00:35 -
+Rule sol88 1988 only - Aug 31 12:00:15s -0:00:15 -
+Rule sol88 1988 only - Sep 1 11:59:55s 0:00:05 -
+Rule sol88 1988 only - Sep 2 11:59:35s 0:00:25 -
+Rule sol88 1988 only - Sep 3 11:59:20s 0:00:40 -
+Rule sol88 1988 only - Sep 4 11:59:00s 0:01:00 -
+Rule sol88 1988 only - Sep 5 11:58:40s 0:01:20 -
+Rule sol88 1988 only - Sep 6 11:58:20s 0:01:40 -
+Rule sol88 1988 only - Sep 7 11:58:00s 0:02:00 -
+Rule sol88 1988 only - Sep 8 11:57:35s 0:02:25 -
+Rule sol88 1988 only - Sep 9 11:57:15s 0:02:45 -
+Rule sol88 1988 only - Sep 10 11:56:55s 0:03:05 -
+Rule sol88 1988 only - Sep 11 11:56:35s 0:03:25 -
+Rule sol88 1988 only - Sep 12 11:56:15s 0:03:45 -
+Rule sol88 1988 only - Sep 13 11:55:50s 0:04:10 -
+Rule sol88 1988 only - Sep 14 11:55:30s 0:04:30 -
+Rule sol88 1988 only - Sep 15 11:55:10s 0:04:50 -
+Rule sol88 1988 only - Sep 16 11:54:50s 0:05:10 -
+Rule sol88 1988 only - Sep 17 11:54:25s 0:05:35 -
+Rule sol88 1988 only - Sep 18 11:54:05s 0:05:55 -
+Rule sol88 1988 only - Sep 19 11:53:45s 0:06:15 -
+Rule sol88 1988 only - Sep 20 11:53:25s 0:06:35 -
+Rule sol88 1988 only - Sep 21 11:53:00s 0:07:00 -
+Rule sol88 1988 only - Sep 22 11:52:40s 0:07:20 -
+Rule sol88 1988 only - Sep 23 11:52:20s 0:07:40 -
+Rule sol88 1988 only - Sep 24 11:52:00s 0:08:00 -
+Rule sol88 1988 only - Sep 25 11:51:40s 0:08:20 -
+Rule sol88 1988 only - Sep 26 11:51:15s 0:08:45 -
+Rule sol88 1988 only - Sep 27 11:50:55s 0:09:05 -
+Rule sol88 1988 only - Sep 28 11:50:35s 0:09:25 -
+Rule sol88 1988 only - Sep 29 11:50:15s 0:09:45 -
+Rule sol88 1988 only - Sep 30 11:49:55s 0:10:05 -
+Rule sol88 1988 only - Oct 1 11:49:35s 0:10:25 -
+Rule sol88 1988 only - Oct 2 11:49:20s 0:10:40 -
+Rule sol88 1988 only - Oct 3 11:49:00s 0:11:00 -
+Rule sol88 1988 only - Oct 4 11:48:40s 0:11:20 -
+Rule sol88 1988 only - Oct 5 11:48:25s 0:11:35 -
+Rule sol88 1988 only - Oct 6 11:48:05s 0:11:55 -
+Rule sol88 1988 only - Oct 7 11:47:50s 0:12:10 -
+Rule sol88 1988 only - Oct 8 11:47:30s 0:12:30 -
+Rule sol88 1988 only - Oct 9 11:47:15s 0:12:45 -
+Rule sol88 1988 only - Oct 10 11:47:00s 0:13:00 -
+Rule sol88 1988 only - Oct 11 11:46:45s 0:13:15 -
+Rule sol88 1988 only - Oct 12 11:46:30s 0:13:30 -
+Rule sol88 1988 only - Oct 13 11:46:15s 0:13:45 -
+Rule sol88 1988 only - Oct 14 11:46:00s 0:14:00 -
+Rule sol88 1988 only - Oct 15 11:45:45s 0:14:15 -
+Rule sol88 1988 only - Oct 16 11:45:35s 0:14:25 -
+Rule sol88 1988 only - Oct 17 11:45:20s 0:14:40 -
+Rule sol88 1988 only - Oct 18 11:45:10s 0:14:50 -
+Rule sol88 1988 only - Oct 19 11:45:00s 0:15:00 -
+Rule sol88 1988 only - Oct 20 11:44:45s 0:15:15 -
+Rule sol88 1988 only - Oct 21 11:44:40s 0:15:20 -
+Rule sol88 1988 only - Oct 22 11:44:30s 0:15:30 -
+Rule sol88 1988 only - Oct 23 11:44:20s 0:15:40 -
+Rule sol88 1988 only - Oct 24 11:44:10s 0:15:50 -
+Rule sol88 1988 only - Oct 25 11:44:05s 0:15:55 -
+Rule sol88 1988 only - Oct 26 11:44:00s 0:16:00 -
+Rule sol88 1988 only - Oct 27 11:43:55s 0:16:05 -
+Rule sol88 1988 only - Oct 28 11:43:50s 0:16:10 -
+Rule sol88 1988 only - Oct 29 11:43:45s 0:16:15 -
+Rule sol88 1988 only - Oct 30 11:43:40s 0:16:20 -
+Rule sol88 1988 only - Oct 31 11:43:40s 0:16:20 -
+Rule sol88 1988 only - Nov 1 11:43:35s 0:16:25 -
+Rule sol88 1988 only - Nov 2 11:43:35s 0:16:25 -
+Rule sol88 1988 only - Nov 3 11:43:35s 0:16:25 -
+Rule sol88 1988 only - Nov 4 11:43:35s 0:16:25 -
+Rule sol88 1988 only - Nov 5 11:43:40s 0:16:20 -
+Rule sol88 1988 only - Nov 6 11:43:40s 0:16:20 -
+Rule sol88 1988 only - Nov 7 11:43:45s 0:16:15 -
+Rule sol88 1988 only - Nov 8 11:43:45s 0:16:15 -
+Rule sol88 1988 only - Nov 9 11:43:50s 0:16:10 -
+Rule sol88 1988 only - Nov 10 11:44:00s 0:16:00 -
+Rule sol88 1988 only - Nov 11 11:44:05s 0:15:55 -
+Rule sol88 1988 only - Nov 12 11:44:10s 0:15:50 -
+Rule sol88 1988 only - Nov 13 11:44:20s 0:15:40 -
+Rule sol88 1988 only - Nov 14 11:44:30s 0:15:30 -
+Rule sol88 1988 only - Nov 15 11:44:40s 0:15:20 -
+Rule sol88 1988 only - Nov 16 11:44:50s 0:15:10 -
+Rule sol88 1988 only - Nov 17 11:45:00s 0:15:00 -
+Rule sol88 1988 only - Nov 18 11:45:15s 0:14:45 -
+Rule sol88 1988 only - Nov 19 11:45:25s 0:14:35 -
+Rule sol88 1988 only - Nov 20 11:45:40s 0:14:20 -
+Rule sol88 1988 only - Nov 21 11:45:55s 0:14:05 -
+Rule sol88 1988 only - Nov 22 11:46:10s 0:13:50 -
+Rule sol88 1988 only - Nov 23 11:46:30s 0:13:30 -
+Rule sol88 1988 only - Nov 24 11:46:45s 0:13:15 -
+Rule sol88 1988 only - Nov 25 11:47:05s 0:12:55 -
+Rule sol88 1988 only - Nov 26 11:47:20s 0:12:40 -
+Rule sol88 1988 only - Nov 27 11:47:40s 0:12:20 -
+Rule sol88 1988 only - Nov 28 11:48:00s 0:12:00 -
+Rule sol88 1988 only - Nov 29 11:48:25s 0:11:35 -
+Rule sol88 1988 only - Nov 30 11:48:45s 0:11:15 -
+Rule sol88 1988 only - Dec 1 11:49:05s 0:10:55 -
+Rule sol88 1988 only - Dec 2 11:49:30s 0:10:30 -
+Rule sol88 1988 only - Dec 3 11:49:55s 0:10:05 -
+Rule sol88 1988 only - Dec 4 11:50:15s 0:09:45 -
+Rule sol88 1988 only - Dec 5 11:50:40s 0:09:20 -
+Rule sol88 1988 only - Dec 6 11:51:05s 0:08:55 -
+Rule sol88 1988 only - Dec 7 11:51:35s 0:08:25 -
+Rule sol88 1988 only - Dec 8 11:52:00s 0:08:00 -
+Rule sol88 1988 only - Dec 9 11:52:25s 0:07:35 -
+Rule sol88 1988 only - Dec 10 11:52:55s 0:07:05 -
+Rule sol88 1988 only - Dec 11 11:53:20s 0:06:40 -
+Rule sol88 1988 only - Dec 12 11:53:50s 0:06:10 -
+Rule sol88 1988 only - Dec 13 11:54:15s 0:05:45 -
+Rule sol88 1988 only - Dec 14 11:54:45s 0:05:15 -
+Rule sol88 1988 only - Dec 15 11:55:15s 0:04:45 -
+Rule sol88 1988 only - Dec 16 11:55:45s 0:04:15 -
+Rule sol88 1988 only - Dec 17 11:56:15s 0:03:45 -
+Rule sol88 1988 only - Dec 18 11:56:40s 0:03:20 -
+Rule sol88 1988 only - Dec 19 11:57:10s 0:02:50 -
+Rule sol88 1988 only - Dec 20 11:57:40s 0:02:20 -
+Rule sol88 1988 only - Dec 21 11:58:10s 0:01:50 -
+Rule sol88 1988 only - Dec 22 11:58:40s 0:01:20 -
+Rule sol88 1988 only - Dec 23 11:59:10s 0:00:50 -
+Rule sol88 1988 only - Dec 24 11:59:40s 0:00:20 -
+Rule sol88 1988 only - Dec 25 12:00:10s -0:00:10 -
+Rule sol88 1988 only - Dec 26 12:00:40s -0:00:40 -
+Rule sol88 1988 only - Dec 27 12:01:10s -0:01:10 -
+Rule sol88 1988 only - Dec 28 12:01:40s -0:01:40 -
+Rule sol88 1988 only - Dec 29 12:02:10s -0:02:10 -
+Rule sol88 1988 only - Dec 30 12:02:35s -0:02:35 -
+Rule sol88 1988 only - Dec 31 12:03:05s -0:03:05 -
+
+# Riyadh is at about 46 degrees 46 minutes East: 3 hrs, 7 mins, 4 secs
+# Before and after 1988, we'll operate on local mean solar time.
+
+# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
+Zone Asia/Riyadh88 3:07:04 - zzz 1988
+ 3:07:04 sol88 zzz 1989
+ 3:07:04 - zzz
+# For backward compatibility...
+Link Asia/Riyadh88 Mideast/Riyadh88
diff --git a/jdk/make/sun/javazic/tzdata/solar89 b/jdk/make/sun/javazic/tzdata/solar89
new file mode 100644
index 0000000..4805c9e
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/solar89
@@ -0,0 +1,415 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Apparent noon times below are for Riyadh; they're a bit off for other places.
+# Times were computed using a formula provided by the U. S. Naval Observatory:
+# eqt = -105.8 * sin(l) + 596.2 * sin(2 * l) + 4.4 * sin(3 * l)
+# -12.7 * sin(4 * l) - 429.0 * cos(l) - 2.1 * cos (2 * l)
+# + 19.3 * cos(3 * l);
+# where l is the "mean longitude of the Sun" given by
+# l = 279.642 degrees + 0.985647 * d
+# and d is the interval in days from January 0, 0 hours Universal Time
+# (equaling the day of the year plus the fraction of a day from zero hours).
+# The accuracy of the formula is plus or minus three seconds.
+#
+# Rounding to the nearest five seconds results in fewer than
+# 256 different "time types"--a limit that's faced because time types are
+# stored on disk as unsigned chars.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule sol89 1989 only - Jan 1 12:03:35s -0:03:35 -
+Rule sol89 1989 only - Jan 2 12:04:05s -0:04:05 -
+Rule sol89 1989 only - Jan 3 12:04:30s -0:04:30 -
+Rule sol89 1989 only - Jan 4 12:05:00s -0:05:00 -
+Rule sol89 1989 only - Jan 5 12:05:25s -0:05:25 -
+Rule sol89 1989 only - Jan 6 12:05:50s -0:05:50 -
+Rule sol89 1989 only - Jan 7 12:06:15s -0:06:15 -
+Rule sol89 1989 only - Jan 8 12:06:45s -0:06:45 -
+Rule sol89 1989 only - Jan 9 12:07:10s -0:07:10 -
+Rule sol89 1989 only - Jan 10 12:07:35s -0:07:35 -
+Rule sol89 1989 only - Jan 11 12:07:55s -0:07:55 -
+Rule sol89 1989 only - Jan 12 12:08:20s -0:08:20 -
+Rule sol89 1989 only - Jan 13 12:08:45s -0:08:45 -
+Rule sol89 1989 only - Jan 14 12:09:05s -0:09:05 -
+Rule sol89 1989 only - Jan 15 12:09:25s -0:09:25 -
+Rule sol89 1989 only - Jan 16 12:09:45s -0:09:45 -
+Rule sol89 1989 only - Jan 17 12:10:05s -0:10:05 -
+Rule sol89 1989 only - Jan 18 12:10:25s -0:10:25 -
+Rule sol89 1989 only - Jan 19 12:10:45s -0:10:45 -
+Rule sol89 1989 only - Jan 20 12:11:05s -0:11:05 -
+Rule sol89 1989 only - Jan 21 12:11:20s -0:11:20 -
+Rule sol89 1989 only - Jan 22 12:11:35s -0:11:35 -
+Rule sol89 1989 only - Jan 23 12:11:55s -0:11:55 -
+Rule sol89 1989 only - Jan 24 12:12:10s -0:12:10 -
+Rule sol89 1989 only - Jan 25 12:12:20s -0:12:20 -
+Rule sol89 1989 only - Jan 26 12:12:35s -0:12:35 -
+Rule sol89 1989 only - Jan 27 12:12:50s -0:12:50 -
+Rule sol89 1989 only - Jan 28 12:13:00s -0:13:00 -
+Rule sol89 1989 only - Jan 29 12:13:10s -0:13:10 -
+Rule sol89 1989 only - Jan 30 12:13:20s -0:13:20 -
+Rule sol89 1989 only - Jan 31 12:13:30s -0:13:30 -
+Rule sol89 1989 only - Feb 1 12:13:40s -0:13:40 -
+Rule sol89 1989 only - Feb 2 12:13:45s -0:13:45 -
+Rule sol89 1989 only - Feb 3 12:13:55s -0:13:55 -
+Rule sol89 1989 only - Feb 4 12:14:00s -0:14:00 -
+Rule sol89 1989 only - Feb 5 12:14:05s -0:14:05 -
+Rule sol89 1989 only - Feb 6 12:14:10s -0:14:10 -
+Rule sol89 1989 only - Feb 7 12:14:10s -0:14:10 -
+Rule sol89 1989 only - Feb 8 12:14:15s -0:14:15 -
+Rule sol89 1989 only - Feb 9 12:14:15s -0:14:15 -
+Rule sol89 1989 only - Feb 10 12:14:20s -0:14:20 -
+Rule sol89 1989 only - Feb 11 12:14:20s -0:14:20 -
+Rule sol89 1989 only - Feb 12 12:14:20s -0:14:20 -
+Rule sol89 1989 only - Feb 13 12:14:15s -0:14:15 -
+Rule sol89 1989 only - Feb 14 12:14:15s -0:14:15 -
+Rule sol89 1989 only - Feb 15 12:14:10s -0:14:10 -
+Rule sol89 1989 only - Feb 16 12:14:10s -0:14:10 -
+Rule sol89 1989 only - Feb 17 12:14:05s -0:14:05 -
+Rule sol89 1989 only - Feb 18 12:14:00s -0:14:00 -
+Rule sol89 1989 only - Feb 19 12:13:55s -0:13:55 -
+Rule sol89 1989 only - Feb 20 12:13:50s -0:13:50 -
+Rule sol89 1989 only - Feb 21 12:13:40s -0:13:40 -
+Rule sol89 1989 only - Feb 22 12:13:35s -0:13:35 -
+Rule sol89 1989 only - Feb 23 12:13:25s -0:13:25 -
+Rule sol89 1989 only - Feb 24 12:13:15s -0:13:15 -
+Rule sol89 1989 only - Feb 25 12:13:05s -0:13:05 -
+Rule sol89 1989 only - Feb 26 12:12:55s -0:12:55 -
+Rule sol89 1989 only - Feb 27 12:12:45s -0:12:45 -
+Rule sol89 1989 only - Feb 28 12:12:35s -0:12:35 -
+Rule sol89 1989 only - Mar 1 12:12:25s -0:12:25 -
+Rule sol89 1989 only - Mar 2 12:12:10s -0:12:10 -
+Rule sol89 1989 only - Mar 3 12:12:00s -0:12:00 -
+Rule sol89 1989 only - Mar 4 12:11:45s -0:11:45 -
+Rule sol89 1989 only - Mar 5 12:11:35s -0:11:35 -
+Rule sol89 1989 only - Mar 6 12:11:20s -0:11:20 -
+Rule sol89 1989 only - Mar 7 12:11:05s -0:11:05 -
+Rule sol89 1989 only - Mar 8 12:10:50s -0:10:50 -
+Rule sol89 1989 only - Mar 9 12:10:35s -0:10:35 -
+Rule sol89 1989 only - Mar 10 12:10:20s -0:10:20 -
+Rule sol89 1989 only - Mar 11 12:10:05s -0:10:05 -
+Rule sol89 1989 only - Mar 12 12:09:50s -0:09:50 -
+Rule sol89 1989 only - Mar 13 12:09:30s -0:09:30 -
+Rule sol89 1989 only - Mar 14 12:09:15s -0:09:15 -
+Rule sol89 1989 only - Mar 15 12:09:00s -0:09:00 -
+Rule sol89 1989 only - Mar 16 12:08:40s -0:08:40 -
+Rule sol89 1989 only - Mar 17 12:08:25s -0:08:25 -
+Rule sol89 1989 only - Mar 18 12:08:05s -0:08:05 -
+Rule sol89 1989 only - Mar 19 12:07:50s -0:07:50 -
+Rule sol89 1989 only - Mar 20 12:07:30s -0:07:30 -
+Rule sol89 1989 only - Mar 21 12:07:15s -0:07:15 -
+Rule sol89 1989 only - Mar 22 12:06:55s -0:06:55 -
+Rule sol89 1989 only - Mar 23 12:06:35s -0:06:35 -
+Rule sol89 1989 only - Mar 24 12:06:20s -0:06:20 -
+Rule sol89 1989 only - Mar 25 12:06:00s -0:06:00 -
+Rule sol89 1989 only - Mar 26 12:05:40s -0:05:40 -
+Rule sol89 1989 only - Mar 27 12:05:25s -0:05:25 -
+Rule sol89 1989 only - Mar 28 12:05:05s -0:05:05 -
+Rule sol89 1989 only - Mar 29 12:04:50s -0:04:50 -
+Rule sol89 1989 only - Mar 30 12:04:30s -0:04:30 -
+Rule sol89 1989 only - Mar 31 12:04:10s -0:04:10 -
+Rule sol89 1989 only - Apr 1 12:03:55s -0:03:55 -
+Rule sol89 1989 only - Apr 2 12:03:35s -0:03:35 -
+Rule sol89 1989 only - Apr 3 12:03:20s -0:03:20 -
+Rule sol89 1989 only - Apr 4 12:03:00s -0:03:00 -
+Rule sol89 1989 only - Apr 5 12:02:45s -0:02:45 -
+Rule sol89 1989 only - Apr 6 12:02:25s -0:02:25 -
+Rule sol89 1989 only - Apr 7 12:02:10s -0:02:10 -
+Rule sol89 1989 only - Apr 8 12:01:50s -0:01:50 -
+Rule sol89 1989 only - Apr 9 12:01:35s -0:01:35 -
+Rule sol89 1989 only - Apr 10 12:01:20s -0:01:20 -
+Rule sol89 1989 only - Apr 11 12:01:05s -0:01:05 -
+Rule sol89 1989 only - Apr 12 12:00:50s -0:00:50 -
+Rule sol89 1989 only - Apr 13 12:00:35s -0:00:35 -
+Rule sol89 1989 only - Apr 14 12:00:20s -0:00:20 -
+Rule sol89 1989 only - Apr 15 12:00:05s -0:00:05 -
+Rule sol89 1989 only - Apr 16 11:59:50s 0:00:10 -
+Rule sol89 1989 only - Apr 17 11:59:35s 0:00:25 -
+Rule sol89 1989 only - Apr 18 11:59:20s 0:00:40 -
+Rule sol89 1989 only - Apr 19 11:59:10s 0:00:50 -
+Rule sol89 1989 only - Apr 20 11:58:55s 0:01:05 -
+Rule sol89 1989 only - Apr 21 11:58:45s 0:01:15 -
+Rule sol89 1989 only - Apr 22 11:58:30s 0:01:30 -
+Rule sol89 1989 only - Apr 23 11:58:20s 0:01:40 -
+Rule sol89 1989 only - Apr 24 11:58:10s 0:01:50 -
+Rule sol89 1989 only - Apr 25 11:58:00s 0:02:00 -
+Rule sol89 1989 only - Apr 26 11:57:50s 0:02:10 -
+Rule sol89 1989 only - Apr 27 11:57:40s 0:02:20 -
+Rule sol89 1989 only - Apr 28 11:57:30s 0:02:30 -
+Rule sol89 1989 only - Apr 29 11:57:20s 0:02:40 -
+Rule sol89 1989 only - Apr 30 11:57:15s 0:02:45 -
+Rule sol89 1989 only - May 1 11:57:05s 0:02:55 -
+Rule sol89 1989 only - May 2 11:57:00s 0:03:00 -
+Rule sol89 1989 only - May 3 11:56:50s 0:03:10 -
+Rule sol89 1989 only - May 4 11:56:45s 0:03:15 -
+Rule sol89 1989 only - May 5 11:56:40s 0:03:20 -
+Rule sol89 1989 only - May 6 11:56:35s 0:03:25 -
+Rule sol89 1989 only - May 7 11:56:30s 0:03:30 -
+Rule sol89 1989 only - May 8 11:56:30s 0:03:30 -
+Rule sol89 1989 only - May 9 11:56:25s 0:03:35 -
+Rule sol89 1989 only - May 10 11:56:25s 0:03:35 -
+Rule sol89 1989 only - May 11 11:56:20s 0:03:40 -
+Rule sol89 1989 only - May 12 11:56:20s 0:03:40 -
+Rule sol89 1989 only - May 13 11:56:20s 0:03:40 -
+Rule sol89 1989 only - May 14 11:56:20s 0:03:40 -
+Rule sol89 1989 only - May 15 11:56:20s 0:03:40 -
+Rule sol89 1989 only - May 16 11:56:20s 0:03:40 -
+Rule sol89 1989 only - May 17 11:56:20s 0:03:40 -
+Rule sol89 1989 only - May 18 11:56:25s 0:03:35 -
+Rule sol89 1989 only - May 19 11:56:25s 0:03:35 -
+Rule sol89 1989 only - May 20 11:56:30s 0:03:30 -
+Rule sol89 1989 only - May 21 11:56:35s 0:03:25 -
+Rule sol89 1989 only - May 22 11:56:35s 0:03:25 -
+Rule sol89 1989 only - May 23 11:56:40s 0:03:20 -
+Rule sol89 1989 only - May 24 11:56:45s 0:03:15 -
+Rule sol89 1989 only - May 25 11:56:55s 0:03:05 -
+Rule sol89 1989 only - May 26 11:57:00s 0:03:00 -
+Rule sol89 1989 only - May 27 11:57:05s 0:02:55 -
+Rule sol89 1989 only - May 28 11:57:15s 0:02:45 -
+Rule sol89 1989 only - May 29 11:57:20s 0:02:40 -
+Rule sol89 1989 only - May 30 11:57:30s 0:02:30 -
+Rule sol89 1989 only - May 31 11:57:35s 0:02:25 -
+Rule sol89 1989 only - Jun 1 11:57:45s 0:02:15 -
+Rule sol89 1989 only - Jun 2 11:57:55s 0:02:05 -
+Rule sol89 1989 only - Jun 3 11:58:05s 0:01:55 -
+Rule sol89 1989 only - Jun 4 11:58:15s 0:01:45 -
+Rule sol89 1989 only - Jun 5 11:58:25s 0:01:35 -
+Rule sol89 1989 only - Jun 6 11:58:35s 0:01:25 -
+Rule sol89 1989 only - Jun 7 11:58:45s 0:01:15 -
+Rule sol89 1989 only - Jun 8 11:59:00s 0:01:00 -
+Rule sol89 1989 only - Jun 9 11:59:10s 0:00:50 -
+Rule sol89 1989 only - Jun 10 11:59:20s 0:00:40 -
+Rule sol89 1989 only - Jun 11 11:59:35s 0:00:25 -
+Rule sol89 1989 only - Jun 12 11:59:45s 0:00:15 -
+Rule sol89 1989 only - Jun 13 12:00:00s 0:00:00 -
+Rule sol89 1989 only - Jun 14 12:00:10s -0:00:10 -
+Rule sol89 1989 only - Jun 15 12:00:25s -0:00:25 -
+Rule sol89 1989 only - Jun 16 12:00:35s -0:00:35 -
+Rule sol89 1989 only - Jun 17 12:00:50s -0:00:50 -
+Rule sol89 1989 only - Jun 18 12:01:05s -0:01:05 -
+Rule sol89 1989 only - Jun 19 12:01:15s -0:01:15 -
+Rule sol89 1989 only - Jun 20 12:01:30s -0:01:30 -
+Rule sol89 1989 only - Jun 21 12:01:40s -0:01:40 -
+Rule sol89 1989 only - Jun 22 12:01:55s -0:01:55 -
+Rule sol89 1989 only - Jun 23 12:02:10s -0:02:10 -
+Rule sol89 1989 only - Jun 24 12:02:20s -0:02:20 -
+Rule sol89 1989 only - Jun 25 12:02:35s -0:02:35 -
+Rule sol89 1989 only - Jun 26 12:02:45s -0:02:45 -
+Rule sol89 1989 only - Jun 27 12:03:00s -0:03:00 -
+Rule sol89 1989 only - Jun 28 12:03:10s -0:03:10 -
+Rule sol89 1989 only - Jun 29 12:03:25s -0:03:25 -
+Rule sol89 1989 only - Jun 30 12:03:35s -0:03:35 -
+Rule sol89 1989 only - Jul 1 12:03:45s -0:03:45 -
+Rule sol89 1989 only - Jul 2 12:04:00s -0:04:00 -
+Rule sol89 1989 only - Jul 3 12:04:10s -0:04:10 -
+Rule sol89 1989 only - Jul 4 12:04:20s -0:04:20 -
+Rule sol89 1989 only - Jul 5 12:04:30s -0:04:30 -
+Rule sol89 1989 only - Jul 6 12:04:40s -0:04:40 -
+Rule sol89 1989 only - Jul 7 12:04:50s -0:04:50 -
+Rule sol89 1989 only - Jul 8 12:05:00s -0:05:00 -
+Rule sol89 1989 only - Jul 9 12:05:10s -0:05:10 -
+Rule sol89 1989 only - Jul 10 12:05:20s -0:05:20 -
+Rule sol89 1989 only - Jul 11 12:05:25s -0:05:25 -
+Rule sol89 1989 only - Jul 12 12:05:35s -0:05:35 -
+Rule sol89 1989 only - Jul 13 12:05:40s -0:05:40 -
+Rule sol89 1989 only - Jul 14 12:05:50s -0:05:50 -
+Rule sol89 1989 only - Jul 15 12:05:55s -0:05:55 -
+Rule sol89 1989 only - Jul 16 12:06:00s -0:06:00 -
+Rule sol89 1989 only - Jul 17 12:06:05s -0:06:05 -
+Rule sol89 1989 only - Jul 18 12:06:10s -0:06:10 -
+Rule sol89 1989 only - Jul 19 12:06:15s -0:06:15 -
+Rule sol89 1989 only - Jul 20 12:06:20s -0:06:20 -
+Rule sol89 1989 only - Jul 21 12:06:20s -0:06:20 -
+Rule sol89 1989 only - Jul 22 12:06:25s -0:06:25 -
+Rule sol89 1989 only - Jul 23 12:06:25s -0:06:25 -
+Rule sol89 1989 only - Jul 24 12:06:30s -0:06:30 -
+Rule sol89 1989 only - Jul 25 12:06:30s -0:06:30 -
+Rule sol89 1989 only - Jul 26 12:06:30s -0:06:30 -
+Rule sol89 1989 only - Jul 27 12:06:30s -0:06:30 -
+Rule sol89 1989 only - Jul 28 12:06:30s -0:06:30 -
+Rule sol89 1989 only - Jul 29 12:06:25s -0:06:25 -
+Rule sol89 1989 only - Jul 30 12:06:25s -0:06:25 -
+Rule sol89 1989 only - Jul 31 12:06:20s -0:06:20 -
+Rule sol89 1989 only - Aug 1 12:06:20s -0:06:20 -
+Rule sol89 1989 only - Aug 2 12:06:15s -0:06:15 -
+Rule sol89 1989 only - Aug 3 12:06:10s -0:06:10 -
+Rule sol89 1989 only - Aug 4 12:06:05s -0:06:05 -
+Rule sol89 1989 only - Aug 5 12:06:00s -0:06:00 -
+Rule sol89 1989 only - Aug 6 12:05:50s -0:05:50 -
+Rule sol89 1989 only - Aug 7 12:05:45s -0:05:45 -
+Rule sol89 1989 only - Aug 8 12:05:35s -0:05:35 -
+Rule sol89 1989 only - Aug 9 12:05:30s -0:05:30 -
+Rule sol89 1989 only - Aug 10 12:05:20s -0:05:20 -
+Rule sol89 1989 only - Aug 11 12:05:10s -0:05:10 -
+Rule sol89 1989 only - Aug 12 12:05:00s -0:05:00 -
+Rule sol89 1989 only - Aug 13 12:04:50s -0:04:50 -
+Rule sol89 1989 only - Aug 14 12:04:40s -0:04:40 -
+Rule sol89 1989 only - Aug 15 12:04:30s -0:04:30 -
+Rule sol89 1989 only - Aug 16 12:04:15s -0:04:15 -
+Rule sol89 1989 only - Aug 17 12:04:05s -0:04:05 -
+Rule sol89 1989 only - Aug 18 12:03:50s -0:03:50 -
+Rule sol89 1989 only - Aug 19 12:03:35s -0:03:35 -
+Rule sol89 1989 only - Aug 20 12:03:25s -0:03:25 -
+Rule sol89 1989 only - Aug 21 12:03:10s -0:03:10 -
+Rule sol89 1989 only - Aug 22 12:02:55s -0:02:55 -
+Rule sol89 1989 only - Aug 23 12:02:40s -0:02:40 -
+Rule sol89 1989 only - Aug 24 12:02:20s -0:02:20 -
+Rule sol89 1989 only - Aug 25 12:02:05s -0:02:05 -
+Rule sol89 1989 only - Aug 26 12:01:50s -0:01:50 -
+Rule sol89 1989 only - Aug 27 12:01:30s -0:01:30 -
+Rule sol89 1989 only - Aug 28 12:01:15s -0:01:15 -
+Rule sol89 1989 only - Aug 29 12:00:55s -0:00:55 -
+Rule sol89 1989 only - Aug 30 12:00:40s -0:00:40 -
+Rule sol89 1989 only - Aug 31 12:00:20s -0:00:20 -
+Rule sol89 1989 only - Sep 1 12:00:00s 0:00:00 -
+Rule sol89 1989 only - Sep 2 11:59:45s 0:00:15 -
+Rule sol89 1989 only - Sep 3 11:59:25s 0:00:35 -
+Rule sol89 1989 only - Sep 4 11:59:05s 0:00:55 -
+Rule sol89 1989 only - Sep 5 11:58:45s 0:01:15 -
+Rule sol89 1989 only - Sep 6 11:58:25s 0:01:35 -
+Rule sol89 1989 only - Sep 7 11:58:05s 0:01:55 -
+Rule sol89 1989 only - Sep 8 11:57:45s 0:02:15 -
+Rule sol89 1989 only - Sep 9 11:57:20s 0:02:40 -
+Rule sol89 1989 only - Sep 10 11:57:00s 0:03:00 -
+Rule sol89 1989 only - Sep 11 11:56:40s 0:03:20 -
+Rule sol89 1989 only - Sep 12 11:56:20s 0:03:40 -
+Rule sol89 1989 only - Sep 13 11:56:00s 0:04:00 -
+Rule sol89 1989 only - Sep 14 11:55:35s 0:04:25 -
+Rule sol89 1989 only - Sep 15 11:55:15s 0:04:45 -
+Rule sol89 1989 only - Sep 16 11:54:55s 0:05:05 -
+Rule sol89 1989 only - Sep 17 11:54:35s 0:05:25 -
+Rule sol89 1989 only - Sep 18 11:54:10s 0:05:50 -
+Rule sol89 1989 only - Sep 19 11:53:50s 0:06:10 -
+Rule sol89 1989 only - Sep 20 11:53:30s 0:06:30 -
+Rule sol89 1989 only - Sep 21 11:53:10s 0:06:50 -
+Rule sol89 1989 only - Sep 22 11:52:45s 0:07:15 -
+Rule sol89 1989 only - Sep 23 11:52:25s 0:07:35 -
+Rule sol89 1989 only - Sep 24 11:52:05s 0:07:55 -
+Rule sol89 1989 only - Sep 25 11:51:45s 0:08:15 -
+Rule sol89 1989 only - Sep 26 11:51:25s 0:08:35 -
+Rule sol89 1989 only - Sep 27 11:51:05s 0:08:55 -
+Rule sol89 1989 only - Sep 28 11:50:40s 0:09:20 -
+Rule sol89 1989 only - Sep 29 11:50:20s 0:09:40 -
+Rule sol89 1989 only - Sep 30 11:50:00s 0:10:00 -
+Rule sol89 1989 only - Oct 1 11:49:45s 0:10:15 -
+Rule sol89 1989 only - Oct 2 11:49:25s 0:10:35 -
+Rule sol89 1989 only - Oct 3 11:49:05s 0:10:55 -
+Rule sol89 1989 only - Oct 4 11:48:45s 0:11:15 -
+Rule sol89 1989 only - Oct 5 11:48:30s 0:11:30 -
+Rule sol89 1989 only - Oct 6 11:48:10s 0:11:50 -
+Rule sol89 1989 only - Oct 7 11:47:50s 0:12:10 -
+Rule sol89 1989 only - Oct 8 11:47:35s 0:12:25 -
+Rule sol89 1989 only - Oct 9 11:47:20s 0:12:40 -
+Rule sol89 1989 only - Oct 10 11:47:00s 0:13:00 -
+Rule sol89 1989 only - Oct 11 11:46:45s 0:13:15 -
+Rule sol89 1989 only - Oct 12 11:46:30s 0:13:30 -
+Rule sol89 1989 only - Oct 13 11:46:15s 0:13:45 -
+Rule sol89 1989 only - Oct 14 11:46:00s 0:14:00 -
+Rule sol89 1989 only - Oct 15 11:45:50s 0:14:10 -
+Rule sol89 1989 only - Oct 16 11:45:35s 0:14:25 -
+Rule sol89 1989 only - Oct 17 11:45:20s 0:14:40 -
+Rule sol89 1989 only - Oct 18 11:45:10s 0:14:50 -
+Rule sol89 1989 only - Oct 19 11:45:00s 0:15:00 -
+Rule sol89 1989 only - Oct 20 11:44:50s 0:15:10 -
+Rule sol89 1989 only - Oct 21 11:44:40s 0:15:20 -
+Rule sol89 1989 only - Oct 22 11:44:30s 0:15:30 -
+Rule sol89 1989 only - Oct 23 11:44:20s 0:15:40 -
+Rule sol89 1989 only - Oct 24 11:44:10s 0:15:50 -
+Rule sol89 1989 only - Oct 25 11:44:05s 0:15:55 -
+Rule sol89 1989 only - Oct 26 11:44:00s 0:16:00 -
+Rule sol89 1989 only - Oct 27 11:43:50s 0:16:10 -
+Rule sol89 1989 only - Oct 28 11:43:45s 0:16:15 -
+Rule sol89 1989 only - Oct 29 11:43:40s 0:16:20 -
+Rule sol89 1989 only - Oct 30 11:43:40s 0:16:20 -
+Rule sol89 1989 only - Oct 31 11:43:35s 0:16:25 -
+Rule sol89 1989 only - Nov 1 11:43:35s 0:16:25 -
+Rule sol89 1989 only - Nov 2 11:43:35s 0:16:25 -
+Rule sol89 1989 only - Nov 3 11:43:30s 0:16:30 -
+Rule sol89 1989 only - Nov 4 11:43:35s 0:16:25 -
+Rule sol89 1989 only - Nov 5 11:43:35s 0:16:25 -
+Rule sol89 1989 only - Nov 6 11:43:35s 0:16:25 -
+Rule sol89 1989 only - Nov 7 11:43:40s 0:16:20 -
+Rule sol89 1989 only - Nov 8 11:43:45s 0:16:15 -
+Rule sol89 1989 only - Nov 9 11:43:50s 0:16:10 -
+Rule sol89 1989 only - Nov 10 11:43:55s 0:16:05 -
+Rule sol89 1989 only - Nov 11 11:44:00s 0:16:00 -
+Rule sol89 1989 only - Nov 12 11:44:05s 0:15:55 -
+Rule sol89 1989 only - Nov 13 11:44:15s 0:15:45 -
+Rule sol89 1989 only - Nov 14 11:44:25s 0:15:35 -
+Rule sol89 1989 only - Nov 15 11:44:35s 0:15:25 -
+Rule sol89 1989 only - Nov 16 11:44:45s 0:15:15 -
+Rule sol89 1989 only - Nov 17 11:44:55s 0:15:05 -
+Rule sol89 1989 only - Nov 18 11:45:10s 0:14:50 -
+Rule sol89 1989 only - Nov 19 11:45:20s 0:14:40 -
+Rule sol89 1989 only - Nov 20 11:45:35s 0:14:25 -
+Rule sol89 1989 only - Nov 21 11:45:50s 0:14:10 -
+Rule sol89 1989 only - Nov 22 11:46:05s 0:13:55 -
+Rule sol89 1989 only - Nov 23 11:46:25s 0:13:35 -
+Rule sol89 1989 only - Nov 24 11:46:40s 0:13:20 -
+Rule sol89 1989 only - Nov 25 11:47:00s 0:13:00 -
+Rule sol89 1989 only - Nov 26 11:47:20s 0:12:40 -
+Rule sol89 1989 only - Nov 27 11:47:35s 0:12:25 -
+Rule sol89 1989 only - Nov 28 11:47:55s 0:12:05 -
+Rule sol89 1989 only - Nov 29 11:48:20s 0:11:40 -
+Rule sol89 1989 only - Nov 30 11:48:40s 0:11:20 -
+Rule sol89 1989 only - Dec 1 11:49:00s 0:11:00 -
+Rule sol89 1989 only - Dec 2 11:49:25s 0:10:35 -
+Rule sol89 1989 only - Dec 3 11:49:50s 0:10:10 -
+Rule sol89 1989 only - Dec 4 11:50:15s 0:09:45 -
+Rule sol89 1989 only - Dec 5 11:50:35s 0:09:25 -
+Rule sol89 1989 only - Dec 6 11:51:00s 0:09:00 -
+Rule sol89 1989 only - Dec 7 11:51:30s 0:08:30 -
+Rule sol89 1989 only - Dec 8 11:51:55s 0:08:05 -
+Rule sol89 1989 only - Dec 9 11:52:20s 0:07:40 -
+Rule sol89 1989 only - Dec 10 11:52:50s 0:07:10 -
+Rule sol89 1989 only - Dec 11 11:53:15s 0:06:45 -
+Rule sol89 1989 only - Dec 12 11:53:45s 0:06:15 -
+Rule sol89 1989 only - Dec 13 11:54:10s 0:05:50 -
+Rule sol89 1989 only - Dec 14 11:54:40s 0:05:20 -
+Rule sol89 1989 only - Dec 15 11:55:10s 0:04:50 -
+Rule sol89 1989 only - Dec 16 11:55:40s 0:04:20 -
+Rule sol89 1989 only - Dec 17 11:56:05s 0:03:55 -
+Rule sol89 1989 only - Dec 18 11:56:35s 0:03:25 -
+Rule sol89 1989 only - Dec 19 11:57:05s 0:02:55 -
+Rule sol89 1989 only - Dec 20 11:57:35s 0:02:25 -
+Rule sol89 1989 only - Dec 21 11:58:05s 0:01:55 -
+Rule sol89 1989 only - Dec 22 11:58:35s 0:01:25 -
+Rule sol89 1989 only - Dec 23 11:59:05s 0:00:55 -
+Rule sol89 1989 only - Dec 24 11:59:35s 0:00:25 -
+Rule sol89 1989 only - Dec 25 12:00:05s -0:00:05 -
+Rule sol89 1989 only - Dec 26 12:00:35s -0:00:35 -
+Rule sol89 1989 only - Dec 27 12:01:05s -0:01:05 -
+Rule sol89 1989 only - Dec 28 12:01:35s -0:01:35 -
+Rule sol89 1989 only - Dec 29 12:02:00s -0:02:00 -
+Rule sol89 1989 only - Dec 30 12:02:30s -0:02:30 -
+Rule sol89 1989 only - Dec 31 12:03:00s -0:03:00 -
+
+# Riyadh is at about 46 degrees 46 minutes East: 3 hrs, 7 mins, 4 secs
+# Before and after 1989, we'll operate on local mean solar time.
+
+# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
+Zone Asia/Riyadh89 3:07:04 - zzz 1989
+ 3:07:04 sol89 zzz 1990
+ 3:07:04 - zzz
+# For backward compatibility...
+Link Asia/Riyadh89 Mideast/Riyadh89
diff --git a/jdk/make/sun/javazic/tzdata/southamerica b/jdk/make/sun/javazic/tzdata/southamerica
new file mode 100644
index 0000000..a147a1b
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/southamerica
@@ -0,0 +1,1147 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# <pre>
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@elsie.nci.nih.gov for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually. Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Earlier editions of these tables used the North American style (e.g. ARST and
+# ARDT for Argentine Standard and Daylight Time), but the following quote
+# suggests that it's better to use European style (e.g. ART and ARST).
+# I suggest the use of _Summer time_ instead of the more cumbersome
+# _daylight-saving time_. _Summer time_ seems to be in general use
+# in Europe and South America.
+# -- E O Cutler, _New York Times_ (1937-02-14), quoted in
+# H L Mencken, _The American Language: Supplement I_ (1960), p 466
+#
+# Earlier editions of these tables also used the North American style
+# for time zones in Brazil, but this was incorrect, as Brazilians say
+# "summer time". Reinaldo Goulart, a Sao Paulo businessman active in
+# the railroad sector, writes (1999-07-06):
+# The subject of time zones is currently a matter of discussion/debate in
+# Brazil. Let's say that "the Brasilia time" is considered the
+# "official time" because Brasilia is the capital city.
+# The other three time zones are called "Brasilia time "minus one" or
+# "plus one" or "plus two". As far as I know there is no such
+# name/designation as "Eastern Time" or "Central Time".
+# So I invented the following (English-language) abbreviations for now.
+# Corrections are welcome!
+# std dst
+# -2:00 FNT FNST Fernando de Noronha
+# -3:00 BRT BRST Brasilia
+# -4:00 AMT AMST Amazon
+# -5:00 ACT ACST Acre
+
+###############################################################################
+
+###############################################################################
+
+# Argentina
+
+# From Bob Devine (1988-01-28):
+# Argentina: first Sunday in October to first Sunday in April since 1976.
+# Double Summer time from 1969 to 1974. Switches at midnight.
+
+# From U. S. Naval Observatory (1988-01-199):
+# ARGENTINA 3 H BEHIND UTC
+
+# From Hernan G. Otero (1995-06-26):
+# I am sending modifications to the Argentine time zone table...
+# AR was chosen because they are the ISO letters that represent Argentina.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Arg 1930 only - Dec 1 0:00 1:00 S
+Rule Arg 1931 only - Apr 1 0:00 0 -
+Rule Arg 1931 only - Oct 15 0:00 1:00 S
+Rule Arg 1932 1940 - Mar 1 0:00 0 -
+Rule Arg 1932 1939 - Nov 1 0:00 1:00 S
+Rule Arg 1940 only - Jul 1 0:00 1:00 S
+Rule Arg 1941 only - Jun 15 0:00 0 -
+Rule Arg 1941 only - Oct 15 0:00 1:00 S
+Rule Arg 1943 only - Aug 1 0:00 0 -
+Rule Arg 1943 only - Oct 15 0:00 1:00 S
+Rule Arg 1946 only - Mar 1 0:00 0 -
+Rule Arg 1946 only - Oct 1 0:00 1:00 S
+Rule Arg 1963 only - Oct 1 0:00 0 -
+Rule Arg 1963 only - Dec 15 0:00 1:00 S
+Rule Arg 1964 1966 - Mar 1 0:00 0 -
+Rule Arg 1964 1966 - Oct 15 0:00 1:00 S
+Rule Arg 1967 only - Apr 2 0:00 0 -
+Rule Arg 1967 1968 - Oct Sun>=1 0:00 1:00 S
+Rule Arg 1968 1969 - Apr Sun>=1 0:00 0 -
+Rule Arg 1974 only - Jan 23 0:00 1:00 S
+Rule Arg 1974 only - May 1 0:00 0 -
+Rule Arg 1988 only - Dec 1 0:00 1:00 S
+#
+# From Hernan G. Otero (1995-06-26):
+# These corrections were contributed by InterSoft Argentina S.A.,
+# obtaining the data from the:
+# Talleres de Hidrografia Naval Argentina
+# (Argentine Naval Hydrography Institute)
+Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 -
+Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 S
+#
+# From Hernan G. Otero (1995-06-26):
+# From this moment on, the law that mandated the daylight saving
+# time corrections was derogated and no more modifications
+# to the time zones (for daylight saving) are now made.
+#
+# From Rives McDow (2000-01-10):
+# On October 3, 1999, 0:00 local, Argentina implemented daylight savings time,
+# which did not result in the switch of a time zone, as they stayed 9 hours
+# from the International Date Line.
+Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 S
+Rule Arg 2000 only - Mar Sun>=1 0:00 0 -
+#
+# From Peter Gradelski via Steffen Thorsen (2000-03-01):
+# We just checked with our Sao Paulo office and they say the government of
+# Argentina decided not to become one of the countries that go on or off DST.
+# So Buenos Aires should be -3 hours from GMT at all times.
+#
+# From Fabian L. Arce Jofre (2000-04-04):
+# The law that claimed DST for Argentina was derogated by President Fernando
+# de la Rua on March 2, 2000, because it would make people spend more energy
+# in the winter time, rather than less. The change took effect on March 3.
+#
+# From Mariano Absatz (2001-06-06):
+# one of the major newspapers here in Argentina said that the 1999
+# Timezone Law (which never was effectively applied) will (would?) be
+# in effect.... The article is at
+# http://ar.clarin.com/diario/2001-06-06/e-01701.htm
+# ... The Law itself is "Ley No 25155", sanctioned on 1999-08-25, enacted
+# 1999-09-17, and published 1999-09-21. The official publication is at:
+# http://www.boletin.jus.gov.ar/BON/Primera/1999/09-Septiembre/21/PDF/BO21-09-99LEG.PDF
+# Regretfully, you have to subscribe (and pay) for the on-line version....
+#
+# (2001-06-12):
+# the timezone for Argentina will not change next Sunday.
+# Apparently it will do so on Sunday 24th....
+# http://ar.clarin.com/diario/2001-06-12/s-03501.htm
+#
+# (2001-06-25):
+# Last Friday (yes, the last working day before the date of the change), the
+# Senate annulled the 1999 law that introduced the changes later postponed.
+# http://www.clarin.com.ar/diario/2001-06-22/s-03601.htm
+# It remains the vote of the Deputies..., but it will be the same....
+# This kind of things had always been done this way in Argentina.
+# We are still -03:00 all year round in all of the country.
+#
+# From Mariano Absatz (2004-05-21):
+# Today it was officially published that the Province of Mendoza is changing
+# its timezone this winter... starting tomorrow night....
+# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040521-27158-normas.pdf
+# From Paul Eggert (2004-05-24):
+# It's Law No. 7,210. This change is due to a public power emergency, so for
+# now we'll assume it's for this year only.
+#
+# From Paul Eggert (2006-03-22):
+# <a href="http://www.spicasc.net/horvera.html">
+# Hora de verano para la Republica Argentina (2003-06-08)
+# </a> says that standard time in Argentina from 1894-10-31
+# to 1920-05-01 was -4:16:48.25. Go with this more-precise value
+# over Shanks & Pottenger.
+#
+# From Mariano Absatz (2004-06-05):
+# These media articles from a major newspaper mostly cover the current state:
+# http://www.lanacion.com.ar/04/05/27/de_604825.asp
+# http://www.lanacion.com.ar/04/05/28/de_605203.asp
+#
+# The following eight (8) provinces pulled clocks back to UTC-04:00 at
+# midnight Monday May 31st. (that is, the night between 05/31 and 06/01).
+# Apparently, all nine provinces would go back to UTC-03:00 at the same
+# time in October 17th.
+#
+# Catamarca, Chubut, La Rioja, San Juan, San Luis, Santa Cruz,
+# Tierra del Fuego, Tucuman.
+#
+# From Mariano Absatz (2004-06-14):
+# ... this weekend, the Province of Tucuman decided it'd go back to UTC-03:00
+# yesterday midnight (that is, at 24:00 Saturday 12th), since the people's
+# annoyance with the change is much higher than the power savings obtained....
+#
+# From Gwillim Law (2004-06-14):
+# http://www.lanacion.com.ar/04/06/10/de_609078.asp ...
+# "The time change in Tierra del Fuego was a conflicted decision from
+# the start. The government had decreed that the measure would take
+# effect on June 1, but a normative error forced the new time to begin
+# three days earlier, from a Saturday to a Sunday....
+# Our understanding was that the change was originally scheduled to take place
+# on June 1 at 00:00 in Chubut, Santa Cruz, Tierra del Fuego (and some other
+# provinces). Sunday was May 30, only two days earlier. So the article
+# contains a contradiction. I would give more credence to the Saturday/Sunday
+# date than the "three days earlier" phrase, and conclude that Tierra del
+# Fuego set its clocks back at 2004-05-30 00:00.
+#
+# From Steffen Thorsen (2004-10-05):
+# The previous law 7210 which changed the province of Mendoza's time zone
+# back in May have been modified slightly in a new law 7277, which set the
+# new end date to 2004-09-26 (original date was 2004-10-17).
+# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040924-27244-normas.pdf
+#
+# From Mariano Absatz (2004-10-05):
+# San Juan changed from UTC-03:00 to UTC-04:00 at midnight between
+# Sunday, May 30th and Monday, May 31st. It changed back to UTC-03:00
+# at midnight between Saturday, July 24th and Sunday, July 25th....
+# http://www.sanjuan.gov.ar/prensa/archivo/000329.html
+# http://www.sanjuan.gov.ar/prensa/archivo/000426.html
+# http://www.sanjuan.gov.ar/prensa/archivo/000441.html
+
+# Unless otherwise specified, data are from Shanks & Pottenger through 1992,
+# from the IATA otherwise. As noted below, Shanks & Pottenger say that
+# America/Cordoba split into 6 subregions during 1991/1992, but we
+# haven't verified this yet so for now we'll keep it a single region.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+#
+# Buenos Aires (BA), Capital Federal (CF),
+Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May # Cordoba Mean Time
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART
+#
+# Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN), Chaco (CC),
+# Formosa (FM), Salta (SA), Santiago del Estero (SE), Cordoba (CB),
+# San Luis (SL), La Pampa (LP), Neuquen (NQ), Rio Negro (RN)
+#
+# Shanks & Pottenger also make the following claims, which we haven't verified:
+# - Formosa switched to -3:00 on 1991-01-07.
+# - Misiones switched to -3:00 on 1990-12-29.
+# - Chaco switched to -3:00 on 1991-01-04.
+# - San Luis switched to -4:00 on 1990-03-14, then to -3:00 on 1990-10-15,
+# then to -4:00 on 1991-03-01, then to -3:00 on 1991-06-01.
+# - Santiago del Estero switched to -4:00 on 1991-04-01,
+# then to -3:00 on 1991-04-26.
+#
+Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1991 Mar 3
+ -4:00 - WART 1991 Oct 20
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART
+#
+# Tucuman (TM)
+Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1991 Mar 3
+ -4:00 - WART 1991 Oct 20
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART 2004 Jun 1
+ -4:00 - WART 2004 Jun 13
+ -3:00 - ART
+#
+# La Rioja (LR)
+Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1991 Mar 1
+ -4:00 - WART 1991 May 7
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART 2004 Jun 1
+ -4:00 - WART 2004 Jun 20
+ -3:00 - ART
+#
+# San Juan (SJ)
+Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1991 Mar 1
+ -4:00 - WART 1991 May 7
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART 2004 May 31
+ -4:00 - WART 2004 Jul 25
+ -3:00 - ART
+#
+# Jujuy (JY)
+Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1990 Mar 4
+ -4:00 - WART 1990 Oct 28
+ -4:00 1:00 WARST 1991 Mar 17
+ -4:00 - WART 1991 Oct 6
+ -3:00 1:00 ARST 1992
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART
+#
+# Catamarca (CT), Chubut (CH)
+Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1991 Mar 3
+ -4:00 - WART 1991 Oct 20
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART 2004 Jun 1
+ -4:00 - WART 2004 Jun 20
+ -3:00 - ART
+#
+# Mendoza (MZ)
+Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1990 Mar 4
+ -4:00 - WART 1990 Oct 15
+ -4:00 1:00 WARST 1991 Mar 1
+ -4:00 - WART 1991 Oct 15
+ -4:00 1:00 WARST 1992 Mar 1
+ -4:00 - WART 1992 Oct 18
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART 2004 May 23
+ -4:00 - WART 2004 Sep 26
+ -3:00 - ART
+#
+# Santa Cruz (SC)
+Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May # Cordoba Mean Time
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART 2004 Jun 1
+ -4:00 - WART 2004 Jun 20
+ -3:00 - ART
+#
+# Tierra del Fuego, Antartida e Islas del Atlantico Sur (TF)
+Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May # Cordoba Mean Time
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART 2004 May 30
+ -4:00 - WART 2004 Jun 20
+ -3:00 - ART
+
+# Aruba
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Aruba -4:40:24 - LMT 1912 Feb 12 # Oranjestad
+ -4:30 - ANT 1965 # Netherlands Antilles Time
+ -4:00 - AST
+
+# Bolivia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/La_Paz -4:32:36 - LMT 1890
+ -4:32:36 - CMT 1931 Oct 15 # Calamarca MT
+ -4:32:36 1:00 BOST 1932 Mar 21 # Bolivia ST
+ -4:00 - BOT # Bolivia Time
+
+# Brazil
+
+# From Paul Eggert (1993-11-18):
+# The mayor of Rio recently attempted to change the time zone rules
+# just in his city, in order to leave more summer time for the tourist trade.
+# The rule change lasted only part of the day;
+# the federal government refused to follow the city's rules, and business
+# was in a chaos, so the mayor backed down that afternoon.
+
+# From IATA SSIM (1996-02):
+# _Only_ the following states in BR1 observe DST: Rio Grande do Sul (RS),
+# Santa Catarina (SC), Parana (PR), Sao Paulo (SP), Rio de Janeiro (RJ),
+# Espirito Santo (ES), Minas Gerais (MG), Bahia (BA), Goias (GO),
+# Distrito Federal (DF), Tocantins (TO), Sergipe [SE] and Alagoas [AL].
+# [The last three states are new to this issue of the IATA SSIM.]
+
+# From Gwillim Law (1996-10-07):
+# Geography, history (Tocantins was part of Goias until 1989), and other
+# sources of time zone information lead me to believe that AL, SE, and TO were
+# always in BR1, and so the only change was whether or not they observed DST....
+# The earliest issue of the SSIM I have is 2/91. Each issue from then until
+# 9/95 says that DST is observed only in the ten states I quoted from 9/95,
+# along with Mato Grosso (MT) and Mato Grosso do Sul (MS), which are in BR2
+# (UTC-4).... The other two time zones given for Brazil are BR3, which is
+# UTC-5, no DST, and applies only in the state of Acre (AC); and BR4, which is
+# UTC-2, and applies to Fernando de Noronha (formerly FN, but I believe it's
+# become part of the state of Pernambuco). The boundary between BR1 and BR2
+# has never been clearly stated. They've simply been called East and West.
+# However, some conclusions can be drawn from another IATA manual: the Airline
+# Coding Directory, which lists close to 400 airports in Brazil. For each
+# airport it gives a time zone which is coded to the SSIM. From that
+# information, I'm led to conclude that the states of Amapa (AP), Ceara (CE),
+# Maranhao (MA), Paraiba (PR), Pernambuco (PE), Piaui (PI), and Rio Grande do
+# Norte (RN), and the eastern part of Para (PA) are all in BR1 without DST.
+
+# From Marcos Tadeu (1998-09-27):
+# <a href="http://pcdsh01.on.br/verao1.html">
+# Brazilian official page
+# </a>
+
+# From Jesper Norgaard (2000-11-03):
+# [For an official list of which regions in Brazil use which time zones, see:]
+# http://pcdsh01.on.br/Fusbr.htm
+# http://pcdsh01.on.br/Fusbrhv.htm
+
+# From Celso Doria via David Madeo (2002-10-09):
+# The reason for the delay this year has to do with elections in Brazil.
+#
+# Unlike in the United States, elections in Brazil are 100% computerized and
+# the results are known almost immediately. Yesterday, it was the first
+# round of the elections when 115 million Brazilians voted for President,
+# Governor, Senators, Federal Deputies, and State Deputies. Nobody is
+# counting (or re-counting) votes anymore and we know there will be a second
+# round for the Presidency and also for some Governors. The 2nd round will
+# take place on October 27th.
+#
+# The reason why the DST will only begin November 3rd is that the thousands
+# of electoral machines used cannot have their time changed, and since the
+# Constitution says the elections must begin at 8:00 AM and end at 5:00 PM,
+# the Government decided to postpone DST, instead of changing the Constitution
+# (maybe, for the next elections, it will be possible to change the clock)...
+
+# From Rodrigo Severo (2004-10-04):
+# It's just the biannual change made necessary by the much hyped, supposedly
+# modern Brazilian eletronic voting machines which, apparently, can't deal
+# with a time change between the first and the second rounds of the elections.
+
+# From Steffen Thorsen (2007-09-20):
+# Brazil will start DST on 2007-10-14 00:00 and end on 2008-02-17 00:00:
+# http://www.mme.gov.br/site/news/detail.do;jsessionid=BBA06811AFCAAC28F0285210913513DA?newsId=13975
+
+# From Paul Eggert (2002-10-10):
+# The official decrees referenced below are mostly taken from
+# <a href="http://pcdsh01.on.br/DecHV.html">
+# Decretos sobre o Horario de Verao no Brasil
+# </a>.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# Decree <a href="http://pcdsh01.on.br/HV20466.htm">20,466</a> (1931-10-01)
+# Decree <a href="http://pcdsh01.on.br/HV21896.htm">21,896</a> (1932-01-10)
+Rule Brazil 1931 only - Oct 3 11:00 1:00 S
+Rule Brazil 1932 1933 - Apr 1 0:00 0 -
+Rule Brazil 1932 only - Oct 3 0:00 1:00 S
+# Decree <a href="http://pcdsh01.on.br/HV23195.htm">23,195</a> (1933-10-10)
+# revoked DST.
+# Decree <a href="http://pcdsh01.on.br/HV27496.htm">27,496</a> (1949-11-24)
+# Decree <a href="http://pcdsh01.on.br/HV27998.htm">27,998</a> (1950-04-13)
+Rule Brazil 1949 1952 - Dec 1 0:00 1:00 S
+Rule Brazil 1950 only - Apr 16 1:00 0 -
+Rule Brazil 1951 1952 - Apr 1 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV32308.htm">32,308</a> (1953-02-24)
+Rule Brazil 1953 only - Mar 1 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV34724.htm">34,724</a> (1953-11-30)
+# revoked DST.
+# Decree <a href="http://pcdsh01.on.br/HV52700.htm">52,700</a> (1963-10-18)
+# established DST from 1963-10-23 00:00 to 1964-02-29 00:00
+# in SP, RJ, GB, MG, ES, due to the prolongation of the drought.
+# Decree <a href="http://pcdsh01.on.br/HV53071.htm">53,071</a> (1963-12-03)
+# extended the above decree to all of the national territory on 12-09.
+Rule Brazil 1963 only - Dec 9 0:00 1:00 S
+# Decree <a href="http://pcdsh01.on.br/HV53604.htm">53,604</a> (1964-02-25)
+# extended summer time by one day to 1964-03-01 00:00 (start of school).
+Rule Brazil 1964 only - Mar 1 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV55639.htm">55,639</a> (1965-01-27)
+Rule Brazil 1965 only - Jan 31 0:00 1:00 S
+Rule Brazil 1965 only - Mar 31 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV57303.htm">57,303</a> (1965-11-22)
+Rule Brazil 1965 only - Dec 1 0:00 1:00 S
+# Decree <a href="http://pcdsh01.on.br/HV57843.htm">57,843</a> (1966-02-18)
+Rule Brazil 1966 1968 - Mar 1 0:00 0 -
+Rule Brazil 1966 1967 - Nov 1 0:00 1:00 S
+# Decree <a href="http://pcdsh01.on.br/HV63429.htm">63,429</a> (1968-10-15)
+# revoked DST.
+# Decree <a href="http://pcdsh01.on.br/HV91698.htm">91,698</a> (1985-09-27)
+Rule Brazil 1985 only - Nov 2 0:00 1:00 S
+# Decree 92,310 (1986-01-21)
+# Decree 92,463 (1986-03-13)
+Rule Brazil 1986 only - Mar 15 0:00 0 -
+# Decree 93,316 (1986-10-01)
+Rule Brazil 1986 only - Oct 25 0:00 1:00 S
+Rule Brazil 1987 only - Feb 14 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV94922.htm">94,922</a> (1987-09-22)
+Rule Brazil 1987 only - Oct 25 0:00 1:00 S
+Rule Brazil 1988 only - Feb 7 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV96676.htm">96,676</a> (1988-09-12)
+# except for the states of AC, AM, PA, RR, RO, and AP (then a territory)
+Rule Brazil 1988 only - Oct 16 0:00 1:00 S
+Rule Brazil 1989 only - Jan 29 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV98077.htm">98,077</a> (1989-08-21)
+# with the same exceptions
+Rule Brazil 1989 only - Oct 15 0:00 1:00 S
+Rule Brazil 1990 only - Feb 11 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV99530.htm">99,530</a> (1990-09-17)
+# adopted by RS, SC, PR, SP, RJ, ES, MG, GO, MS, DF.
+# Decree 99,629 (1990-10-19) adds BA, MT.
+Rule Brazil 1990 only - Oct 21 0:00 1:00 S
+Rule Brazil 1991 only - Feb 17 0:00 0 -
+# <a href="http://pcdsh01.on.br/HV1991.htm">Unnumbered decree</a> (1991-09-25)
+# adopted by RS, SC, PR, SP, RJ, ES, MG, BA, GO, MT, MS, DF.
+Rule Brazil 1991 only - Oct 20 0:00 1:00 S
+Rule Brazil 1992 only - Feb 9 0:00 0 -
+# <a href="http://pcdsh01.on.br/HV1992.htm">Unnumbered decree</a> (1992-10-16)
+# adopted by same states.
+Rule Brazil 1992 only - Oct 25 0:00 1:00 S
+Rule Brazil 1993 only - Jan 31 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV942.htm">942</a> (1993-09-28)
+# adopted by same states, plus AM.
+# Decree <a href="http://pcdsh01.on.br/HV1252.htm">1,252</a> (1994-09-22;
+# web page corrected 2004-01-07) adopted by same states, minus AM.
+# Decree <a href="http://pcdsh01.on.br/HV1636.htm">1,636</a> (1995-09-14)
+# adopted by same states, plus MT and TO.
+# Decree <a href="http://pcdsh01.on.br/HV1674.htm">1,674</a> (1995-10-13)
+# adds AL, SE.
+Rule Brazil 1993 1995 - Oct Sun>=11 0:00 1:00 S
+Rule Brazil 1994 1995 - Feb Sun>=15 0:00 0 -
+Rule Brazil 1996 only - Feb 11 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV2000.htm">2,000</a> (1996-09-04)
+# adopted by same states, minus AL, SE.
+Rule Brazil 1996 only - Oct 6 0:00 1:00 S
+Rule Brazil 1997 only - Feb 16 0:00 0 -
+# From Daniel C. Sobral (1998-02-12):
+# In 1997, the DS began on October 6. The stated reason was that
+# because international television networks ignored Brazil's policy on DS,
+# they bought the wrong times on satellite for coverage of Pope's visit.
+# This year, the ending date of DS was postponed to March 1
+# to help dealing with the shortages of electric power.
+#
+# Decree 2,317 (1997-09-04), adopted by same states.
+Rule Brazil 1997 only - Oct 6 0:00 1:00 S
+# Decree <a href="http://pcdsh01.on.br/figuras/HV2495.JPG">2,495</a>
+# (1998-02-10)
+Rule Brazil 1998 only - Mar 1 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/figuras/Hv98.jpg">2,780</a> (1998-09-11)
+# adopted by the same states as before.
+Rule Brazil 1998 only - Oct 11 0:00 1:00 S
+Rule Brazil 1999 only - Feb 21 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/figuras/HV3150.gif">3,150</a>
+# (1999-08-23) adopted by same states.
+# Decree <a href="http://pcdsh01.on.br/DecHV99.gif">3,188</a> (1999-09-30)
+# adds SE, AL, PB, PE, RN, CE, PI, MA and RR.
+Rule Brazil 1999 only - Oct 3 0:00 1:00 S
+Rule Brazil 2000 only - Feb 27 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/DEC3592.htm">3,592</a> (2000-09-06)
+# adopted by the same states as before.
+# Decree <a href="http://pcdsh01.on.br/Dec3630.jpg">3,630</a> (2000-10-13)
+# repeals DST in PE and RR, effective 2000-10-15 00:00.
+# Decree <a href="http://pcdsh01.on.br/Dec3632.jpg">3,632</a> (2000-10-17)
+# repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00.
+# Decree <a href="http://pcdsh01.on.br/figuras/HV3916.gif">3,916</a>
+# (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE.
+Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 S
+Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
+# Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE.
+# <a href="http://www.presidencia.gov.br/CCIVIL/decreto/2002/D4399.htm"></a>
+Rule Brazil 2002 only - Nov 3 0:00 1:00 S
+# Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO.
+# <a href="http://www.presidencia.gov.br/CCIVIL/decreto/2003/D4844.htm"></a>
+Rule Brazil 2003 only - Oct 19 0:00 1:00 S
+# Decree 5,223 (2004-10-01) reestablishes DST in MT.
+# <a href="http://www.planalto.gov.br/ccivil_03/_Ato2004-2006/2004/Decreto/D5223.htm"></a>
+Rule Brazil 2004 only - Nov 2 0:00 1:00 S
+# Decree <a href="http://pcdsh01.on.br/DecHV5539.gif">5,539</a> (2005-09-19),
+# adopted by the same states as before.
+Rule Brazil 2005 only - Oct 16 0:00 1:00 S
+# Decree <a href="http://pcdsh01.on.br/DecHV5920.gif">5,920</a> (2006-10-03),
+# adopted by the same states as before.
+Rule Brazil 2006 only - Nov 5 0:00 1:00 S
+Rule Brazil 2007 only - Feb 25 0:00 0 -
+# (Decree number not yet known)
+# http://www.brasil.gov.br/noticias/ultimas_noticias/horario_verao070920/
+# (2007-09-20) after a heads-up from Steffen Thorsen:
+Rule Brazil 2007 max - Oct Sun>=8 0:00 1:00 S
+Rule Brazil 2008 max - Feb Sun>=15 0:00 0 -
+# The latest ruleset listed above says that the following states observe DST:
+# DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP.
+# For dates after mid-2008, the above rules with TO="max" are guesses
+# and are quite possibly wrong, but are more likely than no DST at all.
+
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+#
+# Fernando de Noronha (administratively part of PE)
+Zone America/Noronha -2:09:40 - LMT 1914
+ -2:00 Brazil FN%sT 1990 Sep 17
+ -2:00 - FNT 1999 Sep 30
+ -2:00 Brazil FN%sT 2000 Oct 15
+ -2:00 - FNT 2001 Sep 13
+ -2:00 Brazil FN%sT 2002 Oct 1
+ -2:00 - FNT
+# Other Atlantic islands have no permanent settlement.
+# These include Trindade and Martin Vaz (administratively part of ES),
+# Atol das Rocas (RN), and Penedos de Sao Pedro e Sao Paulo (PE).
+# Fernando de Noronha was a separate territory from 1942-09-02 to 1989-01-01;
+# it also included the Penedos.
+#
+# Amapa (AP), east Para (PA)
+# East Para includes Belem, Maraba, Serra Norte, and Sao Felix do Xingu.
+# The division between east and west Para is the river Xingu.
+# In the north a very small part from the river Javary (now Jari I guess,
+# the border with Amapa) to the Amazon, then to the Xingu.
+Zone America/Belem -3:13:56 - LMT 1914
+ -3:00 Brazil BR%sT 1988 Sep 12
+ -3:00 - BRT
+#
+# Maranhao (MA), Piaui (PI), Ceara (CE), Rio Grande do Norte (RN),
+# Paraiba (PB)
+Zone America/Fortaleza -2:34:00 - LMT 1914
+ -3:00 Brazil BR%sT 1990 Sep 17
+ -3:00 - BRT 1999 Sep 30
+ -3:00 Brazil BR%sT 2000 Oct 22
+ -3:00 - BRT 2001 Sep 13
+ -3:00 Brazil BR%sT 2002 Oct 1
+ -3:00 - BRT
+#
+# Pernambuco (PE) (except Atlantic islands)
+Zone America/Recife -2:19:36 - LMT 1914
+ -3:00 Brazil BR%sT 1990 Sep 17
+ -3:00 - BRT 1999 Sep 30
+ -3:00 Brazil BR%sT 2000 Oct 15
+ -3:00 - BRT 2001 Sep 13
+ -3:00 Brazil BR%sT 2002 Oct 1
+ -3:00 - BRT
+#
+# Tocantins (TO)
+Zone America/Araguaina -3:12:48 - LMT 1914
+ -3:00 Brazil BR%sT 1990 Sep 17
+ -3:00 - BRT 1995 Sep 14
+ -3:00 Brazil BR%sT 2003 Sep 24
+ -3:00 - BRT
+#
+# Alagoas (AL), Sergipe (SE)
+Zone America/Maceio -2:22:52 - LMT 1914
+ -3:00 Brazil BR%sT 1990 Sep 17
+ -3:00 - BRT 1995 Oct 13
+ -3:00 Brazil BR%sT 1996 Sep 4
+ -3:00 - BRT 1999 Sep 30
+ -3:00 Brazil BR%sT 2000 Oct 22
+ -3:00 - BRT 2001 Sep 13
+ -3:00 Brazil BR%sT 2002 Oct 1
+ -3:00 - BRT
+#
+# Bahia (BA)
+# There are too many Salvadors elsewhere, so use America/Bahia instead
+# of America/Salvador.
+Zone America/Bahia -2:34:04 - LMT 1914
+ -3:00 Brazil BR%sT 2003 Sep 24
+ -3:00 - BRT
+#
+# Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
+# Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),
+# Santa Catarina (SC), Rio Grande do Sul (RS)
+Zone America/Sao_Paulo -3:06:28 - LMT 1914
+ -3:00 Brazil BR%sT 1963 Oct 23 00:00
+ -3:00 1:00 BRST 1964
+ -3:00 Brazil BR%sT
+#
+# Mato Grosso do Sul (MS)
+Zone America/Campo_Grande -3:38:28 - LMT 1914
+ -4:00 Brazil AM%sT
+#
+# Mato Grosso (MT)
+Zone America/Cuiaba -3:44:20 - LMT 1914
+ -4:00 Brazil AM%sT 2003 Sep 24
+ -4:00 - AMT 2004 Oct 1
+ -4:00 Brazil AM%sT
+#
+# west Para (PA), Rondonia (RO)
+# West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem.
+Zone America/Porto_Velho -4:15:36 - LMT 1914
+ -4:00 Brazil AM%sT 1988 Sep 12
+ -4:00 - AMT
+#
+# Roraima (RR)
+Zone America/Boa_Vista -4:02:40 - LMT 1914
+ -4:00 Brazil AM%sT 1988 Sep 12
+ -4:00 - AMT 1999 Sep 30
+ -4:00 Brazil AM%sT 2000 Oct 15
+ -4:00 - AMT
+#
+# east Amazonas (AM): Boca do Acre, Jutai, Manaus, Floriano Peixoto
+# The great circle line from Tabatinga to Porto Acre divides
+# east from west Amazonas.
+Zone America/Manaus -4:00:04 - LMT 1914
+ -4:00 Brazil AM%sT 1988 Sep 12
+ -4:00 - AMT 1993 Sep 28
+ -4:00 Brazil AM%sT 1994 Sep 22
+ -4:00 - AMT
+#
+# west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant,
+# Eirunepe, Envira, Ipixuna
+Zone America/Eirunepe -4:39:28 - LMT 1914
+ -5:00 Brazil AC%sT 1988 Sep 12
+ -5:00 - ACT 1993 Sep 28
+ -5:00 Brazil AC%sT 1994 Sep 22
+ -5:00 - ACT
+#
+# Acre (AC)
+Zone America/Rio_Branco -4:31:12 - LMT 1914
+ -5:00 Brazil AC%sT 1988 Sep 12
+ -5:00 - ACT
+
+
+# Chile
+
+# From Eduardo Krell (1995-10-19):
+# The law says to switch to DST at midnight [24:00] on the second SATURDAY
+# of October.... The law is the same for March and October.
+# (1998-09-29):
+# Because of the drought this year, the government decided to go into
+# DST earlier (saturday 9/26 at 24:00). This is a one-time change only ...
+# (unless there's another dry season next year, I guess).
+
+# From Julio I. Pacheco Troncoso (1999-03-18):
+# Because of the same drought, the government decided to end DST later,
+# on April 3, (one-time change).
+
+# From Oscar van Vlijmen (2006-10-08):
+# http://www.horaoficial.cl/cambio.htm
+
+# From Jesper Norgaard Welen (2006-10-08):
+# I think that there are some obvious mistakes in the suggested link
+# from Oscar van Vlijmen,... for instance entry 66 says that GMT-4
+# ended 1990-09-12 while entry 67 only begins GMT-3 at 1990-09-15
+# (they should have been 1990-09-15 and 1990-09-16 respectively), but
+# anyhow it clears up some doubts too.
+
+# From Paul Eggert (2006-12-27):
+# The following data for Chile and America/Santiago are from
+# <http://www.horaoficial.cl/horaof.htm> (2006-09-20), transcribed by
+# Jesper Norgaard Welen. The data for Pacific/Easter are from Shanks
+# & Pottenger, except with DST transitions after 1932 cloned from
+# America/Santiago. The pre-1980 Pacific/Easter data are dubious,
+# but we have no other source.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Chile 1927 1932 - Sep 1 0:00 1:00 S
+Rule Chile 1928 1932 - Apr 1 0:00 0 -
+Rule Chile 1942 only - Jun 1 4:00u 0 -
+Rule Chile 1942 only - Aug 1 5:00u 1:00 S
+Rule Chile 1946 only - Jul 15 4:00u 1:00 S
+Rule Chile 1946 only - Sep 1 3:00u 0:00 -
+Rule Chile 1947 only - Apr 1 4:00u 0 -
+Rule Chile 1968 only - Nov 3 4:00u 1:00 S
+Rule Chile 1969 only - Mar 30 3:00u 0 -
+Rule Chile 1969 only - Nov 23 4:00u 1:00 S
+Rule Chile 1970 only - Mar 29 3:00u 0 -
+Rule Chile 1971 only - Mar 14 3:00u 0 -
+Rule Chile 1970 1972 - Oct Sun>=9 4:00u 1:00 S
+Rule Chile 1972 1986 - Mar Sun>=9 3:00u 0 -
+Rule Chile 1973 only - Sep 30 4:00u 1:00 S
+Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 S
+Rule Chile 1987 only - Apr 12 3:00u 0 -
+Rule Chile 1988 1989 - Mar Sun>=9 3:00u 0 -
+Rule Chile 1988 only - Oct Sun>=1 4:00u 1:00 S
+Rule Chile 1989 only - Oct Sun>=9 4:00u 1:00 S
+Rule Chile 1990 only - Mar 18 3:00u 0 -
+Rule Chile 1990 only - Sep 16 4:00u 1:00 S
+Rule Chile 1991 1996 - Mar Sun>=9 3:00u 0 -
+Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 S
+Rule Chile 1997 only - Mar 30 3:00u 0 -
+Rule Chile 1998 only - Mar Sun>=9 3:00u 0 -
+Rule Chile 1998 only - Sep 27 4:00u 1:00 S
+Rule Chile 1999 only - Apr 4 3:00u 0 -
+Rule Chile 1999 max - Oct Sun>=9 4:00u 1:00 S
+Rule Chile 2000 max - Mar Sun>=9 3:00u 0 -
+# IATA SSIM anomalies: (1992-02) says 1992-03-14;
+# (1996-09) says 1998-03-08. Ignore these.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Santiago -4:42:46 - LMT 1890
+ -4:42:46 - SMT 1910 # Santiago Mean Time
+ -5:00 - CLT 1916 Jul 1 # Chile Time
+ -4:42:46 - SMT 1918 Sep 1 # Santiago Mean Time
+ -4:00 - CLT 1919 Jul 1 # Chile Time
+ -4:42:46 - SMT 1927 Sep 1 # Santiago Mean Time
+ -5:00 Chile CL%sT 1947 May 22 # Chile Time
+ -4:00 Chile CL%sT
+Zone Pacific/Easter -7:17:44 - LMT 1890
+ -7:17:28 - EMT 1932 Sep # Easter Mean Time
+ -7:00 Chile EAS%sT 1982 Mar 13 21:00 # Easter I Time
+ -6:00 Chile EAS%sT
+#
+# Sala y Gomez Island is like Pacific/Easter.
+# Other Chilean locations, including Juan Fernandez Is, San Ambrosio,
+# San Felix, and Antarctic bases, are like America/Santiago.
+
+# Colombia
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule CO 1992 only - May 3 0:00 1:00 S
+Rule CO 1993 only - Apr 4 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Bogota -4:56:20 - LMT 1884 Mar 13
+ -4:56:20 - BMT 1914 Nov 23 # Bogota Mean Time
+ -5:00 CO CO%sT # Colombia Time
+# Malpelo, Providencia, San Andres
+# no information; probably like America/Bogota
+
+# Curacao
+#
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger say that The Bottom and Philipsburg have been at
+# -4:00 since standard time was introduced on 1912-03-02; and that
+# Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from
+# 1912-02-02 to 1965-01-01. The former is dubious, since S&P also say
+# Saba Island has been like Curacao.
+# This all predates our 1970 cutoff, though.
+#
+# By July 2007 Curacao and St Maarten are planned to become
+# associated states within the Netherlands, much like Aruba;
+# Bonaire, Saba and St Eustatius would become directly part of the
+# Netherlands as Kingdom Islands. This won't affect their time zones
+# though, as far as we know.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Curacao -4:35:44 - LMT 1912 Feb 12 # Willemstad
+ -4:30 - ANT 1965 # Netherlands Antilles Time
+ -4:00 - AST
+
+# Ecuador
+#
+# From Paul Eggert (2007-03-04):
+# Apparently Ecuador had a failed experiment with DST in 1992.
+# <http://midena.gov.ec/content/view/1261/208/> (2007-02-27) and
+# <http://www.hoy.com.ec/NoticiaNue.asp?row_id=249856> (2006-11-06) both
+# talk about "hora Sixto". Leave this alone for now, as we have no data.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Guayaquil -5:19:20 - LMT 1890
+ -5:14:00 - QMT 1931 # Quito Mean Time
+ -5:00 - ECT # Ecuador Time
+Zone Pacific/Galapagos -5:58:24 - LMT 1931 # Puerto Baquerizo Moreno
+ -5:00 - ECT 1986
+ -6:00 - GALT # Galapagos Time
+
+# Falklands
+
+# From Paul Eggert (2006-03-22):
+# Between 1990 and 2000 inclusive, Shanks & Pottenger and the IATA agree except
+# the IATA gives 1996-09-08. Go with Shanks & Pottenger.
+
+# From Falkland Islands Government Office, London (2001-01-22)
+# via Jesper Norgaard:
+# ... the clocks revert back to Local Mean Time at 2 am on Sunday 15
+# April 2001 and advance one hour to summer time at 2 am on Sunday 2
+# September. It is anticipated that the clocks will revert back at 2
+# am on Sunday 21 April 2002 and advance to summer time at 2 am on
+# Sunday 1 September.
+
+# From Rives McDow (2001-02-13):
+#
+# I have communicated several times with people there, and the last
+# time I had communications that was helpful was in 1998. Here is
+# what was said then:
+#
+# "The general rule was that Stanley used daylight saving and the Camp
+# did not. However for various reasons many people in the Camp have
+# started to use daylight saving (known locally as 'Stanley Time')
+# There is no rule as to who uses daylight saving - it is a matter of
+# personal choice and so it is impossible to draw a map showing who
+# uses it and who does not. Any list would be out of date as soon as
+# it was produced. This year daylight saving ended on April 18/19th
+# and started again on September 12/13th. I do not know what the rule
+# is, but can find out if you like. We do not change at the same time
+# as UK or Chile."
+#
+# I did have in my notes that the rule was "Second Saturday in Sep at
+# 0:00 until third Saturday in Apr at 0:00". I think that this does
+# not agree in some cases with Shanks; is this true?
+#
+# Also, there is no mention in the list that some areas in the
+# Falklands do not use DST. I have found in my communications there
+# that these areas are on the western half of East Falkland and all of
+# West Falkland. Stanley is the only place that consistently observes
+# DST. Again, as in other places in the world, the farmers don't like
+# it. West Falkland is almost entirely sheep farmers.
+#
+# I know one lady there that keeps a list of which farm keeps DST and
+# which doesn't each year. She runs a shop in Stanley, and says that
+# the list changes each year. She uses it to communicate to her
+# customers, catching them when they are home for lunch or dinner.
+
+# From Paul Eggert (2001-03-05):
+# For now, we'll just record the time in Stanley, since we have no
+# better info.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 S
+Rule Falk 1938 1942 - Mar Sun>=19 0:00 0 -
+Rule Falk 1939 only - Oct 1 0:00 1:00 S
+Rule Falk 1940 1942 - Sep lastSun 0:00 1:00 S
+Rule Falk 1943 only - Jan 1 0:00 0 -
+Rule Falk 1983 only - Sep lastSun 0:00 1:00 S
+Rule Falk 1984 1985 - Apr lastSun 0:00 0 -
+Rule Falk 1984 only - Sep 16 0:00 1:00 S
+Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 S
+Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 -
+Rule Falk 2001 max - Apr Sun>=15 2:00 0 -
+Rule Falk 2001 max - Sep Sun>=1 2:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Atlantic/Stanley -3:51:24 - LMT 1890
+ -3:51:24 - SMT 1912 Mar 12 # Stanley Mean Time
+ -4:00 Falk FK%sT 1983 May # Falkland Is Time
+ -3:00 Falk FK%sT 1985 Sep 15
+ -4:00 Falk FK%sT
+
+# French Guiana
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Cayenne -3:29:20 - LMT 1911 Jul
+ -4:00 - GFT 1967 Oct # French Guiana Time
+ -3:00 - GFT
+
+# Guyana
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown
+ -3:45 - GBGT 1966 May 26 # Br Guiana Time
+ -3:45 - GYT 1975 Jul 31 # Guyana Time
+ -3:00 - GYT 1991
+# IATA SSIM (1996-06) says -4:00. Assume a 1991 switch.
+ -4:00 - GYT
+
+# Paraguay
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger say that spring transitions are from 01:00 -> 02:00,
+# and autumn transitions are from 00:00 -> 23:00. Go with pre-1999
+# editions of Shanks, and with the IATA, who say transitions occur at 00:00.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Para 1975 1988 - Oct 1 0:00 1:00 S
+Rule Para 1975 1978 - Mar 1 0:00 0 -
+Rule Para 1979 1991 - Apr 1 0:00 0 -
+Rule Para 1989 only - Oct 22 0:00 1:00 S
+Rule Para 1990 only - Oct 1 0:00 1:00 S
+Rule Para 1991 only - Oct 6 0:00 1:00 S
+Rule Para 1992 only - Mar 1 0:00 0 -
+Rule Para 1992 only - Oct 5 0:00 1:00 S
+Rule Para 1993 only - Mar 31 0:00 0 -
+Rule Para 1993 1995 - Oct 1 0:00 1:00 S
+Rule Para 1994 1995 - Feb lastSun 0:00 0 -
+Rule Para 1996 only - Mar 1 0:00 0 -
+# IATA SSIM (2000-02) says 1999-10-10; ignore this for now.
+# From Steffen Thorsen (2000-10-02):
+# I have three independent reports that Paraguay changed to DST this Sunday
+# (10-01).
+#
+# Translated by Gwillim Law (2001-02-27) from
+# <a href="http://www.diarionoticias.com.py/011000/nacional/naciona1.htm">
+# Noticias, a daily paper in Asuncion, Paraguay (2000-10-01)
+# </a>:
+# Starting at 0:00 today, the clock will be set forward 60 minutes, in
+# fulfillment of Decree No. 7,273 of the Executive Power.... The time change
+# system has been operating for several years. Formerly there was a separate
+# decree each year; the new law has the same effect, but permanently. Every
+# year, the time will change on the first Sunday of October; likewise, the
+# clock will be set back on the first Sunday of March.
+#
+Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 S
+# IATA SSIM (1997-09) says Mar 1; go with Shanks & Pottenger.
+Rule Para 1997 only - Feb lastSun 0:00 0 -
+# Shanks & Pottenger say 1999-02-28; IATA SSIM (1999-02) says 1999-02-27, but
+# (1999-09) reports no date; go with above sources and Gerd Knops (2001-02-27).
+Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
+# From Rives McDow (2002-02-28):
+# A decree was issued in Paraguay (no. 16350) on 2002-02-26 that changed the
+# dst method to be from the first Sunday in September to the first Sunday in
+# April.
+Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
+Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 S
+#
+# From Jesper Norgaard Welen (2005-01-02):
+# There are several sources that claim that Paraguay made
+# a timezone rule change in autumn 2004.
+# From Steffen Thorsen (2005-01-05):
+# Decree 1,867 (2004-03-05)
+# From Carlos Raul Perasso via Jesper Norgaard Welen (2006-10-13)
+# <http://www.presidencia.gov.py/decretos/D1867.pdf>
+Rule Para 2004 max - Oct Sun>=15 0:00 1:00 S
+Rule Para 2005 max - Mar Sun>=8 0:00 0 -
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Asuncion -3:50:40 - LMT 1890
+ -3:50:40 - AMT 1931 Oct 10 # Asuncion Mean Time
+ -4:00 - PYT 1972 Oct # Paraguay Time
+ -3:00 - PYT 1974 Apr
+ -4:00 Para PY%sT
+
+# Peru
+#
+# <a href="news:xrGmb.39935$gA1.13896113@news4.srv.hcvlny.cv.net">
+# From Evelyn C. Leeper via Mark Brader (2003-10-26):</a>
+# When we were in Peru in 1985-1986, they apparently switched over
+# sometime between December 29 and January 3 while we were on the Amazon.
+#
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger don't have this transition. Assume 1986 was like 1987.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Peru 1938 only - Jan 1 0:00 1:00 S
+Rule Peru 1938 only - Apr 1 0:00 0 -
+Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 S
+Rule Peru 1939 1940 - Mar Sun>=24 0:00 0 -
+Rule Peru 1986 1987 - Jan 1 0:00 1:00 S
+Rule Peru 1986 1987 - Apr 1 0:00 0 -
+Rule Peru 1990 only - Jan 1 0:00 1:00 S
+Rule Peru 1990 only - Apr 1 0:00 0 -
+# IATA is ambiguous for 1993/1995; go with Shanks & Pottenger.
+Rule Peru 1994 only - Jan 1 0:00 1:00 S
+Rule Peru 1994 only - Apr 1 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Lima -5:08:12 - LMT 1890
+ -5:08:36 - LMT 1908 Jul 28 # Lima Mean Time?
+ -5:00 Peru PE%sT # Peru Time
+
+# South Georgia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Atlantic/South_Georgia -2:26:08 - LMT 1890 # Grytviken
+ -2:00 - GST # South Georgia Time
+
+# South Sandwich Is
+# uninhabited; scientific personnel have wintered
+
+# Suriname
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Paramaribo -3:40:40 - LMT 1911
+ -3:40:52 - PMT 1935 # Paramaribo Mean Time
+ -3:40:36 - PMT 1945 Oct # The capital moved?
+ -3:30 - NEGT 1975 Nov 20 # Dutch Guiana Time
+ -3:30 - SRT 1984 Oct # Suriname Time
+ -3:00 - SRT
+
+# Trinidad and Tobago
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2
+ -4:00 - AST
+
+# Uruguay
+# From Paul Eggert (1993-11-18):
+# Uruguay wins the prize for the strangest peacetime manipulation of the rules.
+# From Shanks & Pottenger:
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# Whitman gives 1923 Oct 1; go with Shanks & Pottenger.
+Rule Uruguay 1923 only - Oct 2 0:00 0:30 HS
+Rule Uruguay 1924 1926 - Apr 1 0:00 0 -
+Rule Uruguay 1924 1925 - Oct 1 0:00 0:30 HS
+Rule Uruguay 1933 1935 - Oct lastSun 0:00 0:30 HS
+# Shanks & Pottenger give 1935 Apr 1 0:00 & 1936 Mar 30 0:00; go with Whitman.
+Rule Uruguay 1934 1936 - Mar Sat>=25 23:30s 0 -
+Rule Uruguay 1936 only - Nov 1 0:00 0:30 HS
+Rule Uruguay 1937 1941 - Mar lastSun 0:00 0 -
+# Whitman gives 1937 Oct 3; go with Shanks & Pottenger.
+Rule Uruguay 1937 1940 - Oct lastSun 0:00 0:30 HS
+# Whitman gives 1941 Oct 24 - 1942 Mar 27, 1942 Dec 14 - 1943 Apr 13,
+# and 1943 Apr 13 ``to present time''; go with Shanks & Pottenger.
+Rule Uruguay 1941 only - Aug 1 0:00 0:30 HS
+Rule Uruguay 1942 only - Jan 1 0:00 0 -
+Rule Uruguay 1942 only - Dec 14 0:00 1:00 S
+Rule Uruguay 1943 only - Mar 14 0:00 0 -
+Rule Uruguay 1959 only - May 24 0:00 1:00 S
+Rule Uruguay 1959 only - Nov 15 0:00 0 -
+Rule Uruguay 1960 only - Jan 17 0:00 1:00 S
+Rule Uruguay 1960 only - Mar 6 0:00 0 -
+Rule Uruguay 1965 1967 - Apr Sun>=1 0:00 1:00 S
+Rule Uruguay 1965 only - Sep 26 0:00 0 -
+Rule Uruguay 1966 1967 - Oct 31 0:00 0 -
+Rule Uruguay 1968 1970 - May 27 0:00 0:30 HS
+Rule Uruguay 1968 1970 - Dec 2 0:00 0 -
+Rule Uruguay 1972 only - Apr 24 0:00 1:00 S
+Rule Uruguay 1972 only - Aug 15 0:00 0 -
+Rule Uruguay 1974 only - Mar 10 0:00 0:30 HS
+Rule Uruguay 1974 only - Dec 22 0:00 1:00 S
+Rule Uruguay 1976 only - Oct 1 0:00 0 -
+Rule Uruguay 1977 only - Dec 4 0:00 1:00 S
+Rule Uruguay 1978 only - Apr 1 0:00 0 -
+Rule Uruguay 1979 only - Oct 1 0:00 1:00 S
+Rule Uruguay 1980 only - May 1 0:00 0 -
+Rule Uruguay 1987 only - Dec 14 0:00 1:00 S
+Rule Uruguay 1988 only - Mar 14 0:00 0 -
+Rule Uruguay 1988 only - Dec 11 0:00 1:00 S
+Rule Uruguay 1989 only - Mar 12 0:00 0 -
+Rule Uruguay 1989 only - Oct 29 0:00 1:00 S
+# Shanks & Pottenger say no DST was observed in 1990/1 and 1991/2,
+# and that 1992/3's DST was from 10-25 to 03-01. Go with IATA.
+Rule Uruguay 1990 1992 - Mar Sun>=1 0:00 0 -
+Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 S
+Rule Uruguay 1992 only - Oct 18 0:00 1:00 S
+Rule Uruguay 1993 only - Feb 28 0:00 0 -
+# From Eduardo Cota (2004-09-20):
+# The uruguayan government has decreed a change in the local time....
+# http://www.presidencia.gub.uy/decretos/2004091502.htm
+Rule Uruguay 2004 only - Sep 19 0:00 1:00 S
+# From Steffen Thorsen (2005-03-11):
+# Uruguay's DST was scheduled to end on Sunday, 2005-03-13, but in order to
+# save energy ... it was postponed two weeks....
+# http://www.presidencia.gub.uy/_Web/noticias/2005/03/2005031005.htm
+Rule Uruguay 2005 only - Mar 27 2:00 0 -
+# From Eduardo Cota (2005-09-27):
+# http://www.presidencia.gub.uy/_Web/decretos/2005/09/CM%20119_09%2009%202005_00001.PDF
+# This means that from 2005-10-09 at 02:00 local time, until 2006-03-12 at
+# 02:00 local time, official time in Uruguay will be at GMT -2.
+Rule Uruguay 2005 only - Oct 9 2:00 1:00 S
+Rule Uruguay 2006 only - Mar 12 2:00 0 -
+# From Jesper Norgaard Welen (2006-09-06):
+# http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF
+Rule Uruguay 2006 max - Oct Sun>=1 2:00 1:00 S
+Rule Uruguay 2007 max - Mar Sun>=8 2:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28
+ -3:44:44 - MMT 1920 May 1 # Montevideo MT
+ -3:30 Uruguay UY%sT 1942 Dec 14 # Uruguay Time
+ -3:00 Uruguay UY%sT
+
+# Venezuela
+#
+# From Kiraz Janicke (2007-09-25), in
+# http://www.venezuelanalysis.com/analysis/2645:
+# The proposal ... involves turning the clock back half an hour from
+# +4.00 Greenwich Mean Time (GMT), to +4.30GMT, the time zone
+# Venezuela had until December 31, 1964, when the current time zone
+# was adopted. The change was due to take place on September 17 and
+# then on September 24, but has since been postponed until December
+# 31, to allow for compliance with international organizations, such
+# as the International Office of Weights and Measures.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Caracas -4:27:44 - LMT 1890
+ -4:27:40 - CMT 1912 Feb 12 # Caracas Mean Time?
+ -4:30 - VET 1965 # Venezuela Time
+ -4:00 - VET 2008
+ -4:30 - VET
diff --git a/jdk/make/sun/javazic/tzdata/systemv b/jdk/make/sun/javazic/tzdata/systemv
new file mode 100644
index 0000000..e0604dc
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/systemv
@@ -0,0 +1,58 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Old rules, should the need arise.
+# No attempt is made to handle Newfoundland, since it cannot be expressed
+# using the System V "TZ" scheme (half-hour offset), or anything outside
+# North America (no support for non-standard DST start/end dates), nor
+# the changes in the DST rules in the US after 1976 (which occurred after
+# the old rules were written).
+#
+# If you need the old rules, uncomment ## lines.
+# Compile this *without* leap second correction for true conformance.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule SystemV min 1973 - Apr lastSun 2:00 1:00 D
+Rule SystemV min 1973 - Oct lastSun 2:00 0 S
+Rule SystemV 1974 only - Jan 6 2:00 1:00 D
+Rule SystemV 1974 only - Nov lastSun 2:00 0 S
+Rule SystemV 1975 only - Feb 23 2:00 1:00 D
+Rule SystemV 1975 only - Oct lastSun 2:00 0 S
+Rule SystemV 1976 max - Apr lastSun 2:00 1:00 D
+Rule SystemV 1976 max - Oct lastSun 2:00 0 S
+
+# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
+## Zone SystemV/AST4ADT -4:00 SystemV A%sT
+## Zone SystemV/EST5EDT -5:00 SystemV E%sT
+## Zone SystemV/CST6CDT -6:00 SystemV C%sT
+## Zone SystemV/MST7MDT -7:00 SystemV M%sT
+## Zone SystemV/PST8PDT -8:00 SystemV P%sT
+## Zone SystemV/YST9YDT -9:00 SystemV Y%sT
+## Zone SystemV/AST4 -4:00 - AST
+## Zone SystemV/EST5 -5:00 - EST
+## Zone SystemV/CST6 -6:00 - CST
+## Zone SystemV/MST7 -7:00 - MST
+## Zone SystemV/PST8 -8:00 - PST
+## Zone SystemV/YST9 -9:00 - YST
+## Zone SystemV/HST10 -10:00 - HST
diff --git a/jdk/make/sun/javazic/tzdata/zone.tab b/jdk/make/sun/javazic/tzdata/zone.tab
new file mode 100644
index 0000000..b252abd
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata/zone.tab
@@ -0,0 +1,443 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+#
+# TZ zone descriptions
+#
+# From Paul Eggert (1996-08-05):
+#
+# This file contains a table with the following columns:
+# 1. ISO 3166 2-character country code. See the file `iso3166.tab'.
+# 2. Latitude and longitude of the zone's principal location
+# in ISO 6709 sign-degrees-minutes-seconds format,
+# either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,
+# first latitude (+ is north), then longitude (+ is east).
+# 3. Zone name used in value of TZ environment variable.
+# 4. Comments; present if and only if the country has multiple rows.
+#
+# Columns are separated by a single tab.
+# The table is sorted first by country, then an order within the country that
+# (1) makes some geographical sense, and
+# (2) puts the most populous zones first, where that does not contradict (1).
+#
+# Lines beginning with `#' are comments.
+#
+#country-
+#code coordinates TZ comments
+AD +4230+00131 Europe/Andorra
+AE +2518+05518 Asia/Dubai
+AF +3431+06912 Asia/Kabul
+AG +1703-06148 America/Antigua
+AI +1812-06304 America/Anguilla
+AL +4120+01950 Europe/Tirane
+AM +4011+04430 Asia/Yerevan
+AN +1211-06900 America/Curacao
+AO -0848+01314 Africa/Luanda
+AQ -7750+16636 Antarctica/McMurdo McMurdo Station, Ross Island
+AQ -9000+00000 Antarctica/South_Pole Amundsen-Scott Station, South Pole
+AQ -6734-06808 Antarctica/Rothera Rothera Station, Adelaide Island
+AQ -6448-06406 Antarctica/Palmer Palmer Station, Anvers Island
+AQ -6736+06253 Antarctica/Mawson Mawson Station, Holme Bay
+AQ -6835+07758 Antarctica/Davis Davis Station, Vestfold Hills
+AQ -6617+11031 Antarctica/Casey Casey Station, Bailey Peninsula
+AQ -7824+10654 Antarctica/Vostok Vostok Station, S Magnetic Pole
+AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville Station, Terre Adelie
+AQ -690022+0393524 Antarctica/Syowa Syowa Station, E Ongul I
+AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF)
+AR -3124-06411 America/Argentina/Cordoba most locations (CB, CC, CN, ER, FM, LP, MN, NQ, RN, SA, SE, SF, SL)
+AR -2411-06518 America/Argentina/Jujuy Jujuy (JY)
+AR -2649-06513 America/Argentina/Tucuman Tucuman (TM)
+AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH)
+AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR)
+AR -3132-06831 America/Argentina/San_Juan San Juan (SJ)
+AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ)
+AR -5138-06913 America/Argentina/Rio_Gallegos Santa Cruz (SC)
+AR -5448-06818 America/Argentina/Ushuaia Tierra del Fuego (TF)
+AS -1416-17042 Pacific/Pago_Pago
+AT +4813+01620 Europe/Vienna
+AU -3133+15905 Australia/Lord_Howe Lord Howe Island
+AU -4253+14719 Australia/Hobart Tasmania - most locations
+AU -3956+14352 Australia/Currie Tasmania - King Island
+AU -3749+14458 Australia/Melbourne Victoria
+AU -3352+15113 Australia/Sydney New South Wales - most locations
+AU -3157+14127 Australia/Broken_Hill New South Wales - Yancowinna
+AU -2728+15302 Australia/Brisbane Queensland - most locations
+AU -2016+14900 Australia/Lindeman Queensland - Holiday Islands
+AU -3455+13835 Australia/Adelaide South Australia
+AU -1228+13050 Australia/Darwin Northern Territory
+AU -3157+11551 Australia/Perth Western Australia - most locations
+AU -3143+12852 Australia/Eucla Western Australia - Eucla area
+AW +1230-06958 America/Aruba
+AX +6006+01957 Europe/Mariehamn
+AZ +4023+04951 Asia/Baku
+BA +4352+01825 Europe/Sarajevo
+BB +1306-05937 America/Barbados
+BD +2343+09025 Asia/Dhaka
+BE +5050+00420 Europe/Brussels
+BF +1222-00131 Africa/Ouagadougou
+BG +4241+02319 Europe/Sofia
+BH +2623+05035 Asia/Bahrain
+BI -0323+02922 Africa/Bujumbura
+BJ +0629+00237 Africa/Porto-Novo
+BM +3217-06446 Atlantic/Bermuda
+BN +0456+11455 Asia/Brunei
+BO -1630-06809 America/La_Paz
+BR -0351-03225 America/Noronha Atlantic islands
+BR -0127-04829 America/Belem Amapa, E Para
+BR -0343-03830 America/Fortaleza NE Brazil (MA, PI, CE, RN, PB)
+BR -0803-03454 America/Recife Pernambuco
+BR -0712-04812 America/Araguaina Tocantins
+BR -0940-03543 America/Maceio Alagoas, Sergipe
+BR -1259-03831 America/Bahia Bahia
+BR -2332-04637 America/Sao_Paulo S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)
+BR -2027-05437 America/Campo_Grande Mato Grosso do Sul
+BR -1535-05605 America/Cuiaba Mato Grosso
+BR -0846-06354 America/Porto_Velho W Para, Rondonia
+BR +0249-06040 America/Boa_Vista Roraima
+BR -0308-06001 America/Manaus E Amazonas
+BR -0640-06952 America/Eirunepe W Amazonas
+BR -0958-06748 America/Rio_Branco Acre
+BS +2505-07721 America/Nassau
+BT +2728+08939 Asia/Thimphu
+BW -2545+02555 Africa/Gaborone
+BY +5354+02734 Europe/Minsk
+BZ +1730-08812 America/Belize
+CA +4734-05243 America/St_Johns Newfoundland Time, including SE Labrador
+CA +4439-06336 America/Halifax Atlantic Time - Nova Scotia (most places), PEI
+CA +4612-05957 America/Glace_Bay Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971
+CA +4606-06447 America/Moncton Atlantic Time - New Brunswick
+CA +5320-06025 America/Goose_Bay Atlantic Time - Labrador - most locations
+CA +5125-05707 America/Blanc-Sablon Atlantic Standard Time - Quebec - Lower North Shore
+CA +4531-07334 America/Montreal Eastern Time - Quebec - most locations
+CA +4339-07923 America/Toronto Eastern Time - Ontario - most locations
+CA +4901-08816 America/Nipigon Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973
+CA +4823-08915 America/Thunder_Bay Eastern Time - Thunder Bay, Ontario
+CA +6344-06828 America/Iqaluit Eastern Time - east Nunavut - most locations
+CA +6608-06544 America/Pangnirtung Eastern Time - Pangnirtung, Nunavut
+CA +744144-0944945 America/Resolute Eastern Time - Resolute, Nunavut
+CA +484531-0913718 America/Atikokan Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut
+CA +624900-0920459 America/Rankin_Inlet Central Time - central Nunavut
+CA +4953-09709 America/Winnipeg Central Time - Manitoba & west Ontario
+CA +4843-09434 America/Rainy_River Central Time - Rainy River & Fort Frances, Ontario
+CA +5024-10439 America/Regina Central Standard Time - Saskatchewan - most locations
+CA +5017-10750 America/Swift_Current Central Standard Time - Saskatchewan - midwest
+CA +5333-11328 America/Edmonton Mountain Time - Alberta, east British Columbia & west Saskatchewan
+CA +690650-1050310 America/Cambridge_Bay Mountain Time - west Nunavut
+CA +6227-11421 America/Yellowknife Mountain Time - central Northwest Territories
+CA +682059-1334300 America/Inuvik Mountain Time - west Northwest Territories
+CA +5946-12014 America/Dawson_Creek Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia
+CA +4916-12307 America/Vancouver Pacific Time - west British Columbia
+CA +6043-13503 America/Whitehorse Pacific Time - south Yukon
+CA +6404-13925 America/Dawson Pacific Time - north Yukon
+CC -1210+09655 Indian/Cocos
+CD -0418+01518 Africa/Kinshasa west Dem. Rep. of Congo
+CD -1140+02728 Africa/Lubumbashi east Dem. Rep. of Congo
+CF +0422+01835 Africa/Bangui
+CG -0416+01517 Africa/Brazzaville
+CH +4723+00832 Europe/Zurich
+CI +0519-00402 Africa/Abidjan
+CK -2114-15946 Pacific/Rarotonga
+CL -3327-07040 America/Santiago most locations
+CL -2709-10926 Pacific/Easter Easter Island & Sala y Gomez
+CM +0403+00942 Africa/Douala
+CN +3114+12128 Asia/Shanghai east China - Beijing, Guangdong, Shanghai, etc.
+CN +4545+12641 Asia/Harbin Heilongjiang (except Mohe), Jilin
+CN +2934+10635 Asia/Chongqing central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.
+CN +4348+08735 Asia/Urumqi most of Tibet & Xinjiang
+CN +3929+07559 Asia/Kashgar west Tibet & Xinjiang
+CO +0436-07405 America/Bogota
+CR +0956-08405 America/Costa_Rica
+CU +2308-08222 America/Havana
+CV +1455-02331 Atlantic/Cape_Verde
+CX -1025+10543 Indian/Christmas
+CY +3510+03322 Asia/Nicosia
+CZ +5005+01426 Europe/Prague
+DE +5230+01322 Europe/Berlin
+DJ +1136+04309 Africa/Djibouti
+DK +5540+01235 Europe/Copenhagen
+DM +1518-06124 America/Dominica
+DO +1828-06954 America/Santo_Domingo
+DZ +3647+00303 Africa/Algiers
+EC -0210-07950 America/Guayaquil mainland
+EC -0054-08936 Pacific/Galapagos Galapagos Islands
+EE +5925+02445 Europe/Tallinn
+EG +3003+03115 Africa/Cairo
+EH +2709-01312 Africa/El_Aaiun
+ER +1520+03853 Africa/Asmara
+ES +4024-00341 Europe/Madrid mainland
+ES +3553-00519 Africa/Ceuta Ceuta & Melilla
+ES +2806-01524 Atlantic/Canary Canary Islands
+ET +0902+03842 Africa/Addis_Ababa
+FI +6010+02458 Europe/Helsinki
+FJ -1808+17825 Pacific/Fiji
+FK -5142-05751 Atlantic/Stanley
+FM +0725+15147 Pacific/Truk Truk (Chuuk) and Yap
+FM +0658+15813 Pacific/Ponape Ponape (Pohnpei)
+FM +0519+16259 Pacific/Kosrae Kosrae
+FO +6201-00646 Atlantic/Faroe
+FR +4852+00220 Europe/Paris
+GA +0023+00927 Africa/Libreville
+GB +513030-0000731 Europe/London
+GD +1203-06145 America/Grenada
+GE +4143+04449 Asia/Tbilisi
+GF +0456-05220 America/Cayenne
+GG +4927-00232 Europe/Guernsey
+GH +0533-00013 Africa/Accra
+GI +3608-00521 Europe/Gibraltar
+GL +6411-05144 America/Godthab most locations
+GL +7646-01840 America/Danmarkshavn east coast, north of Scoresbysund
+GL +7029-02158 America/Scoresbysund Scoresbysund / Ittoqqortoormiit
+GL +7634-06847 America/Thule Thule / Pituffik
+GM +1328-01639 Africa/Banjul
+GN +0931-01343 Africa/Conakry
+GP +1614-06132 America/Guadeloupe
+GQ +0345+00847 Africa/Malabo
+GR +3758+02343 Europe/Athens
+GS -5416-03632 Atlantic/South_Georgia
+GT +1438-09031 America/Guatemala
+GU +1328+14445 Pacific/Guam
+GW +1151-01535 Africa/Bissau
+GY +0648-05810 America/Guyana
+HK +2217+11409 Asia/Hong_Kong
+HN +1406-08713 America/Tegucigalpa
+HR +4548+01558 Europe/Zagreb
+HT +1832-07220 America/Port-au-Prince
+HU +4730+01905 Europe/Budapest
+ID -0610+10648 Asia/Jakarta Java & Sumatra
+ID -0002+10920 Asia/Pontianak west & central Borneo
+ID -0507+11924 Asia/Makassar east & south Borneo, Celebes, Bali, Nusa Tengarra, west Timor
+ID -0232+14042 Asia/Jayapura Irian Jaya & the Moluccas
+IE +5320-00615 Europe/Dublin
+IL +3146+03514 Asia/Jerusalem
+IM +5409-00428 Europe/Isle_of_Man
+IN +2232+08822 Asia/Calcutta
+IO -0720+07225 Indian/Chagos
+IQ +3321+04425 Asia/Baghdad
+IR +3540+05126 Asia/Tehran
+IS +6409-02151 Atlantic/Reykjavik
+IT +4154+01229 Europe/Rome
+JE +4912-00207 Europe/Jersey
+JM +1800-07648 America/Jamaica
+JO +3157+03556 Asia/Amman
+JP +353916+1394441 Asia/Tokyo
+KE -0117+03649 Africa/Nairobi
+KG +4254+07436 Asia/Bishkek
+KH +1133+10455 Asia/Phnom_Penh
+KI +0125+17300 Pacific/Tarawa Gilbert Islands
+KI -0308-17105 Pacific/Enderbury Phoenix Islands
+KI +0152-15720 Pacific/Kiritimati Line Islands
+KM -1141+04316 Indian/Comoro
+KN +1718-06243 America/St_Kitts
+KP +3901+12545 Asia/Pyongyang
+KR +3733+12658 Asia/Seoul
+KW +2920+04759 Asia/Kuwait
+KY +1918-08123 America/Cayman
+KZ +4315+07657 Asia/Almaty most locations
+KZ +4448+06528 Asia/Qyzylorda Qyzylorda (Kyzylorda, Kzyl-Orda)
+KZ +5017+05710 Asia/Aqtobe Aqtobe (Aktobe)
+KZ +4431+05016 Asia/Aqtau Atyrau (Atirau, Gur'yev), Mangghystau (Mankistau)
+KZ +5113+05121 Asia/Oral West Kazakhstan
+LA +1758+10236 Asia/Vientiane
+LB +3353+03530 Asia/Beirut
+LC +1401-06100 America/St_Lucia
+LI +4709+00931 Europe/Vaduz
+LK +0656+07951 Asia/Colombo
+LR +0618-01047 Africa/Monrovia
+LS -2928+02730 Africa/Maseru
+LT +5441+02519 Europe/Vilnius
+LU +4936+00609 Europe/Luxembourg
+LV +5657+02406 Europe/Riga
+LY +3254+01311 Africa/Tripoli
+MA +3339-00735 Africa/Casablanca
+MC +4342+00723 Europe/Monaco
+MD +4700+02850 Europe/Chisinau
+ME +4226+01916 Europe/Podgorica
+MG -1855+04731 Indian/Antananarivo
+MH +0709+17112 Pacific/Majuro most locations
+MH +0905+16720 Pacific/Kwajalein Kwajalein
+MK +4159+02126 Europe/Skopje
+ML +1239-00800 Africa/Bamako
+MM +1647+09610 Asia/Rangoon
+MN +4755+10653 Asia/Ulaanbaatar most locations
+MN +4801+09139 Asia/Hovd Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan
+MN +4804+11430 Asia/Choibalsan Dornod, Sukhbaatar
+MO +2214+11335 Asia/Macau
+MP +1512+14545 Pacific/Saipan
+MQ +1436-06105 America/Martinique
+MR +1806-01557 Africa/Nouakchott
+MS +1643-06213 America/Montserrat
+MT +3554+01431 Europe/Malta
+MU -2010+05730 Indian/Mauritius
+MV +0410+07330 Indian/Maldives
+MW -1547+03500 Africa/Blantyre
+MX +1924-09909 America/Mexico_City Central Time - most locations
+MX +2105-08646 America/Cancun Central Time - Quintana Roo
+MX +2058-08937 America/Merida Central Time - Campeche, Yucatan
+MX +2540-10019 America/Monterrey Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas
+MX +2313-10625 America/Mazatlan Mountain Time - S Baja, Nayarit, Sinaloa
+MX +2838-10605 America/Chihuahua Mountain Time - Chihuahua
+MX +2904-11058 America/Hermosillo Mountain Standard Time - Sonora
+MX +3232-11701 America/Tijuana Pacific Time
+MY +0310+10142 Asia/Kuala_Lumpur peninsular Malaysia
+MY +0133+11020 Asia/Kuching Sabah & Sarawak
+MZ -2558+03235 Africa/Maputo
+NA -2234+01706 Africa/Windhoek
+NC -2216+16530 Pacific/Noumea
+NE +1331+00207 Africa/Niamey
+NF -2903+16758 Pacific/Norfolk
+NG +0627+00324 Africa/Lagos
+NI +1209-08617 America/Managua
+NL +5222+00454 Europe/Amsterdam
+NO +5955+01045 Europe/Oslo
+NP +2743+08519 Asia/Katmandu
+NR -0031+16655 Pacific/Nauru
+NU -1901+16955 Pacific/Niue
+NZ -3652+17446 Pacific/Auckland most locations
+NZ -4357-17633 Pacific/Chatham Chatham Islands
+OM +2336+05835 Asia/Muscat
+PA +0858-07932 America/Panama
+PE -1203-07703 America/Lima
+PF -1732-14934 Pacific/Tahiti Society Islands
+PF -0900-13930 Pacific/Marquesas Marquesas Islands
+PF -2308-13457 Pacific/Gambier Gambier Islands
+PG -0930+14710 Pacific/Port_Moresby
+PH +1435+12100 Asia/Manila
+PK +2452+06703 Asia/Karachi
+PL +5215+02100 Europe/Warsaw
+PM +4703-05620 America/Miquelon
+PN -2504-13005 Pacific/Pitcairn
+PR +182806-0660622 America/Puerto_Rico
+PS +3130+03428 Asia/Gaza
+PT +3843-00908 Europe/Lisbon mainland
+PT +3238-01654 Atlantic/Madeira Madeira Islands
+PT +3744-02540 Atlantic/Azores Azores
+PW +0720+13429 Pacific/Palau
+PY -2516-05740 America/Asuncion
+QA +2517+05132 Asia/Qatar
+RE -2052+05528 Indian/Reunion
+RO +4426+02606 Europe/Bucharest
+RS +4450+02030 Europe/Belgrade
+RU +5443+02030 Europe/Kaliningrad Moscow-01 - Kaliningrad
+RU +5545+03735 Europe/Moscow Moscow+00 - west Russia
+RU +4844+04425 Europe/Volgograd Moscow+00 - Caspian Sea
+RU +5312+05009 Europe/Samara Moscow+01 - Samara, Udmurtia
+RU +5651+06036 Asia/Yekaterinburg Moscow+02 - Urals
+RU +5500+07324 Asia/Omsk Moscow+03 - west Siberia
+RU +5502+08255 Asia/Novosibirsk Moscow+03 - Novosibirsk
+RU +5601+09250 Asia/Krasnoyarsk Moscow+04 - Yenisei River
+RU +5216+10420 Asia/Irkutsk Moscow+05 - Lake Baikal
+RU +6200+12940 Asia/Yakutsk Moscow+06 - Lena River
+RU +4310+13156 Asia/Vladivostok Moscow+07 - Amur River
+RU +4658+14242 Asia/Sakhalin Moscow+07 - Sakhalin Island
+RU +5934+15048 Asia/Magadan Moscow+08 - Magadan
+RU +5301+15839 Asia/Kamchatka Moscow+09 - Kamchatka
+RU +6445+17729 Asia/Anadyr Moscow+10 - Bering Sea
+RW -0157+03004 Africa/Kigali
+SA +2438+04643 Asia/Riyadh
+SB -0932+16012 Pacific/Guadalcanal
+SC -0440+05528 Indian/Mahe
+SD +1536+03232 Africa/Khartoum
+SE +5920+01803 Europe/Stockholm
+SG +0117+10351 Asia/Singapore
+SH -1555-00542 Atlantic/St_Helena
+SI +4603+01431 Europe/Ljubljana
+SJ +7800+01600 Arctic/Longyearbyen Svalbard
+SJ +7059-00805 Atlantic/Jan_Mayen Jan Mayen
+SK +4809+01707 Europe/Bratislava
+SL +0830-01315 Africa/Freetown
+SM +4355+01228 Europe/San_Marino
+SN +1440-01726 Africa/Dakar
+SO +0204+04522 Africa/Mogadishu
+SR +0550-05510 America/Paramaribo
+ST +0020+00644 Africa/Sao_Tome
+SV +1342-08912 America/El_Salvador
+SY +3330+03618 Asia/Damascus
+SZ -2618+03106 Africa/Mbabane
+TC +2128-07108 America/Grand_Turk
+TD +1207+01503 Africa/Ndjamena
+TF -492110+0701303 Indian/Kerguelen
+TG +0608+00113 Africa/Lome
+TH +1345+10031 Asia/Bangkok
+TJ +3835+06848 Asia/Dushanbe
+TK -0922-17114 Pacific/Fakaofo
+TL -0833+12535 Asia/Dili
+TM +3757+05823 Asia/Ashgabat
+TN +3648+01011 Africa/Tunis
+TO -2110+17510 Pacific/Tongatapu
+TR +4101+02858 Europe/Istanbul
+TT +1039-06131 America/Port_of_Spain
+TV -0831+17913 Pacific/Funafuti
+TW +2503+12130 Asia/Taipei
+TZ -0648+03917 Africa/Dar_es_Salaam
+UA +5026+03031 Europe/Kiev most locations
+UA +4837+02218 Europe/Uzhgorod Ruthenia
+UA +4750+03510 Europe/Zaporozhye Zaporozh'ye, E Lugansk / Zaporizhia, E Luhansk
+UA +4457+03406 Europe/Simferopol central Crimea
+UG +0019+03225 Africa/Kampala
+UM +1645-16931 Pacific/Johnston Johnston Atoll
+UM +2813-17722 Pacific/Midway Midway Islands
+UM +1917+16637 Pacific/Wake Wake Island
+US +404251-0740023 America/New_York Eastern Time
+US +421953-0830245 America/Detroit Eastern Time - Michigan - most locations
+US +381515-0854534 America/Kentucky/Louisville Eastern Time - Kentucky - Louisville area
+US +364947-0845057 America/Kentucky/Monticello Eastern Time - Kentucky - Wayne County
+US +394606-0860929 America/Indiana/Indianapolis Eastern Time - Indiana - most locations
+US +384038-0873143 America/Indiana/Vincennes Eastern Time - Indiana - Daviess, Dubois, Knox & Martin Counties
+US +411745-0863730 America/Indiana/Knox Eastern Time - Indiana - Starke County
+US +410305-0863611 America/Indiana/Winamac Eastern Time - Indiana - Pulaski County
+US +382232-0862041 America/Indiana/Marengo Eastern Time - Indiana - Crawford County
+US +384452-0850402 America/Indiana/Vevay Eastern Time - Indiana - Switzerland County
+US +415100-0873900 America/Chicago Central Time
+US +375711-0864541 America/Indiana/Tell_City Central Time - Indiana - Perry County
+US +382931-0871643 America/Indiana/Petersburg Central Time - Indiana - Pike County
+US +450628-0873651 America/Menominee Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties
+US +470659-1011757 America/North_Dakota/Center Central Time - North Dakota - Oliver County
+US +465042-1012439 America/North_Dakota/New_Salem Central Time - North Dakota - Morton County (except Mandan area)
+US +394421-1045903 America/Denver Mountain Time
+US +433649-1161209 America/Boise Mountain Time - south Idaho & east Oregon
+US +364708-1084111 America/Shiprock Mountain Time - Navajo
+US +332654-1120424 America/Phoenix Mountain Standard Time - Arizona
+US +340308-1181434 America/Los_Angeles Pacific Time
+US +611305-1495401 America/Anchorage Alaska Time
+US +581807-1342511 America/Juneau Alaska Time - Alaska panhandle
+US +593249-1394338 America/Yakutat Alaska Time - Alaska panhandle neck
+US +643004-1652423 America/Nome Alaska Time - west Alaska
+US +515248-1763929 America/Adak Aleutian Islands
+US +211825-1575130 Pacific/Honolulu Hawaii
+UY -3453-05611 America/Montevideo
+UZ +3940+06648 Asia/Samarkand west Uzbekistan
+UZ +4120+06918 Asia/Tashkent east Uzbekistan
+VA +4154+01227 Europe/Vatican
+VC +1309-06114 America/St_Vincent
+VE +1030-06656 America/Caracas
+VG +1827-06437 America/Tortola
+VI +1821-06456 America/St_Thomas
+VN +1045+10640 Asia/Saigon
+VU -1740+16825 Pacific/Efate
+WF -1318-17610 Pacific/Wallis
+WS -1350-17144 Pacific/Apia
+YE +1245+04512 Asia/Aden
+YT -1247+04514 Indian/Mayotte
+ZA -2615+02800 Africa/Johannesburg
+ZM -1525+02817 Africa/Lusaka
+ZW -1750+03103 Africa/Harare
diff --git a/jdk/make/sun/javazic/tzdata_jdk/gmt b/jdk/make/sun/javazic/tzdata_jdk/gmt
new file mode 100644
index 0000000..15e32b7
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata_jdk/gmt
@@ -0,0 +1,27 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone GMT 0:00 - GMT
diff --git a/jdk/make/sun/javazic/tzdata_jdk/jdk11_backward b/jdk/make/sun/javazic/tzdata_jdk/jdk11_backward
new file mode 100644
index 0000000..8a3b897
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata_jdk/jdk11_backward
@@ -0,0 +1,80 @@
+#
+# Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# JDK 1.1.x compatible time zone IDs
+#
+
+Link Australia/Darwin ACT
+Link Australia/Sydney AET
+Link America/Argentina/Buenos_Aires AGT
+Link Africa/Cairo ART
+Link America/Anchorage AST
+Link America/Sao_Paulo BET
+Link Asia/Dhaka BST
+Link Africa/Harare CAT
+Link America/St_Johns CNT
+Link America/Chicago CST
+Link Asia/Shanghai CTT
+Link Africa/Addis_Ababa EAT
+Link Europe/Paris ECT
+Link America/New_York EST
+Link Pacific/Honolulu HST
+Link America/Indianapolis IET
+Link Asia/Calcutta IST
+Link Asia/Tokyo JST
+Link Pacific/Apia MIT
+Link America/Denver MST
+Link Asia/Yerevan NET
+Link Pacific/Auckland NST
+Link Asia/Karachi PLT
+Link America/Phoenix PNT
+Link America/Puerto_Rico PRT
+Link America/Los_Angeles PST
+Link Pacific/Guadalcanal SST
+Link Asia/Saigon VST
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule SystemV min 1973 - Apr lastSun 2:00 1:00 D
+Rule SystemV min 1973 - Oct lastSun 2:00 0 S
+Rule SystemV 1974 only - Jan 6 2:00 1:00 D
+Rule SystemV 1974 only - Nov lastSun 2:00 0 S
+Rule SystemV 1975 only - Feb 23 2:00 1:00 D
+Rule SystemV 1975 only - Oct lastSun 2:00 0 S
+Rule SystemV 1976 max - Apr lastSun 2:00 1:00 D
+Rule SystemV 1976 max - Oct lastSun 2:00 0 S
+
+# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
+Zone SystemV/AST4ADT -4:00 SystemV A%sT
+Zone SystemV/EST5EDT -5:00 SystemV E%sT
+Zone SystemV/CST6CDT -6:00 SystemV C%sT
+Zone SystemV/MST7MDT -7:00 SystemV M%sT
+Zone SystemV/PST8PDT -8:00 SystemV P%sT
+Zone SystemV/YST9YDT -9:00 SystemV Y%sT
+Zone SystemV/AST4 -4:00 - AST
+Zone SystemV/EST5 -5:00 - EST
+Zone SystemV/CST6 -6:00 - CST
+Zone SystemV/MST7 -7:00 - MST
+Zone SystemV/PST8 -8:00 - PST
+Zone SystemV/YST9 -9:00 - YST
+Zone SystemV/HST10 -10:00 - HST
diff --git a/jdk/make/sun/javazic/tzdata_jdk/jdk11_full_backward b/jdk/make/sun/javazic/tzdata_jdk/jdk11_full_backward
new file mode 100644
index 0000000..8999a95
--- /dev/null
+++ b/jdk/make/sun/javazic/tzdata_jdk/jdk11_full_backward
@@ -0,0 +1,93 @@
+#
+# Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+# JDK 1.1.x compatible time zone IDs
+#
+
+Link Australia/Darwin ACT
+Link Australia/Sydney AET
+Link America/Argentina/Buenos_Aires AGT
+Link Africa/Cairo ART
+Link America/Anchorage AST
+Link America/Sao_Paulo BET
+Link Asia/Dhaka BST
+Link Africa/Harare CAT
+Link America/St_Johns CNT
+Link America/Chicago CST
+Link Asia/Shanghai CTT
+Link Africa/Addis_Ababa EAT
+Link Europe/Paris ECT
+Link America/New_York EST
+Link Pacific/Honolulu HST
+Link America/Indiana/Indianapolis IET
+Link Asia/Calcutta IST
+Link Asia/Tokyo JST
+Link Pacific/Apia MIT
+Link America/Denver MST
+Link Asia/Yerevan NET
+Link Pacific/Auckland NST
+Link Asia/Karachi PLT
+Link America/Phoenix PNT
+Link America/Puerto_Rico PRT
+Link America/Los_Angeles PST
+Link Pacific/Guadalcanal SST
+Link Asia/Saigon VST
+
+# The follwong link is required to generate J2SE 1.2.x and 1.3.x
+# compatible zones. In the Olson public source, MET is defined as
+# GMT+1:00 with the C-Eur rules. In J2SE, MET is defined as an alias
+# of Asia/Tehran. This line must be removed if a full set of Olson
+# zones is generated. Otherwise, MET appears twice in the
+# ZoneInfoMappings.IDs table.
+Link Asia/Tehran MET
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule SystemV min 1973 - Apr lastSun 2:00 1:00 D
+Rule SystemV min 1973 - Oct lastSun 2:00 0 S
+Rule SystemV 1974 only - Jan 6 2:00 1:00 D
+Rule SystemV 1974 only - Nov lastSun 2:00 0 S
+Rule SystemV 1975 only - Feb 23 2:00 1:00 D
+Rule SystemV 1975 only - Oct lastSun 2:00 0 S
+Rule SystemV 1976 max - Apr lastSun 2:00 1:00 D
+Rule SystemV 1976 max - Oct lastSun 2:00 0 S
+
+# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
+Zone SystemV/AST4ADT -4:00 SystemV A%sT
+Zone SystemV/EST5EDT -5:00 SystemV E%sT
+Zone SystemV/CST6CDT -6:00 SystemV C%sT
+Zone SystemV/MST7MDT -7:00 SystemV M%sT
+Zone SystemV/PST8PDT -8:00 SystemV P%sT
+Zone SystemV/YST9YDT -9:00 SystemV Y%sT
+Zone SystemV/AST4 -4:00 - AST
+Zone SystemV/EST5 -5:00 - EST
+Zone SystemV/CST6 -6:00 - CST
+Zone SystemV/MST7 -7:00 - MST
+Zone SystemV/PST8 -8:00 - PST
+Zone SystemV/YST9 -9:00 - YST
+Zone SystemV/HST10 -10:00 - HST
+
+#
+# For the UTC change in Mustang
+#
+Link GMT UTC
diff --git a/jdk/make/sun/jawt/Depend.mak b/jdk/make/sun/jawt/Depend.mak
new file mode 100644
index 0000000..baff40b
--- /dev/null
+++ b/jdk/make/sun/jawt/Depend.mak
@@ -0,0 +1,130 @@
+#
+# This makefile must be executed on a system with makedepend, such as Solaris.
+# In my copious amount of spare time, I hope to write a Java-based makedepend
+# to eliminate this dependency (no pun intended). TB
+
+BUILD_DIR = ../..
+TOPDIR = ../../..
+
+STUBDIR = WindowsSystemHeaderStubs
+BUILDSTUBDIR = BuildStubs
+
+SHARE_SRC = $(TOPDIR)/src/share
+SUN_SRC = $(SHARE_SRC)/native/sun
+COMP_SRC = $(SUN_SRC)/awt/alphacomposite
+DEBUG_SRC = $(SUN_SRC)/awt/debug
+IMG_SRC = $(SUN_SRC)/awt/image
+MEDIA_SRC = $(SUN_SRC)/awt/medialib
+J2D_SRC = $(SUN_SRC)/java2d
+J2D_WINDOWS_SRC = $(WINDOWS_SRC)/native/sun/java2d
+J2D_FONT_SRC = $(SUN_SRC)/font
+LOOP_SRC = $(SUN_SRC)/java2d/loops
+PIPE_SRC = $(SUN_SRC)/java2d/pipe
+WINDOWS_SRC = $(TOPDIR)/src/windows
+SRC = $(WINDOWS_SRC)/native/sun/windows
+
+SRCDIRS = \
+ $(COMP_SRC) \
+ $(DEBUG_SRC) \
+ $(IMG_SRC) \
+ $(IMG_SRC)/cvutils \
+ $(IMG_SRC)/gif \
+ $(MEDIA_SRC) \
+ $(J2D_SRC) \
+ $(J2D_FONT_SRC) \
+ $(J2D_WINDOWS_SRC)/windows \
+ $(J2D_WINDOWS_SRC)/d3d \
+ $(J2D_WINDOWS_SRC)/opengl \
+ $(LOOP_SRC) \
+ $(PIPE_SRC) \
+ $(SRC)
+
+INCLUDES = \
+ -I$(STUBDIR) \
+ -I$(BUILDSTUBDIR) \
+ -I$(SHARE_SRC)/javavm/export \
+ -I$(WINDOWS_SRC)/javavm/export \
+ -I$(SHARE_SRC)/native/common \
+ -I$(WINDOWS_SRC)/native/common \
+ -I$(SUN_SRC)/dc/doe \
+ -I$(SUN_SRC)/dc/path \
+ -I$(COMP_SRC) \
+ -I$(DEBUG_SRC) \
+ -I$(IMG_SRC) \
+ -I$(IMG_SRC)/cvutils \
+ -I$(MEDIA_SRC) \
+ -I$(J2D_SRC) \
+ -I$(J2D_FONT_SRC) \
+ -I$(J2D_WINDOWS_SRC) \
+ -I$(J2D_WINDOWS_SRC)/windows \
+ -I$(J2D_WINDOWS_SRC)/d3d \
+ -I$(J2D_WINDOWS_SRC)/opengl \
+ -I$(LOOP_SRC) \
+ -I$(PIPE_SRC) \
+ -I$(SRC)
+
+STUBFILES = \
+ $(STUBDIR)/ddraw.h \
+ $(STUBDIR)/Ole2.h \
+ $(STUBDIR)/d3d.h \
+ $(STUBDIR)/d3dx.h \
+ $(STUBDIR)/cderr.h \
+ $(STUBDIR)/commdlg.h \
+ $(STUBDIR)/direct.h \
+ $(STUBDIR)/imm.h \
+ $(STUBDIR)/ime.h \
+ $(STUBDIR)/io.h \
+ $(STUBDIR)/mmsystem.h \
+ $(STUBDIR)/new.h \
+ $(STUBDIR)/new \
+ $(STUBDIR)/shellapi.h \
+ $(STUBDIR)/shlobj.h \
+ $(STUBDIR)/tchar.h \
+ $(STUBDIR)/winbase.h \
+ $(STUBDIR)/windef.h \
+ $(STUBDIR)/windows.h \
+ $(STUBDIR)/winspool.h \
+ $(STUBDIR)/winuser.h \
+ $(STUBDIR)/wtypes.h
+
+default: dependencies
+
+FILES_cpp = jawt.cpp
+
+dependencies:
+ rm -rf make.depend
+ rm -rf make.tmp make.tmp2 make.tmp.bak
+ rm -rf $(STUBDIR) $(BUILDSTUBDIR) depend.filelist
+ for file in $(FILES_c) $(FILES_cpp) $(EXTRAFILES_c); do \
+ for dir in $(SRCDIRS); do \
+ if [ -f $$dir/$$file ]; then \
+ echo $$dir/$$file >>depend.filelist; \
+ fi; \
+ if [ -f $$dir/$${file}pp ]; then \
+ echo $$dir/$${file}pp >>depend.filelist; \
+ fi; \
+ done; \
+ done
+ touch make.tmp
+ mkdir $(STUBDIR)
+ touch $(STUBFILES)
+ mkdir $(BUILDSTUBDIR)
+ gnumake -f Depend.mak classhdrstubs
+ cat depend.filelist | xargs -n 100 makedepend \
+ -DWIN32 -D_X86X -Dx86 -DDEBUG -D_MSC_VER -DMLIB_NO_LIBSUNMATH \
+ -a -f make.tmp -o.obj $(INCLUDES)
+ fgrep .obj make.tmp | sed -f Depend.sed | sort -u | nawk -f ../awt/CondenseRules.awk > make.depend
+ rm -rf make.tmp make.tmp2 make.tmp.bak
+ rm -rf $(STUBDIR) $(BUILDSTUBDIR) depend.filelist
+
+
+include ../awt/FILES_export_windows.gmk
+
+FILES_java = $(FILES_export) $(FILES_export2) $(FILES_export3)
+
+classhdrstubs:
+ for file in `echo $(FILES_java) | \
+ tr ' ' '\n' | \
+ sed -e 'y/\//_/' -e 's/\.java/.h/'`; do \
+ echo "#include <jni.h>" > $(BUILDSTUBDIR)/$$file; \
+ done
diff --git a/jdk/make/sun/jawt/Depend.sed b/jdk/make/sun/jawt/Depend.sed
new file mode 100644
index 0000000..72e529f
--- /dev/null
+++ b/jdk/make/sun/jawt/Depend.sed
@@ -0,0 +1,32 @@
+# Unqualify std headers
+# remove headers with no extension as well (e.g. C++ 94 STL headers) - robi
+# s/ \/usr\/include[^ ]*\.h//g
+s/ \/usr\/include[^ ]*//g
+
+# Unqualify std Windows headers
+# remove headers with no extension as well (e.g. C++ 94 STL headers) - robi
+# s/ WindowsSystemHeaderStubs[^ ]*\.h//g
+s/ WindowsSystemHeaderStubs[^ ]*//g
+
+# ####################################
+# Rules to allow for generation of dependencies on an unbuilt tree...
+#
+# BuildStubs is populated with stubs for include files that are
+# generated by the build and then dependencies are adjusted here
+#
+# Adjust awt_colors.h
+# Change BuildStubs to .
+s/ BuildStubs\/awt_colors.h/ $(OBJDIR)\/awt_colors.h/g
+#
+# Adjust CClassHeaders
+# Change BuildStubs to CClassHeaders
+s/ BuildStubs/ $(CLASSHDRDIR)\/..\/..\/awt\/CClassHeaders/g
+#
+# End of unbuilt tree adjustments
+# ####################################
+
+# Remove any empty rules
+/:[ ]*$/d
+
+# Change .obj path from src to proper awt/obj or awt/obj_g directory
+s/^.*\/\(.*:\)/$(OBJDIR)\/\1:/
diff --git a/jdk/make/sun/jawt/Makefile b/jdk/make/sun/jawt/Makefile
new file mode 100644
index 0000000..4f733e4
--- /dev/null
+++ b/jdk/make/sun/jawt/Makefile
@@ -0,0 +1,156 @@
+#
+# Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.awt
+LIBRARY = jawt
+PRODUCT = sun
+
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+ifeq ($(PLATFORM), windows)
+FILES_cpp = jawt.cpp
+else # PLATFORM
+FILES_c = jawt.c
+endif # PLATFORM
+
+FILES_h = $(INCLUDEDIR)/jawt.h \
+ $(PLATFORM_INCLUDE)/jawt_md.h
+
+#
+# Use mapfile
+#
+FILES_m = mapfile-vers
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+
+ifeq ($(PLATFORM), windows)
+#
+# Extra C flags.
+#
+
+OTHER_CXXFLAGS += $(GX_OPTION) -DUNICODE -D_UNICODE
+
+#
+# Other extra flags needed for compiling.
+#
+CPPFLAGS += -I$(SHARE_SRC)/native/common \
+ -I$(DXSDK_INCLUDE_PATH) \
+ -I$(PLATFORM_SRC)/native/sun/windows \
+ -I$(CLASSHDRDIR)/../../awt/CClassHeaders \
+ -I$(SHARE_SRC)/native/sun/awt/debug \
+ -I$(SHARE_SRC)/native/sun/font \
+ -I$(SHARE_SRC)/native/sun/java2d \
+ -I$(SHARE_SRC)/native/sun/java2d/loops \
+ -I$(SHARE_SRC)/native/sun/java2d/pipe \
+ -I$(PLATFORM_SRC)/native/sun/java2d \
+ -I$(PLATFORM_SRC)/native/sun/java2d/windows \
+ -I$(PLATFORM_SRC)/native/sun/java2d/d3d \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/image/cvutils \
+ -I$(SHARE_SRC)/javavm/export \
+ -I$(PLATFORM_SRC)/javavm/export
+INSTALL_DOT_LIB = true
+
+vpath %.cpp $(PLATFORM_SRC)/native/sun/windows
+
+#
+# Libraries to link in.
+#
+ifeq ($(ARCH_DATA_MODEL), 64)
+OTHER_LDLIBS = $(OBJDIR)/../../awt/$(OBJDIRNAME)/awt.lib
+else
+OTHER_LDLIBS = kernel32.lib \
+ $(OBJDIR)/../../awt/$(OBJDIRNAME)/awt.lib
+endif
+else # PLATFORM
+
+#
+# Other extra flags needed for compiling.
+#
+CPPFLAGS += -I$(OPENWIN_HOME)/include \
+ -I$(MOTIF_DIR)/include \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/debug \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/image \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/image/cvutils \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/alphacomposite \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/medialib \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/medialib \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../java2d/loops \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../java2d/pipe \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../java2d/opengl \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/../java2d/opengl \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/../java2d/x11 \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../dc/doe \
+ -I$(SHARE_SRC)/native/$(PKGDIR)/../dc/path \
+ -I$(PLATFORM_SRC)/native/$(PKGDIR)/../jdga \
+ $(EVENT_MODEL)
+#
+# Libraries to link in.
+#
+ifeq ($(PLATFORM), solaris)
+OTHER_LDLIBS = -L$(LIBDIR)/$(LIBARCH) -L$(OPENWIN_LIB) -L$(LIBDIR)/$(LIBARCH)/xawt -lmawt
+endif # PLATFORM
+
+ifeq ($(PLATFORM), linux)
+OTHER_LDLIBS = -L$(LIBDIR)/$(LIBARCH) -lawt -L$(LIBDIR)/$(LIBARCH)/xawt -lmawt
+endif # PLATFORM
+
+endif # PLATFORM
+
+
+#
+# Lets not remove any class files.
+#
+DONT_CLOBBER_CLASSES = true
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Library.gmk
+
+build: $(FILES_h)
+
+ifeq ($(PLATFORM), windows)
+include make.depend
+endif
+
+#
+# Install header files.
+#
+$(INCLUDEDIR)/%.h: $(SHARE_SRC)/javavm/export/%.h
+ $(install-file)
+$(PLATFORM_INCLUDE)/%.h: $(PLATFORM_SRC)/javavm/export/%.h
+ $(install-file)
+
+
+#
+# Extra clean rule.
+#
+clean clobber::
+ $(RM) $(FILES_h)
+
diff --git a/jdk/make/sun/jawt/make.depend b/jdk/make/sun/jawt/make.depend
new file mode 100644
index 0000000..35b399b
--- /dev/null
+++ b/jdk/make/sun/jawt/make.depend
@@ -0,0 +1 @@
+$(OBJDIR)/jawt.obj:: $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_AlphaComposite.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_AWTEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_Component.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_Dimension.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_Event.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_Font.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_PlatformFont.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jawt.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jawt_md.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DrawingSurface.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
diff --git a/jdk/make/sun/jawt/mapfile-vers b/jdk/make/sun/jawt/mapfile-vers
new file mode 100644
index 0000000..3d05fd1
--- /dev/null
+++ b/jdk/make/sun/jawt/mapfile-vers
@@ -0,0 +1,33 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define library interface.
+
+SUNWprivate_1.1 {
+ global:
+ JAWT_GetAWT;
+ local:
+ *;
+};
diff --git a/jdk/make/sun/jconsole/FILES.gmk b/jdk/make/sun/jconsole/FILES.gmk
new file mode 100644
index 0000000..9bda34c
--- /dev/null
+++ b/jdk/make/sun/jconsole/FILES.gmk
@@ -0,0 +1,46 @@
+#
+# Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Files that just need cp.
+#
+
+MANIFEST = sun/tools/jconsole/manifest
+
+PNG_FILES = \
+ sun/tools/jconsole/resources/brandlogo.png \
+ sun/tools/jconsole/resources/collapse-winlf.png \
+ sun/tools/jconsole/resources/connected16.png \
+ sun/tools/jconsole/resources/connected24.png \
+ sun/tools/jconsole/resources/disconnected16.png \
+ sun/tools/jconsole/resources/disconnected24.png \
+ sun/tools/jconsole/resources/expand-winlf.png \
+ sun/tools/jconsole/resources/masthead-left.png \
+ sun/tools/jconsole/resources/masthead-right.png
+
+GIF_FILES = \
+ sun/tools/jconsole/resources/mbean.gif \
+ sun/tools/jconsole/resources/mbeanserverdelegate.gif \
+ sun/tools/jconsole/resources/xobject.gif
diff --git a/jdk/make/sun/jconsole/Makefile b/jdk/make/sun/jconsole/Makefile
new file mode 100644
index 0000000..bfbdccb
--- /dev/null
+++ b/jdk/make/sun/jconsole/Makefile
@@ -0,0 +1,90 @@
+#
+# Copyright 2004-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building jconsole
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.tools.jconsole
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+JARFILE = $(LIBDIR)/jconsole.jar
+
+OTHER_JAVACFLAGS += -encoding iso8859-1
+
+#
+# Files
+#
+include FILES.gmk
+
+AUTO_FILES_JAVA_DIRS = sun/tools/jconsole \
+ com/sun/tools/jconsole
+
+FILES_png = $(PNG_FILES:%.png=$(CLASSBINDIR)/%.png)
+FILES_gif = $(GIF_FILES:%.gif=$(CLASSBINDIR)/%.gif)
+
+build: $(GENSRCDIR)/sun/tools/jconsole/Version.java
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jdk
+RESOURCE_BUNDLES_JAVA = $(PKGDIR)/resources/JConsoleResources.java
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+build: $(FILES_png) $(FILES_gif) $(TEMPDIR)/manifest $(JARFILE)
+
+$(GENSRCDIR)/sun/tools/jconsole/Version.java: \
+ $(SHARE_SRC)/classes/sun/tools/jconsole/Version-template.java
+ $(MKDIR) -p $(@D)
+ $(SED) -e 's/@@jconsole_version@@/$(FULL_VERSION)/g' $< > $@
+
+$(CLASSBINDIR)/$(PKGDIR)/resources/%: $(SHARE_SRC)/classes/$(PKGDIR)/resources/%
+ @$(MKDIR) -p $(@D)
+ $(install-file)
+
+$(TEMPDIR)/manifest: $(SHARE_SRC)/classes/$(PKGDIR)/manifest
+ $(install-file)
+
+#
+# Extra rule to build jconsole.jar
+#
+
+$(JARFILE): $(LIBDIR) $(FILES_class) $(FILES_png) $(FILES_gif) $(TEMPDIR)/manifest
+ $(BOOT_JAR_CMD) -cfm $(JARFILE) $(TEMPDIR)/manifest \
+ -C $(CLASSBINDIR) sun/tools/jconsole \
+ -C $(CLASSBINDIR) com/sun/tools/jconsole \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+clean clobber::
+ $(RM) $(TEMPDIR)/manifest $(JARFILE)
+
diff --git a/jdk/make/sun/jdbc/Makefile b/jdk/make/sun/jdbc/Makefile
new file mode 100644
index 0000000..d520b22
--- /dev/null
+++ b/jdk/make/sun/jdbc/Makefile
@@ -0,0 +1,147 @@
+#
+# Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for JDBC-ODBC Bridge Driver
+#
+# Note - the native library for the bridge may be linked with the
+# shared library for the ODBC driver manager. Or dummy libraries
+# may be used to just create libJdbcOdbc.so with a dependency on
+# libodbc.so and libodbcinst.so.
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.jdbc.odbc
+LIBRARY = JdbcOdbc
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+
+AUTO_FILES_JAVA_DIRS = sun/jdbc/odbc
+
+FILES_c = \
+ JdbcOdbc.c
+
+FILES_export = \
+ sun/jdbc/odbc/JdbcOdbc.java
+
+# Use fake libraries on Solaris and Linux just so the library we create has
+# a dependency on these two library names. (which are not part of the jdk)
+ifneq ($(PLATFORM), windows)
+ # In jdk5 and jdk6, and on Solaris 32bit, we would have required that
+ # these two libraries exist at: $(ALT_ODBCDIR)/ISLIodbc/2.11/lib
+ # In jdk7, we just fake them out like we did on Linux in jdk5 and jdk6.
+ #
+ # If you wanted to use the real odbc libraries, change the value of
+ # ODBC_LIBRARY_LOCATION, and delete the variable assignments below.
+ #
+ # Tell linker to ignore missing externals when building this shared library.
+ LDFLAGS_DEFS_OPTION = -z nodefs
+ # Define a place to create the fake libraries and their names.
+ ODBC_LIBRARY_LOCATION = $(TEMPDIR)
+ ODBC_FAKE_LIBRARIES = $(ODBC_LIBRARY_LOCATION)/libodbcinst.so $(ODBC_LIBRARY_LOCATION)/libodbc.so
+ # Make sure they get created early.
+ INIT += $(ODBC_FAKE_LIBRARIES)
+endif
+
+ifeq ($(PLATFORM),windows)
+ # Files built here do not compile with warning level 3 if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+endif
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# The UNIX define specifies conditional compilation for UNIX
+#
+ifeq ($(PLATFORM), windows)
+ LDLIBS += odbc32.lib odbccp32.lib
+else
+ CFLAGS += -DUNIX
+ LDFLAGS += -L$(ODBC_LIBRARY_LOCATION) -lodbcinst -lodbc
+endif
+
+#
+# The native code for the bridge uses conditional compilation to
+# support Solaris, Win95 and Mac PPC. This is the path to the shared C files
+# (which unfortunately are in the same directory as shared Java files).
+#
+vpath %.c $(CLOSED_SHARE_SRC)/classes/sun/jdbc/odbc
+
+#
+# Rules to generate fake libraries
+#
+
+ifdef ODBC_FAKE_LIBRARIES
+$(TEMPDIR)/dummyodbc.c:
+ @$(prep-target)
+ $(ECHO) "void dummyOdbc(void){}" >> $@
+$(TEMPDIR)/dummyodbc.o: $(TEMPDIR)/dummyodbc.c
+ @$(prep-target)
+ $(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$@ $(CFLAGS_GPROF) $<
+$(ODBC_FAKE_LIBRARIES): $(TEMPDIR)/dummyodbc.o
+ @$(prep-target)
+ $(CC) $(SHARED_LIBRARY_FLAG) $(LDFLAGS_COMMON) -o $@ $< $(EXTRA_LIBS)
+clean::
+ $(RM) -f $(ODBC_FAKE_LIBRARIES)
+ $(RM) -f $(TEMPDIR)/dummyodbc.c
+ $(RM) -f $(TEMPDIR)/dummyodbc.o
+endif
+
+#
+# Files that need to be copied
+#
+SERVICEDIR = $(CLASSBINDIR)/META-INF/services
+
+FILES_copy = \
+ $(SERVICEDIR)/java.sql.Driver
+
+
+FILES_mkdirs = \
+ $(CLASSBINDIR)/META-INF \
+ $(CLASSBINDIR)/META-INF/services
+
+FILES_copydirs = \
+ $(CLASSBINDIR) \
+ $(FILES_mkdirs)
+
+build: copy-files
+
+copy-files: $(FILES_copy)
+
+$(SERVICEDIR)/%: $(CLOSED_SHARE_SRC)/classes/sun/jdbc/odbc/META-INF/services/%
+ $(install-file)
+
+clean clobber::
+ $(RM) $(FILES_copy)
+
+.PHONY: copy-files
+
diff --git a/jdk/make/sun/jdga/Makefile b/jdk/make/sun/jdga/Makefile
new file mode 100644
index 0000000..257996d
--- /dev/null
+++ b/jdk/make/sun/jdga/Makefile
@@ -0,0 +1,66 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+
+BUILDDIR = ../..
+PACKAGE = sun.jdga
+LIBRARY = sunwjdga
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+FILES_c = \
+ dgalock.c
+
+#
+# Add use of mapfile
+#
+ifeq ($(ARCH_FAMILY), sparc)
+FILES_m = mapfile-vers
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+endif
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# Add to the ambient vpath to pick up files in subdirectories
+#
+vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)
+
+ifneq ($(PLATFORM), windows)
+ LDLIBS = -ldga -lX11 -ldl -lc
+
+ CPPFLAGS += \
+ -I$(SHARE_SRC)/javavm/export \
+ -I$(PLATFORM_SRC)/javavm/export \
+ -I$(OPENWIN_HOME)/include
+endif
+
+LDFLAGS += -L$(OPENWIN_LIB) -R$(OPENWIN_RUNTIME_LIB)
diff --git a/jdk/make/sun/jdga/mapfile-vers b/jdk/make/sun/jdga/mapfile-vers
new file mode 100644
index 0000000..4346011
--- /dev/null
+++ b/jdk/make/sun/jdga/mapfile-vers
@@ -0,0 +1,33 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define library interface.
+
+SUNWprivate_1.1 {
+ global:
+ JDgaLibInit;
+ local:
+ *;
+};
diff --git a/jdk/make/sun/jpeg/FILES_c.gmk b/jdk/make/sun/jpeg/FILES_c.gmk
new file mode 100644
index 0000000..2ebc44e
--- /dev/null
+++ b/jdk/make/sun/jpeg/FILES_c.gmk
@@ -0,0 +1,79 @@
+#
+# Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ imageioJPEG.c \
+ jpegdecoder.c \
+ jcomapi.c \
+ jdapimin.c \
+ jdapistd.c \
+ jdcoefct.c \
+ jdcolor.c \
+ jddctmgr.c \
+ jdhuff.c \
+ jdinput.c \
+ jdmainct.c \
+ jdmarker.c \
+ jdmaster.c \
+ jdmerge.c \
+ jdphuff.c \
+ jdpostct.c \
+ jdsample.c \
+ jerror.c \
+ jidctflt.c \
+ jidctfst.c \
+ jidctint.c \
+ jidctred.c \
+ jmemmgr.c \
+ jmemnobs.c \
+ jquant1.c \
+ jquant2.c \
+ jutils.c \
+ jcapimin.c \
+ jcapistd.c \
+ jccoefct.c \
+ jccolor.c \
+ jcdctmgr.c \
+ jchuff.c \
+ jcinit.c \
+ jcmainct.c \
+ jcmarker.c \
+ jcmaster.c \
+ jcparam.c \
+ jcphuff.c \
+ jcprepct.c \
+ jcsample.c \
+ jctrans.c \
+ jdtrans.c \
+ jfdctflt.c \
+ jfdctfst.c \
+ jfdctint.c
+
+ifndef OPENJDK
+FILES_c += \
+ jpegimagedecoderimpl.c \
+ jpegimageencoderimpl.c \
+ jpegparam.c
+endif
diff --git a/jdk/make/sun/jpeg/Makefile b/jdk/make/sun/jpeg/Makefile
new file mode 100644
index 0000000..45bc708
--- /dev/null
+++ b/jdk/make/sun/jpeg/Makefile
@@ -0,0 +1,82 @@
+#
+# Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.awt
+LIBRARY = jpeg
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Use highest optimization level
+#
+_OPT = $(CC_HIGHEST_OPT)
+
+#
+# Files
+#
+include FILES_c.gmk
+
+AUTO_FILES_JAVA_DIRS = sun/awt/image com/sun/imageio/plugins/jpeg
+
+FILES_export = \
+ sun/awt/image/JPEGImageDecoder.java \
+ com/sun/imageio/plugins/jpeg/JPEGImageReader.java \
+ com/sun/imageio/plugins/jpeg/JPEGImageWriter.java
+
+# OpenJDK doesn't use the non-standard jpeg classes which we hope to remove.
+ifndef OPENJDK
+FILES_m = mapfile-vers-closed
+FILES_export += \
+ sun/awt/image/codec/JPEGImageDecoderImpl.java \
+ sun/awt/image/codec/JPEGImageEncoderImpl.java
+vpath %.c $(CLOSED_SRC)/share/native/$(PKGDIR)/image/jpeg
+OTHER_INCLUDES += -I$(CLOSED_SRC)/share/native/$(PKGDIR)/image/jpeg
+endif
+
+OTHER_INCLUDES += -I$(SHARE_SRC)/native/$(PKGDIR)/image/jpeg
+
+# Rules
+#
+ifeq ($(PLATFORM), solaris)
+ ifneq ($(ARCH), amd64)
+ FILES_reorder += reorder-$(ARCH)
+ endif
+endif
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# Add to ambient vpath to get files in a subdirectory
+#
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/image/jpeg
+
+ifeq ($(PLATFORM), windows)
+ # Files built here do not compile with warning level 3 if warnings are fatal
+ COMPILER_WARNINGS_FATAL=false
+endif # PLATFORM
+
+CLASSES.export += java.io.InputStream
+
diff --git a/jdk/make/sun/jpeg/mapfile-vers b/jdk/make/sun/jpeg/mapfile-vers
new file mode 100644
index 0000000..16d8d5d
--- /dev/null
+++ b/jdk/make/sun/jpeg/mapfile-vers
@@ -0,0 +1,55 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ JNI_OnLoad;
+
+ Java_sun_awt_image_JPEGImageDecoder_initIDs;
+ Java_sun_awt_image_JPEGImageDecoder_readImage;
+
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_initReaderIDs;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_initJPEGImageReader;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_setSource;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImageHeader;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_setOutColorSpace;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_abortRead;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_resetReader;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_disposeReader;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_resetLibraryState;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_initWriterIDs;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_initJPEGImageWriter;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_setDest;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeTables;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_abortWrite;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_resetWriter;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_disposeWriter;
+ local:
+ *;
+};
diff --git a/jdk/make/sun/jpeg/mapfile-vers-closed b/jdk/make/sun/jpeg/mapfile-vers-closed
new file mode 100644
index 0000000..43d2db7
--- /dev/null
+++ b/jdk/make/sun/jpeg/mapfile-vers-closed
@@ -0,0 +1,59 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ JNI_OnLoad;
+
+ Java_sun_awt_image_JPEGImageDecoder_initIDs;
+ Java_sun_awt_image_JPEGImageDecoder_readImage;
+ Java_sun_awt_image_codec_JPEGImageDecoderImpl_initDecoder;
+ Java_sun_awt_image_codec_JPEGImageDecoderImpl_readJPEGStream;
+ Java_sun_awt_image_codec_JPEGImageEncoderImpl_initEncoder;
+ Java_sun_awt_image_codec_JPEGImageEncoderImpl_writeJPEGStream;
+
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_initReaderIDs;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_initJPEGImageReader;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_setSource;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImageHeader;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_setOutColorSpace;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_abortRead;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_resetReader;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_disposeReader;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_resetLibraryState;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_initWriterIDs;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_initJPEGImageWriter;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_setDest;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeTables;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_abortWrite;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_resetWriter;
+ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_disposeWriter;
+ local:
+ *;
+};
diff --git a/jdk/make/sun/jpeg/reorder-i586 b/jdk/make/sun/jpeg/reorder-i586
new file mode 100644
index 0000000..3fe7ea9
--- /dev/null
+++ b/jdk/make/sun/jpeg/reorder-i586
@@ -0,0 +1,119 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+# Test LoadFrame
+# Test LoadJFrame
+# Test JHello
+# SwingSet
+text: .text%JNI_OnLoad;
+text: .text%Java_sun_awt_image_JPEGImageDecoder_initIDs;
+text: .text%Java_sun_awt_image_JPEGImageDecoder_readImage;
+text: .text%jStdError;
+text: .text%jCreaDecompress;
+text: .text%jIMemMgr;
+text: .text%jMemInit;
+text: .text%jGetSmall;
+text: .text%jIMReader;
+text: .text%alloc_small: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jmemmgr.o;
+text: .text%reset_marker_reader: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%jIInCtlr;
+text: .text%GET_ARRAYS: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jpegdecoder.o;
+text: .text%jReadHeader;
+text: .text%jConsumeInput;
+text: .text%reset_input_controller: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdinput.o;
+text: .text%reset_error_mgr: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jerror.o;
+text: .text%sun_jpeg_init_source;
+text: .text%consume_markers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdinput.o;
+text: .text%read_markers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%first_marker: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%sun_jpeg_fill_input_buffer;
+text: .text%RELEASE_ARRAYS: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jpegdecoder.o;
+text: .text%get_soi: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%emit_message: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jerror.o;
+text: .text%next_marker: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%get_interesting_appn: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%examine_app0: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%skip_variable: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%sun_jpeg_skip_input_data;
+text: .text%examine_app14: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%get_dqt: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%jAlcQTable;
+text: .text%get_sof: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%get_dri: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%get_dht: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%jAlcHTable;
+text: .text%get_sos: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%initial_setup: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdinput.o;
+text: .text%jDivRound;
+text: .text%default_decompress_parms: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdapimin.o;
+text: .text%jHasMultScn;
+text: .text%jStrtDecompress;
+text: .text%jIDMaster;
+text: .text%master_selection: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmaster.o;
+text: .text%jCalcDimensions;
+text: .text%use_merged_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmaster.o;
+text: .text%prepare_range_limit_table: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmaster.o;
+text: .text%jIDColor;
+text: .text%build_ycc_rgb_table: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdcolor.o;
+text: .text%jIUpsampler;
+text: .text%jRound;
+text: .text%alloc_sarray: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jmemmgr.o;
+text: .text%alloc_large: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jmemmgr.o;
+text: .text%jGetLarge;
+text: .text%jIDPostC;
+text: .text%jIIDCT;
+text: .text%jIHDecoder;
+text: .text%jIDCoefC;
+text: .text%jIDMainC;
+text: .text%alloc_funny_pointers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmainct.o;
+text: .text%realize_virt_arrays: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jmemmgr.o;
+text: .text%start_input_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdinput.o;
+text: .text%per_scan_setup: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdinput.o;
+text: .text%latch_quant_tables: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdinput.o;
+text: .text%start_pass_huff_decoder: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdhuff.o;
+text: .text%jMkDDerived;
+text: .text%start_input_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdcoefct.o;
+text: .text%start_iMCU_row: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdcoefct.o;
+text: .text%output_pass_setup: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdapistd.o;
+text: .text%prepare_for_output_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmaster.o;
+text: .text%start_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jddctmgr.o;
+text: .text%start_output_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdcoefct.o;
+text: .text%start_pass_dcolor: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdcolor.o;
+text: .text%start_pass_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdsample.o;
+text: .text%start_pass_dpost: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdpostct.o;
+text: .text%start_pass_main: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmainct.o;
+text: .text%make_funny_pointers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmainct.o;
+text: .text%jReadScanlines;
+text: .text%process_data_context_main: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmainct.o;
+text: .text%decompress_onepass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdcoefct.o;
+text: .text%jZeroFar;
+text: .text%decode_mcu: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdhuff.o;
+text: .text%jFilBitBuf;
+text: .text%jHufDecode;
+text: .text%jRDislow;
+text: .text%sep_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdsample.o;
+text: .text%fullsize_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdsample.o;
+text: .text%h2v2_fancy_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdsample.o;
+text: .text%ycc_rgb_convert: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdcolor.o;
+text: .text%set_wraparound_pointers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmainct.o;
+text: .text%process_restart: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdhuff.o;
+text: .text%read_restart_marker: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%finish_input_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdinput.o;
+text: .text%set_bottom_pointers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmainct.o;
+text: .text%jFinDecompress;
+text: .text%finish_output_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmaster.o;
+text: .text%sun_jpeg_term_source;
+text: .text%jAbort;
+text: .text%free_pool: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jmemmgr.o;
+text: .text%jFreeLarge;
+text: .text%jFreeSmall;
+text: .text%jDestDecompress;
+text: .text%jDestroy;
+text: .text%self_destruct: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jmemmgr.o;
+text: .text%jMemTerm;
+text: .text%process_data_simple_main: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmainct.o;
diff --git a/jdk/make/sun/jpeg/reorder-sparc b/jdk/make/sun/jpeg/reorder-sparc
new file mode 100644
index 0000000..3fe7ea9
--- /dev/null
+++ b/jdk/make/sun/jpeg/reorder-sparc
@@ -0,0 +1,119 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+# Test LoadFrame
+# Test LoadJFrame
+# Test JHello
+# SwingSet
+text: .text%JNI_OnLoad;
+text: .text%Java_sun_awt_image_JPEGImageDecoder_initIDs;
+text: .text%Java_sun_awt_image_JPEGImageDecoder_readImage;
+text: .text%jStdError;
+text: .text%jCreaDecompress;
+text: .text%jIMemMgr;
+text: .text%jMemInit;
+text: .text%jGetSmall;
+text: .text%jIMReader;
+text: .text%alloc_small: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jmemmgr.o;
+text: .text%reset_marker_reader: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%jIInCtlr;
+text: .text%GET_ARRAYS: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jpegdecoder.o;
+text: .text%jReadHeader;
+text: .text%jConsumeInput;
+text: .text%reset_input_controller: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdinput.o;
+text: .text%reset_error_mgr: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jerror.o;
+text: .text%sun_jpeg_init_source;
+text: .text%consume_markers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdinput.o;
+text: .text%read_markers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%first_marker: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%sun_jpeg_fill_input_buffer;
+text: .text%RELEASE_ARRAYS: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jpegdecoder.o;
+text: .text%get_soi: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%emit_message: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jerror.o;
+text: .text%next_marker: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%get_interesting_appn: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%examine_app0: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%skip_variable: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%sun_jpeg_skip_input_data;
+text: .text%examine_app14: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%get_dqt: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%jAlcQTable;
+text: .text%get_sof: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%get_dri: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%get_dht: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%jAlcHTable;
+text: .text%get_sos: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%initial_setup: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdinput.o;
+text: .text%jDivRound;
+text: .text%default_decompress_parms: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdapimin.o;
+text: .text%jHasMultScn;
+text: .text%jStrtDecompress;
+text: .text%jIDMaster;
+text: .text%master_selection: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmaster.o;
+text: .text%jCalcDimensions;
+text: .text%use_merged_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmaster.o;
+text: .text%prepare_range_limit_table: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmaster.o;
+text: .text%jIDColor;
+text: .text%build_ycc_rgb_table: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdcolor.o;
+text: .text%jIUpsampler;
+text: .text%jRound;
+text: .text%alloc_sarray: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jmemmgr.o;
+text: .text%alloc_large: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jmemmgr.o;
+text: .text%jGetLarge;
+text: .text%jIDPostC;
+text: .text%jIIDCT;
+text: .text%jIHDecoder;
+text: .text%jIDCoefC;
+text: .text%jIDMainC;
+text: .text%alloc_funny_pointers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmainct.o;
+text: .text%realize_virt_arrays: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jmemmgr.o;
+text: .text%start_input_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdinput.o;
+text: .text%per_scan_setup: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdinput.o;
+text: .text%latch_quant_tables: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdinput.o;
+text: .text%start_pass_huff_decoder: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdhuff.o;
+text: .text%jMkDDerived;
+text: .text%start_input_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdcoefct.o;
+text: .text%start_iMCU_row: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdcoefct.o;
+text: .text%output_pass_setup: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdapistd.o;
+text: .text%prepare_for_output_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmaster.o;
+text: .text%start_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jddctmgr.o;
+text: .text%start_output_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdcoefct.o;
+text: .text%start_pass_dcolor: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdcolor.o;
+text: .text%start_pass_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdsample.o;
+text: .text%start_pass_dpost: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdpostct.o;
+text: .text%start_pass_main: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmainct.o;
+text: .text%make_funny_pointers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmainct.o;
+text: .text%jReadScanlines;
+text: .text%process_data_context_main: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmainct.o;
+text: .text%decompress_onepass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdcoefct.o;
+text: .text%jZeroFar;
+text: .text%decode_mcu: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdhuff.o;
+text: .text%jFilBitBuf;
+text: .text%jHufDecode;
+text: .text%jRDislow;
+text: .text%sep_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdsample.o;
+text: .text%fullsize_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdsample.o;
+text: .text%h2v2_fancy_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdsample.o;
+text: .text%ycc_rgb_convert: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdcolor.o;
+text: .text%set_wraparound_pointers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmainct.o;
+text: .text%process_restart: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdhuff.o;
+text: .text%read_restart_marker: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmarker.o;
+text: .text%finish_input_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdinput.o;
+text: .text%set_bottom_pointers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmainct.o;
+text: .text%jFinDecompress;
+text: .text%finish_output_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmaster.o;
+text: .text%sun_jpeg_term_source;
+text: .text%jAbort;
+text: .text%free_pool: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jmemmgr.o;
+text: .text%jFreeLarge;
+text: .text%jFreeSmall;
+text: .text%jDestDecompress;
+text: .text%jDestroy;
+text: .text%self_destruct: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jmemmgr.o;
+text: .text%jMemTerm;
+text: .text%process_data_simple_main: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj/jdmainct.o;
diff --git a/jdk/make/sun/jpeg/reorder-sparcv9 b/jdk/make/sun/jpeg/reorder-sparcv9
new file mode 100644
index 0000000..e5447a4
--- /dev/null
+++ b/jdk/make/sun/jpeg/reorder-sparcv9
@@ -0,0 +1,119 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+# Test LoadFrame
+# Test LoadJFrame
+# Test JHello
+# SwingSet
+text: .text%JNI_OnLoad;
+text: .text%Java_sun_awt_image_JPEGImageDecoder_initIDs;
+text: .text%Java_sun_awt_image_JPEGImageDecoder_readImage;
+text: .text%jStdError;
+text: .text%jCreaDecompress;
+text: .text%jIMemMgr;
+text: .text%jMemInit;
+text: .text%jGetSmall;
+text: .text%jIMReader;
+text: .text%alloc_small: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jmemmgr.o;
+text: .text%reset_marker_reader: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%jIInCtlr;
+text: .text%GET_ARRAYS: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jpegdecoder.o;
+text: .text%jReadHeader;
+text: .text%jConsumeInput;
+text: .text%reset_input_controller: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdinput.o;
+text: .text%reset_error_mgr: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jerror.o;
+text: .text%sun_jpeg_init_source;
+text: .text%consume_markers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdinput.o;
+text: .text%read_markers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%first_marker: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%sun_jpeg_fill_input_buffer;
+text: .text%RELEASE_ARRAYS: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jpegdecoder.o;
+text: .text%get_soi: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%emit_message: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jerror.o;
+text: .text%next_marker: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%get_interesting_appn: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%examine_app0: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%skip_variable: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%sun_jpeg_skip_input_data;
+text: .text%examine_app14: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%get_dqt: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%jAlcQTable;
+text: .text%get_sof: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%get_dri: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%get_dht: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%jAlcHTable;
+text: .text%get_sos: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%initial_setup: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdinput.o;
+text: .text%jDivRound;
+text: .text%default_decompress_parms: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdapimin.o;
+text: .text%jHasMultScn;
+text: .text%jStrtDecompress;
+text: .text%jIDMaster;
+text: .text%master_selection: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmaster.o;
+text: .text%jCalcDimensions;
+text: .text%use_merged_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmaster.o;
+text: .text%prepare_range_limit_table: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmaster.o;
+text: .text%jIDColor;
+text: .text%build_ycc_rgb_table: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdcolor.o;
+text: .text%jIUpsampler;
+text: .text%jRound;
+text: .text%alloc_sarray: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jmemmgr.o;
+text: .text%alloc_large: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jmemmgr.o;
+text: .text%jGetLarge;
+text: .text%jIDPostC;
+text: .text%jIIDCT;
+text: .text%jIHDecoder;
+text: .text%jIDCoefC;
+text: .text%jIDMainC;
+text: .text%alloc_funny_pointers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmainct.o;
+text: .text%realize_virt_arrays: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jmemmgr.o;
+text: .text%start_input_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdinput.o;
+text: .text%per_scan_setup: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdinput.o;
+text: .text%latch_quant_tables: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdinput.o;
+text: .text%start_pass_huff_decoder: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdhuff.o;
+text: .text%jMkDDerived;
+text: .text%start_input_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdcoefct.o;
+text: .text%start_iMCU_row: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdcoefct.o;
+text: .text%output_pass_setup: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdapistd.o;
+text: .text%prepare_for_output_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmaster.o;
+text: .text%start_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jddctmgr.o;
+text: .text%start_output_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdcoefct.o;
+text: .text%start_pass_dcolor: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdcolor.o;
+text: .text%start_pass_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdsample.o;
+text: .text%start_pass_dpost: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdpostct.o;
+text: .text%start_pass_main: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmainct.o;
+text: .text%make_funny_pointers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmainct.o;
+text: .text%jReadScanlines;
+text: .text%process_data_context_main: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmainct.o;
+text: .text%decompress_onepass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdcoefct.o;
+text: .text%jZeroFar;
+text: .text%decode_mcu: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdhuff.o;
+text: .text%jFilBitBuf;
+text: .text%jHufDecode;
+text: .text%jRDislow;
+text: .text%sep_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdsample.o;
+text: .text%fullsize_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdsample.o;
+text: .text%h2v2_fancy_upsample: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdsample.o;
+text: .text%ycc_rgb_convert: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdcolor.o;
+text: .text%set_wraparound_pointers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmainct.o;
+text: .text%process_restart: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdhuff.o;
+text: .text%read_restart_marker: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmarker.o;
+text: .text%finish_input_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdinput.o;
+text: .text%set_bottom_pointers: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmainct.o;
+text: .text%jFinDecompress;
+text: .text%finish_output_pass: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmaster.o;
+text: .text%sun_jpeg_term_source;
+text: .text%jAbort;
+text: .text%free_pool: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jmemmgr.o;
+text: .text%jFreeLarge;
+text: .text%jFreeSmall;
+text: .text%jDestDecompress;
+text: .text%jDestroy;
+text: .text%self_destruct: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jmemmgr.o;
+text: .text%jMemTerm;
+text: .text%process_data_simple_main: OUTPUTDIR/tmp/sun/sun.awt/jpeg/obj64/jdmainct.o;
diff --git a/jdk/make/sun/launcher/Makefile b/jdk/make/sun/launcher/Makefile
new file mode 100644
index 0000000..d9fba17
--- /dev/null
+++ b/jdk/make/sun/launcher/Makefile
@@ -0,0 +1,46 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.launcher
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Java source files
+#
+AUTO_FILES_JAVA_DIRS = sun/launcher
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+NEW_RESOURCE_BUNDLES_PROPERTIES = $(PKGDIR)/resources/launcher.properties
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/sun/management/Makefile b/jdk/make/sun/management/Makefile
new file mode 100644
index 0000000..6ae5d85
--- /dev/null
+++ b/jdk/make/sun/management/Makefile
@@ -0,0 +1,63 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JDK out of the box management support
+#
+
+BUILDDIR = ../..
+include $(BUILDDIR)/common/Defs.gmk
+
+MGMT_LIBDIR = $(LIBDIR)/management
+MGMT_LIB_SRC = $(SHARE_SRC)/lib/management
+
+all build:: properties aclfile jmxremotefiles
+
+SUBDIRS = snmp jmxremote
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+properties: $(MGMT_LIBDIR)/management.properties
+
+aclfile: $(MGMT_LIBDIR)/snmp.acl.template
+
+jmxremotefiles: $(MGMT_LIBDIR)/jmxremote.password.template $(MGMT_LIBDIR)/jmxremote.access
+
+$(MGMT_LIBDIR)/management.properties: $(MGMT_LIB_SRC)/management.properties
+ $(install-file)
+ $(CHMOD) 644 $@
+
+$(MGMT_LIBDIR)/snmp.acl.template: $(MGMT_LIB_SRC)/snmp.acl.template
+ $(install-file)
+ $(CHMOD) 444 $@
+
+$(MGMT_LIBDIR)/jmxremote.password.template: $(MGMT_LIB_SRC)/jmxremote.password.template
+ $(install-file)
+ $(CHMOD) 444 $@
+
+$(MGMT_LIBDIR)/jmxremote.access: $(MGMT_LIB_SRC)/jmxremote.access
+ $(install-file)
+ $(CHMOD) 644 $@
+
diff --git a/jdk/make/sun/management/jmxremote/Makefile b/jdk/make/sun/management/jmxremote/Makefile
new file mode 100644
index 0000000..0d380c2
--- /dev/null
+++ b/jdk/make/sun/management/jmxremote/Makefile
@@ -0,0 +1,50 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JMX agent (RMI connector bootstrap)
+# for JDK out of the box management.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.management.jmxremote
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = sun/management/jmxremote
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+#
+# Clean up internal-use-only package.
+#
+clean::
+ $(RM) -r $(CLASSDESTDIR)/sun/management/jmxremote
diff --git a/jdk/make/sun/management/snmp/Makefile b/jdk/make/sun/management/snmp/Makefile
new file mode 100644
index 0000000..d1619c3
--- /dev/null
+++ b/jdk/make/sun/management/snmp/Makefile
@@ -0,0 +1,44 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building SNMP MIB instrumentation
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.management.snmp
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile
+#
+AUTO_FILES_JAVA_DIRS = sun/management/snmp
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/sun/misc/Makefile b/jdk/make/sun/misc/Makefile
new file mode 100644
index 0000000..02f6e05
--- /dev/null
+++ b/jdk/make/sun/misc/Makefile
@@ -0,0 +1,46 @@
+#
+# Copyright 1995-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.misc
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = sun/misc
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+RESOURCE_BUNDLES_JAVA= sun/misc/resources/Messages.java
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/sun/motif12/reorder-i586 b/jdk/make/sun/motif12/reorder-i586
new file mode 100644
index 0000000..9cbfe97
--- /dev/null
+++ b/jdk/make/sun/motif12/reorder-i586
@@ -0,0 +1,216 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%JNI_OnLoad;
+text: .text%awt_util_debug_init;
+text: .text%Java_sun_awt_X11GraphicsEnvironment_initDisplay;
+text: .text%awt_init_Display;
+text: .text%makeDefaultConfig: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_GraphicsEnv.o;
+text: .text%awt_allocate_colors;
+text: .text%alloc_col: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11Color.o;
+text: .text%getVirtCubeSize;
+text: .text%uname: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11Color.o;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getFontPath;
+text: .text%getPlatformFontPathChars: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/fontpath.o;
+text: .text%getSolarisFontLocations: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/fontpath.o;
+text: .text%fstat: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/fontpath.o;
+text: .text%AppendFont: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/fontpath.o;
+text: .text%freePlatformFontPathChars: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/fontpath.o;
+text: .text%checkFont: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_Font.o;
+text: .text%Java_sun_awt_X11GraphicsEnvironment_getNativeFonts;
+text: .text%Java_sun_awt_font_NativeFontWrapper_setNativeFontPath;
+text: .text%isDisplayLocal;
+text: .text%Java_sun_awt_X11GraphicsEnvironment_checkShmExt;
+text: .text%TryInitMITShm: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_GraphicsEnv.o;
+text: .text%awt_output_flush;
+text: .text%awtJNI_TimeMillis: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%AddFontsToX11FontPath: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/fontpath.o;
+text: .text%Java_sun_awt_X11GraphicsEnvironment_getNumScreens;
+text: .text%Java_sun_awt_X11GraphicsEnvironment_getDefaultScreenNum;
+text: .text%Java_sun_awt_X11GraphicsDevice_getConfigVisualId;
+text: .text%Java_sun_awt_X11GraphicsDevice_isDBESupported;
+text: .text%Java_sun_awt_X11GraphicsDevice_getDoubleBufferVisuals;
+text: .text%Java_sun_awt_X11GraphicsConfig_initIDs;
+text: .text%Java_sun_awt_X11GraphicsConfig_init;
+text: .text%getAllConfigs: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_GraphicsEnv.o;
+text: .text%Java_sun_awt_motif_MToolkit_init;
+text: .text%getDefaultConfig;
+text: .text%getScreenData;
+text: .text%Java_sun_awt_PlatformFont_initIDs;
+text: .text%Java_sun_awt_motif_MFontPeer_initIDs;
+text: .text%awt_wm_init;
+text: .text%awt_wm_initAtoms: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_getRunningWM;
+text: .text%xerror_detect_wm: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_prepareIsIceWM: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isNetSupporting: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_checkAnchor: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_getProperty32: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isWinSupporting: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isIceWM: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isEnlightenment: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_getECommsWindowIDProperty: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isSawfish: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isNetWMName: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isKDE2: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isCDE: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_color_match;
+text: .text%setup_modifier_map: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%set_mod_mask: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%awt_initialize_DataTransferer;
+text: .text%awt_initialize_Xm_DnD;
+text: .text%cacheDropDone: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_XmDnD.o;
+text: .text%awt_motif_enableSingleDragInitiator;
+text: .text%Java_java_awt_Cursor_initIDs;
+text: .text%Java_sun_awt_motif_X11CustomCursor_cacheInit;
+text: .text%Java_sun_awt_motif_MToolkit_run;
+text: .text%awtJNI_GetCurrentThread;
+text: .text%awt_MToolkit_loop: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%awt_pipe_init: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%awt_set_poll_timeout: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%awt_events_pending: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%processOneEvent: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%set_toolkit_busy;
+text: .text%waitForEvents;
+text: .text%performPoll: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%awt_get_poll_timeout: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%awtJNI_CleanupGlobalRefs;
+text: .text%Java_java_awt_AWTEvent_initIDs;
+text: .text%Java_sun_awt_SunToolkit_wakeupEventQueue;
+text: .text%Java_sun_awt_motif_MToolkit_shutdown;
+text: .text%X11SD_LibDispose;
+text: .text%LibDisposeStub: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+# Test LoadFrame
+text: .text%Java_java_awt_Component_initIDs;
+text: .text%Java_java_awt_Container_initIDs;
+text: .text%Java_java_awt_Window_initIDs;
+text: .text%Java_java_awt_Frame_initIDs;
+text: .text%Java_sun_awt_SunToolkit_getPrivateKey;
+text: .text%Java_java_awt_MenuComponent_initIDs;
+text: .text%Java_sun_awt_X11GraphicsConfig_pGetBounds;
+text: .text%Java_java_awt_Insets_initIDs;
+text: .text%Java_sun_awt_motif_MComponentPeer_initIDs;
+text: .text%Java_sun_awt_motif_MWindowPeer_initIDs;
+text: .text%Java_sun_awt_motif_MWindowAttributes_initIDs;
+text: .text%Java_sun_awt_motif_MWindowPeer_pCreate;
+text: .text%awtJNI_CreateAndSetGlobalRef;
+text: .text%copyGraphicsConfigToPeer;
+text: .text%awt_Frame_guessInsets;
+text: .text%awtJNI_ChangeInsets: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%getMotifFontList;
+text: .text%getMotifFontStruct;
+text: .text%setDeleteCallback: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%awt_canvas_create;
+text: .text%awt_util_show;
+text: .text%addTopLevel;
+text: .text%Java_sun_awt_motif_MWindowPeer_pHide;
+text: .text%Java_sun_awt_motif_MComponentPeer_pInitialize;
+text: .text%awt_addWidget;
+text: .text%Java_sun_awt_motif_MComponentPeer_pSetCursor;
+text: .text%getCursor;
+text: .text%awt_util_setCursor;
+text: .text%Java_sun_awt_motif_MComponentPeer_getParent_1NoClientCode;
+text: .text%Java_sun_awt_motif_MWindowPeer_pReshape;
+text: .text%reshape: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%awtJNI_setMbAndWwHeightAndOffsets: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%awt_wm_configureGravityBuggy;
+text: .text%Java_sun_awt_X11SurfaceData_initIDs;
+text: .text%Java_sun_awt_motif_MToolkit_loadSystemColors;
+text: .text%colorToRGB: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%awt_allocate_systemcolors;
+text: .text%Java_sun_awt_X11GraphicsConfig_makeColorModel;
+text: .text%awtJNI_GetColorModel;
+text: .text%Java_sun_awt_X11SurfaceData_initOps;
+text: .text%Java_sun_awt_motif_MWindowPeer_pSetTitle;
+text: .text%Java_sun_awt_motif_MWindowPeer_setResizable;
+text: .text%Java_java_awt_Font_initIDs;
+text: .text%Java_sun_awt_motif_MComponentPeer_pSetFont;
+text: .text%awt_util_mapChildren;
+text: .text%changeFont: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_Component.o;
+text: .text%Java_sun_awt_motif_MComponentPeer_pSetBackground;
+text: .text%getGraphicsConfigFromComponentPeer;
+text: .text%awtJNI_GetColorForVis;
+text: .text%ColorProc;
+text: .text%Java_sun_awt_motif_MComponentPeer_pSetForeground;
+text: .text%Java_sun_awt_motif_MWindowPeer_pShow;
+text: .text%Java_sun_awt_motif_MWindowPeer_pShowModal;
+text: .text%awt_wm_setExtendedState;
+text: .text%awt_wm_doStateProtocolNet: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_doStateProtocolWin: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_setShellDecor;
+text: .text%awt_wm_setMotifDecor: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_setOLDecor: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_normalizeMotifDecor: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_removeSizeHints;
+text: .text%shellEH: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%awt_wm_isStateChange;
+text: .text%awt_wm_getWMState;
+text: .text%Java_sun_awt_motif_MGlobalCursorManager_cacheInit;
+text: .text%innerCanvasEH: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%reconfigureOuterCanvas: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%outerCanvasResizeCB: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%Java_sun_awt_motif_MGlobalCursorManager_findHeavyweightUnderCursor;
+text: .text%awt_wm_getInsetsFromProp;
+text: .text%syncTopLevelPos;
+text: .text%raiseInputMethodWindow;
+text: .text%awt_wm_getExtendedState: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_canvas_event_handler;
+text: .text%awt_canvas_handleEvent;
+text: .text%HandleExposeEvent: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/canvas.o;
+text: .text%checkForExpose: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/canvas.o;
+text: .text%expandDamageRect: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/canvas.o;
+text: .text%getCurComponent;
+text: .text%Java_java_awt_KeyboardFocusManager_initIDs;
+text: .text%Java_java_awt_event_InputEvent_initIDs;
+text: .text%Java_java_awt_event_KeyEvent_initIDs;
+text: .text%Java_java_awt_AWTKeyStroke_allocateNewInstance;
+text: .text%Java_sun_awt_motif_MComponentPeer_nativeHandleEvent;
+text: .text%Java_java_awt_Event_initIDs;
+# Test LoadJFrame
+text: .text%Java_sun_awt_motif_MToolkit_getScreenWidth;
+text: .text%Java_sun_awt_motif_MToolkit_getScreenHeight;
+text: .text%X11SD_Lock: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+text: .text%X11SD_InitWindow: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+text: .text%GetLockStub: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+text: .text%X11SD_GetRasInfo: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+text: .text%X11SD_Unlock: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+text: .text%X11SD_InitClip: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+text: .text%XRequestSentStub: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+# Test JHello
+text: .text%AWTLoadFont;
+text: .text%AWTFontMaxByte1;
+text: .text%AWTFontMaxCharOrByte2;
+text: .text%AWTFontMaxBounds;
+text: .text%AWTCharAscent;
+text: .text%AWTCharDescent;
+text: .text%AWTCharWidth;
+text: .text%AWTFontMinByte1;
+text: .text%AWTFontMinCharOrByte2;
+text: .text%AWTFontPerChar;
+text: .text%AWTCharRBearing;
+text: .text%AWTCharLBearing;
+text: .text%Java_sun_awt_X11SurfaceData_setInvalid;
+text: .text%Java_sun_awt_X11SurfaceData_nativeDispose;
+text: .text%X11SurfaceData_GetOps;
+# SwingSet
+text: .text%Java_sun_awt_motif_MWindowPeer_setSaveUnder;
+text: .text%Java_sun_awt_motif_MCanvasPeer_create;
+text: .text%awt_util_insertCallback;
+text: .text%Java_sun_awt_motif_MComponentPeer_getComponents_1NoClientCode;
+text: .text%Java_sun_awt_motif_MComponentPeer_pReshape;
+text: .text%awt_util_reshape;
+text: .text%Java_sun_awt_motif_MComponentPeer_pShow;
+text: .text%Java_sun_awt_motif_MDataTransferer_getAtomForTarget;
+text: .text%Java_sun_awt_motif_MComponentPeer_addNativeDropTarget;
+text: .text%register_drop_site;
+text: .text%update_drop_site_hierarchy: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_XmDnD.o;
+text: .text%AWTFontDefaultChar;
+text: .text%AWTFontGenerateImage;
+text: .text%CreatePixmapAndGC;
+text: .text%isAncestor;
+text: .text%xerror_handler;
diff --git a/jdk/make/sun/motif12/reorder-sparc b/jdk/make/sun/motif12/reorder-sparc
new file mode 100644
index 0000000..8ac5471
--- /dev/null
+++ b/jdk/make/sun/motif12/reorder-sparc
@@ -0,0 +1,212 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%JNI_OnLoad;
+text: .text%awt_util_debug_init;
+text: .text%Java_sun_awt_X11GraphicsEnvironment_initDisplay;
+text: .text%awt_init_Display;
+text: .text%makeDefaultConfig: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_GraphicsEnv.o;
+text: .text%awt_allocate_colors;
+text: .text%Java_sun_awt_font_NativeFontWrapper_getFontPath;
+text: .text%getPlatformFontPathChars: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/fontpath.o;
+text: .text%getSolarisFontLocations: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/fontpath.o;
+text: .text%AppendFont: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/fontpath.o;
+text: .text%freePlatformFontPathChars: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/fontpath.o;
+text: .text%checkFont: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_Font.o;
+text: .text%Java_sun_awt_X11GraphicsEnvironment_getNativeFonts;
+text: .text%Java_sun_awt_font_NativeFontWrapper_setNativeFontPath;
+text: .text%isDisplayLocal;
+text: .text%Java_sun_awt_X11GraphicsEnvironment_checkShmExt;
+text: .text%TryInitMITShm: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_GraphicsEnv.o;
+text: .text%awt_output_flush;
+text: .text%awtJNI_TimeMillis: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%AddFontsToX11FontPath: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/fontpath.o;
+text: .text%Java_sun_awt_X11GraphicsEnvironment_getNumScreens;
+text: .text%Java_sun_awt_X11GraphicsEnvironment_getDefaultScreenNum;
+text: .text%Java_sun_awt_X11GraphicsDevice_getConfigVisualId;
+text: .text%Java_sun_awt_X11GraphicsDevice_isDBESupported;
+text: .text%Java_sun_awt_X11GraphicsDevice_getDoubleBufferVisuals;
+text: .text%Java_sun_awt_X11GraphicsConfig_initIDs;
+text: .text%Java_sun_awt_X11GraphicsConfig_init;
+text: .text%getAllConfigs: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_GraphicsEnv.o;
+text: .text%Java_sun_awt_motif_MToolkit_init;
+text: .text%getDefaultConfig;
+text: .text%getScreenData;
+text: .text%Java_sun_awt_PlatformFont_initIDs;
+text: .text%Java_sun_awt_motif_MFontPeer_initIDs;
+text: .text%awt_wm_init;
+text: .text%awt_wm_initAtoms: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_getRunningWM;
+text: .text%xerror_detect_wm: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_prepareIsIceWM: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isNetSupporting: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_checkAnchor: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_getProperty32: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isWinSupporting: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isIceWM: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isEnlightenment: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_getECommsWindowIDProperty: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isSawfish: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isNetWMName: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isKDE2: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_isCDE: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_color_matchTC;
+text: .text%setup_modifier_map: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%set_mod_mask: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%awt_initialize_DataTransferer;
+text: .text%awt_initialize_Xm_DnD;
+text: .text%cacheDropDone: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_XmDnD.o;
+text: .text%awt_motif_enableSingleDragInitiator;
+text: .text%Java_java_awt_Cursor_initIDs;
+text: .text%Java_sun_awt_motif_X11CustomCursor_cacheInit;
+text: .text%Java_sun_awt_motif_MToolkit_run;
+text: .text%awtJNI_GetCurrentThread;
+text: .text%awt_MToolkit_loop: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%awt_pipe_init: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%awt_set_poll_timeout: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%awt_events_pending: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%processOneEvent: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%set_toolkit_busy;
+text: .text%waitForEvents;
+text: .text%performPoll: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%awt_get_poll_timeout: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%awtJNI_CleanupGlobalRefs;
+text: .text%Java_java_awt_AWTEvent_initIDs;
+text: .text%Java_sun_awt_SunToolkit_wakeupEventQueue;
+text: .text%Java_sun_awt_motif_MToolkit_shutdown;
+text: .text%X11SD_LibDispose;
+text: .text%LibDisposeStub: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+# Test LoadFrame
+text: .text%Java_java_awt_Component_initIDs;
+text: .text%Java_java_awt_Container_initIDs;
+text: .text%Java_java_awt_Window_initIDs;
+text: .text%Java_java_awt_Frame_initIDs;
+text: .text%Java_sun_awt_SunToolkit_getPrivateKey;
+text: .text%Java_java_awt_MenuComponent_initIDs;
+text: .text%Java_sun_awt_X11GraphicsConfig_pGetBounds;
+text: .text%Java_java_awt_Insets_initIDs;
+text: .text%Java_sun_awt_motif_MComponentPeer_initIDs;
+text: .text%Java_sun_awt_motif_MWindowPeer_initIDs;
+text: .text%Java_sun_awt_motif_MWindowAttributes_initIDs;
+text: .text%Java_sun_awt_motif_MWindowPeer_pCreate;
+text: .text%awtJNI_CreateAndSetGlobalRef;
+text: .text%copyGraphicsConfigToPeer;
+text: .text%awt_Frame_guessInsets;
+text: .text%awtJNI_ChangeInsets: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%getMotifFontList;
+text: .text%getMotifFontStruct;
+text: .text%setDeleteCallback: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%ColorProc;
+text: .text%awt_canvas_create;
+text: .text%awt_util_show;
+text: .text%addTopLevel;
+text: .text%Java_sun_awt_motif_MWindowPeer_pHide;
+text: .text%Java_sun_awt_motif_MComponentPeer_pInitialize;
+text: .text%awt_addWidget;
+text: .text%Java_sun_awt_motif_MComponentPeer_pSetCursor;
+text: .text%getCursor;
+text: .text%awt_util_setCursor;
+text: .text%Java_sun_awt_motif_MComponentPeer_getParent_1NoClientCode;
+text: .text%Java_sun_awt_motif_MWindowPeer_pReshape;
+text: .text%reshape: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%awtJNI_setMbAndWwHeightAndOffsets: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%awt_wm_configureGravityBuggy;
+text: .text%Java_sun_awt_X11SurfaceData_initIDs;
+text: .text%Java_sun_awt_motif_MToolkit_loadSystemColors;
+text: .text%colorToRGB: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_MToolkit.o;
+text: .text%Java_sun_awt_X11GraphicsConfig_makeColorModel;
+text: .text%awtJNI_GetColorModel;
+text: .text%Java_sun_awt_X11SurfaceData_initOps;
+text: .text%Java_sun_awt_motif_MWindowPeer_pSetTitle;
+text: .text%Java_sun_awt_motif_MWindowPeer_setResizable;
+text: .text%Java_java_awt_Font_initIDs;
+text: .text%Java_sun_awt_motif_MComponentPeer_pSetFont;
+text: .text%awt_util_mapChildren;
+text: .text%changeFont: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_Component.o;
+text: .text%Java_sun_awt_motif_MComponentPeer_pSetBackground;
+text: .text%getGraphicsConfigFromComponentPeer;
+text: .text%awtJNI_GetColorForVis;
+text: .text%Java_sun_awt_motif_MComponentPeer_pSetForeground;
+text: .text%Java_sun_awt_motif_MWindowPeer_pShow;
+text: .text%Java_sun_awt_motif_MWindowPeer_pShowModal;
+text: .text%awt_wm_setExtendedState;
+text: .text%awt_wm_doStateProtocolNet: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_doStateProtocolWin: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_setShellDecor;
+text: .text%awt_wm_setMotifDecor: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_setOLDecor: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_normalizeMotifDecor: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%awt_wm_removeSizeHints;
+text: .text%Java_sun_awt_motif_MGlobalCursorManager_cacheInit;
+text: .text%Java_sun_awt_motif_MGlobalCursorManager_findHeavyweightUnderCursor;
+text: .text%getCurComponent;
+text: .text%shellEH: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%awt_wm_isStateChange;
+text: .text%awt_wm_getWMState;
+text: .text%innerCanvasEH: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%reconfigureOuterCanvas: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%outerCanvasResizeCB: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_TopLevel.o;
+text: .text%awt_wm_getInsetsFromProp;
+text: .text%syncTopLevelPos;
+text: .text%raiseInputMethodWindow;
+text: .text%awt_canvas_event_handler;
+text: .text%awt_canvas_handleEvent;
+text: .text%HandleExposeEvent: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/canvas.o;
+text: .text%checkForExpose: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/canvas.o;
+text: .text%awt_wm_getExtendedState: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_wm.o;
+text: .text%expandDamageRect: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/canvas.o;
+text: .text%Java_java_awt_KeyboardFocusManager_initIDs;
+text: .text%Java_java_awt_event_InputEvent_initIDs;
+text: .text%Java_java_awt_event_KeyEvent_initIDs;
+text: .text%Java_java_awt_AWTKeyStroke_allocateNewInstance;
+text: .text%Java_sun_awt_motif_MComponentPeer_nativeHandleEvent;
+text: .text%Java_java_awt_Event_initIDs;
+# Test LoadJFrame
+text: .text%awtJNI_ThreadYield;
+text: .text%Java_sun_awt_motif_MToolkit_getScreenWidth;
+text: .text%Java_sun_awt_motif_MToolkit_getScreenHeight;
+text: .text%X11SD_Lock: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+text: .text%X11SD_InitWindow: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+text: .text%GetLockStub: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+text: .text%X11SD_GetRasInfo: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+text: .text%X11SD_Unlock: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+text: .text%X11SD_InitClip: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+text: .text%XRequestSentStub: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/X11SurfaceData.o;
+# Test JHello
+text: .text%AWTLoadFont;
+text: .text%AWTFontMaxByte1;
+text: .text%AWTFontMaxCharOrByte2;
+text: .text%AWTFontMaxBounds;
+text: .text%AWTCharAscent;
+text: .text%AWTCharDescent;
+text: .text%AWTCharWidth;
+text: .text%AWTFontMinByte1;
+text: .text%AWTFontMinCharOrByte2;
+text: .text%AWTFontPerChar;
+text: .text%AWTCharRBearing;
+text: .text%AWTCharLBearing;
+text: .text%Java_sun_awt_X11SurfaceData_setInvalid;
+# SwingSet
+text: .text%Java_sun_awt_motif_MWindowPeer_setSaveUnder;
+text: .text%Java_sun_awt_X11SurfaceData_nativeDispose;
+text: .text%X11SurfaceData_GetOps;
+text: .text%Java_sun_awt_motif_MCanvasPeer_create;
+text: .text%awt_util_insertCallback;
+text: .text%Java_sun_awt_motif_MComponentPeer_getComponents_1NoClientCode;
+text: .text%Java_sun_awt_motif_MComponentPeer_pReshape;
+text: .text%awt_util_reshape;
+text: .text%Java_sun_awt_motif_MComponentPeer_pShow;
+text: .text%Java_sun_awt_motif_MDataTransferer_getAtomForTarget;
+text: .text%Java_sun_awt_motif_MComponentPeer_addNativeDropTarget;
+text: .text%register_drop_site;
+text: .text%update_drop_site_hierarchy: OUTPUTDIR/tmp/sun/sun.awt/motif12/obj/awt_XmDnD.o;
+text: .text%AWTFontDefaultChar;
+text: .text%isAncestor;
+text: .text%xerror_handler;
+text: .text%AWTFontGenerateImage;
+text: .text%CreatePixmapAndGC;
diff --git a/jdk/make/sun/motif12/reorder-sparcv9 b/jdk/make/sun/motif12/reorder-sparcv9
new file mode 100644
index 0000000..8542b6c
--- /dev/null
+++ b/jdk/make/sun/motif12/reorder-sparcv9
@@ -0,0 +1,233 @@
+data = R0x2000;
+text = LOAD ?RXO;
+# Test Null
+# Test Exit
+# Test Hello
+# Test Sleep
+# Test IntToString
+# Test LoadToolkit
+text: .text%JNI_OnLoad;
+text: .text%awt_util_debug_init;
+text: .text%Java_java_awt_Toolkit_initIDs;
+text: .text%Java_sun_awt_X11GraphicsEnvironment_initDisplay;
+text: .text%awt_init_Display;
+text: .text%makeDefaultConfig: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_GraphicsEnv.o;
+text: .text%awt_allocate_colors;
+text: .text%make_uns_ordered_dither_array;
+text: .text%checkFont: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_Font.o;
+text: .text%Java_sun_awt_X11GraphicsEnvironment_getNativeFonts;
+text: .text%Java_sun_awt_X11GraphicsEnvironment_getNumScreens;
+text: .text%Java_sun_awt_X11GraphicsEnvironment_getDefaultScreenNum;
+text: .text%Java_sun_awt_X11GraphicsDevice_getConfigVisualId;
+text: .text%Java_sun_awt_X11GraphicsConfig_initIDs;
+text: .text%Java_sun_awt_X11GraphicsConfig_init;
+text: .text%getAllConfigs: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_GraphicsEnv.o;
+text: .text%awt_output_flush;
+text: .text%awtJNI_TimeMillis: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%Java_sun_awt_motif_MToolkit_init;
+text: .text%getDefaultConfig;
+text: .text%getScreenData;
+text: .text%Java_sun_awt_PlatformFont_initIDs;
+text: .text%Java_sun_awt_motif_MFontPeer_initIDs;
+text: .text%awt_color_matchTC;
+text: .text%setup_modifier_map: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%set_mod_mask: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%awt_initialize_Xm_DnD;
+text: .text%Java_java_awt_Cursor_initIDs;
+text: .text%Java_sun_awt_motif_X11CustomCursor_cacheInit;
+text: .text%Java_java_awt_Dimension_initIDs;
+text: .text%Java_sun_awt_motif_MToolkit_run;
+text: .text%awtJNI_GetCurrentThread;
+text: .text%awt_MToolkit_loop: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%awt_pipe_init: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%awt_set_poll_timeout: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%awt_events_pending: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%processOneEvent: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%waitForEvents: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%performPoll: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%awt_get_poll_timeout: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%awtJNI_CleanupGlobalRefs;
+# Test LoadFrame
+text: .text%Java_java_awt_Component_initIDs;
+text: .text%Java_java_awt_Container_initIDs;
+text: .text%Java_java_awt_Window_initIDs;
+text: .text%Java_java_awt_Frame_initIDs;
+text: .text%Java_sun_awt_SunToolkit_getPrivateKey;
+text: .text%Java_java_awt_MenuComponent_initIDs;
+text: .text%Java_sun_awt_X11GraphicsConfig_pGetBounds;
+text: .text%Java_java_awt_Rectangle_initIDs;
+text: .text%Java_sun_awt_motif_MComponentPeer_initIDs;
+text: .text%Java_sun_awt_motif_MWindowPeer_initIDs;
+text: .text%Java_java_awt_Insets_initIDs;
+text: .text%Java_sun_awt_motif_MWindowAttributes_initIDs;
+text: .text%Java_sun_awt_motif_MWindowPeer_create;
+text: .text%awtJNI_CreateAndSetGlobalRef;
+text: .text%copyGraphicsConfigToPeer;
+text: .text%awt_Frame_guessInsets;
+text: .text%awt_util_runningWindowManager;
+text: .text%awt_winmgrerr: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_util.o;
+text: .text%awtJNI_ChangeInsets: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_TopLevel.o;
+text: .text%getMotifFontList;
+text: .text%getMotifFontStruct;
+text: .text%setDeleteCallback: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_TopLevel.o;
+text: .text%ColorProc;
+text: .text%awt_canvas_create;
+text: .text%awt_util_show;
+text: .text%addTopLevel;
+text: .text%Java_sun_awt_motif_MWindowPeer_pHide;
+text: .text%Java_sun_awt_motif_MComponentPeer_pInitialize;
+text: .text%awt_addWidget;
+text: .text%Java_sun_awt_motif_MComponentPeer_setCursor;
+text: .text%getCursor;
+text: .text%awt_util_setCursor;
+text: .text%Java_sun_awt_motif_MComponentPeer_getParent_1NoClientCode;
+text: .text%Java_sun_awt_motif_MWindowPeer_pReshape;
+text: .text%reshape: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_TopLevel.o;
+text: .text%awtJNI_setMbAndWwHeightAndOffsets: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_TopLevel.o;
+text: .text%awt_util_wmPositionsShellXY;
+text: .text%Java_sun_awt_motif_MWindowPeer_pSetTitle;
+text: .text%Java_sun_awt_motif_MWindowPeer_setResizable;
+text: .text%Java_java_awt_Font_initIDs;
+text: .text%Java_sun_awt_motif_MComponentPeer_pSetFont;
+text: .text%awt_util_mapChildren;
+text: .text%changeFont: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_Component.o;
+text: .text%Java_java_awt_Color_initIDs;
+text: .text%Java_sun_awt_motif_MToolkit_loadSystemColors;
+text: .text%colorToRGB: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%Java_sun_awt_motif_MComponentPeer_pSetBackground;
+text: .text%getGraphicsConfigFromComponentPeer;
+text: .text%awtJNI_GetColorForVis;
+text: .text%Java_sun_awt_motif_MComponentPeer_pSetForeground;
+text: .text%Java_sun_awt_motif_MWindowPeer_pShow;
+text: .text%Java_sun_awt_motif_MWindowPeer_pShowModal;
+text: .text%setStateHints: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_TopLevel.o;
+text: .text%awt_util_setMinMaxSizeProps;
+text: .text%innerCanvasEH: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_TopLevel.o;
+text: .text%reconfigureOuterCanvas: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_TopLevel.o;
+text: .text%Java_java_awt_AWTEvent_initIDs;
+text: .text%outerCanvasResizeCB: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_TopLevel.o;
+text: .text%Java_sun_awt_motif_MGlobalCursorManager_cacheInit;
+text: .text%shellEH: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_TopLevel.o;
+text: .text%Java_sun_awt_motif_MGlobalCursorManager_findHeavyweightUnderCursor;
+text: .text%getCurComponent;
+text: .text%get_awt_TopLevelInsetsProp;
+text: .text%syncTopLevelPos;
+text: .text%Java_sun_awt_motif_MComponentPeer_nativeHandleEvent;
+text: .text%raiseInputMethodWindow;
+text: .text%getWindowState: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_TopLevel.o;
+text: .text%awt_canvas_event_handler;
+text: .text%awt_canvas_handleEvent;
+text: .text%HandleExposeEvent: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/canvas.o;
+text: .text%checkForExpose: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/canvas.o;
+text: .text%Java_java_awt_Event_initIDs;
+text: .text%Java_java_awt_image_ColorModel_initIDs;
+text: .text%Java_sun_awt_motif_X11Graphics_cacheInit;
+text: .text%InitMITShm: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_Graphics.o;
+text: .text%Java_sun_java2d_loops_RasterOutputManager_getPlatformFontVar;
+text: .text%Java_sun_awt_motif_X11Graphics_createFromComponent;
+text: .text%Java_sun_awt_motif_X11Graphics_pSetForeground;
+text: .text%awt_init_gc;
+text: .text%Java_sun_awt_motif_X11Graphics_pSetFont;
+text: .text%awtJNI_GetFontData;
+text: .text%awtJNI_IsMultiFont;
+text: .text%Java_sun_awt_FontDescriptor_initIDs;
+text: .text%loadFont;
+text: .text%Java_sun_awt_motif_X11Graphics_setOrigin;
+text: .text%Java_sun_awt_motif_X11Graphics_setLineAttrs;
+text: .text%Java_sun_awt_motif_X11Graphics_changeClip;
+text: .text%Java_sun_awt_motif_X11Graphics_devClearRect;
+text: .text%Java_sun_awt_motif_X11Graphics_disposeImpl;
+# Test LoadJFrame
+text: .text%Java_java_awt_event_InputEvent_initIDs;
+text: .text%Java_java_awt_event_KeyEvent_initIDs;
+text: .text%expandDamageRect: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/canvas.o;
+text: .text%awtJNI_ThreadYield;
+text: .text%Java_sun_awt_motif_X11Graphics_createFromGraphics;
+text: .text%Java_sun_awt_motif_MToolkit_getScreenWidth;
+text: .text%Java_sun_awt_motif_MToolkit_getScreenHeight;
+text: .text%Java_sun_awt_X11GraphicsConfig_makeColorModel;
+text: .text%awtJNI_GetColorModel;
+text: .text%Java_java_awt_image_BufferedImage_initIDs;
+text: .text%Java_java_awt_image_Raster_initIDs;
+text: .text%Java_java_awt_image_SampleModel_initIDs;
+text: .text%Java_java_awt_image_SinglePixelPackedSampleModel_initIDs;
+text: .text%Java_sun_awt_image_IntegerComponentRaster_initIDs;
+text: .text%Java_sun_java2d_loops_ImageData_initIDs;
+text: .text%Java_sun_java2d_loops_IntDiscreteRenderer_devSetRect;
+text: .text%Java_sun_awt_motif_X11Graphics_X11LockViewResources;
+text: .text%X11DeferredLockViewResources: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_Graphics.o;
+text: .text%getLockMethod: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_Graphics.o;
+text: .text%DGA_DeferredLockViewResources;
+text: .text%setLockMethod: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_Graphics.o;
+text: .text%getPrimitiveType: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_Graphics.o;
+text: .text%Java_sun_awt_motif_X11Graphics_X11UnLockViewResources;
+text: .text%DGA_UnlockViewResources;
+text: .text%Java_sun_java2d_loops_DefaultComponent_IntIsomorphicCopy;
+text: .text%minImageWidths;
+text: .text%minImageRows;
+text: .text%getIntImageLockInfo;
+text: .text%lockIntImageData;
+text: .text%unlockIntImageData;
+# Test JHello
+text: .text%Java_java_awt_FontMetrics_initIDs;
+# SwingSet
+text: .text%Java_sun_awt_image_Image_initIDs;
+text: .text%Java_sun_awt_image_ImageRepresentation_initIDs;
+text: .text%Java_java_awt_image_IndexColorModel_initIDs;
+text: .text%Java_sun_awt_motif_MWindowPeer_setSaveUnder;
+text: .text%Java_java_awt_AWTEvent_freeNativeData;
+text: .text%Java_sun_java2d_loops_DefaultComponent_IntRgbToXbgr;
+text: .text%Java_sun_awt_motif_MCanvasPeer_create;
+text: .text%awt_util_insertCallback;
+text: .text%Java_sun_awt_motif_MComponentPeer_getComponents_1NoClientCode;
+text: .text%Java_sun_awt_motif_MComponentPeer_pReshape;
+text: .text%awt_util_reshape;
+text: .text%Java_sun_awt_motif_MComponentPeer_pShow;
+text: .text%Java_sun_java2d_loops_IntDiscreteRenderer_devDrawLine;
+text: .text%doDrawLine: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/IntDiscreteRenderer.o;
+text: .text%adjustLine: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/IntDiscreteRenderer.o;
+text: .text%Java_sun_awt_image_GifImageDecoder_initIDs;
+text: .text%Java_java_awt_image_ComponentSampleModel_initIDs;
+text: .text%Java_sun_awt_image_ByteComponentRaster_initIDs;
+text: .text%Java_sun_awt_image_GifImageDecoder_parseImage;
+text: .text%Java_sun_awt_image_ImageRepresentation_setBytePixels;
+text: .text%Java_sun_java2d_loops_IntDiscreteRenderer_devDrawRect;
+text: .text%outcode: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/IntDiscreteRenderer.o;
+text: .text%Java_sun_java2d_loops_ImageData_isAllOpaqueGrayICM;
+text: .text%Java_sun_java2d_loops_GIFAcceleratorLoops_LUTcopyTo32BitXBgr;
+text: .text%getByteIndexedImageLockInfo;
+text: .text%lockByteIndexedImageData;
+text: .text%unlockByteIndexedImageData;
+text: .text%Java_sun_java2d_loops_GIFAcceleratorLoops_LUTxparTo32BitXBgr;
+text: .text%shouldDispatchToWidget: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%awtMenuIsActive;
+text: .text%awt_util_focusIsOnMenu;
+text: .text%awt_isModal;
+text: .text%findWidgetInfo: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%awt_copyXEvent;
+text: .text%awt_post_java_mouse_event;
+text: .text%Java_java_awt_event_MouseEvent_initIDs;
+text: .text%sysTimeMillis;
+text: .text%updateCursor;
+text: .text%awt_setActivatedShell;
+text: .text%handleFocusEvent;
+text: .text%awt_post_java_focus_event;
+text: .text%getModifiers;
+text: .text%Java_java_awt_AWTEvent_copyDataFieldInto;
+text: .text%Java_sun_awt_motif_X11InputMethod_initIDs;
+text: .text%Java_sun_awt_motif_X11InputMethod_openXIM;
+text: .text%awt_put_back_event;
+text: .text%awt_get_next_put_back_event: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%null_event_handler: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_MToolkit.o;
+text: .text%Java_sun_awt_motif_MGlobalCursorManager_getCursorPos;
+text: .text%Java_sun_awt_motif_MGlobalCursorManager_findComponentAt;
+text: .text%Java_sun_awt_motif_MWindowPeer_hasTextComponents;
+text: .text%Java_sun_awt_motif_X11InputMethod_createXICNative;
+text: .text%findClass: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_InputMethod.o;
+text: .text%createXIC: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_InputMethod.o;
+text: .text%Java_sun_awt_motif_X11InputMethod_setXICFocus;
+text: .text%setXICWindowFocus: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_InputMethod.o;
+text: .text%setXICFocus: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_InputMethod.o;
+text: .text%getAncestorShell;
+text: .text%Java_sun_awt_motif_X11InputMethod_turnoffStatusWindow;
+text: .text%Frame_quit: ../../../build/solaris-sparcv9/tmp/sun/sun.awt/motif12/obj64/awt_TopLevel.o;
diff --git a/jdk/make/sun/native2ascii/Makefile b/jdk/make/sun/native2ascii/Makefile
new file mode 100644
index 0000000..bab0878
--- /dev/null
+++ b/jdk/make/sun/native2ascii/Makefile
@@ -0,0 +1,53 @@
+#
+# Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building native2ascii
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.tools.native2ascii
+PRODUCT = sun
+OTHER_JAVACFLAGS += -Xlint:serial -Werror
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+FILES_java = \
+ sun/tools/native2ascii/Main.java \
+ sun/tools/native2ascii/A2NFilter.java \
+ sun/tools/native2ascii/N2AFilter.java
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jdk
+RESOURCE_BUNDLES_JAVA = sun/tools/native2ascii/resources/MsgNative2ascii.java
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/sun/net/FILES_java.gmk b/jdk/make/sun/net/FILES_java.gmk
new file mode 100644
index 0000000..55b6477
--- /dev/null
+++ b/jdk/make/sun/net/FILES_java.gmk
@@ -0,0 +1,125 @@
+#
+# Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_java = \
+ sun/net/InetAddressCachePolicy.java \
+ sun/net/URLCanonicalizer.java \
+ sun/net/NetworkClient.java \
+ sun/net/NetworkServer.java \
+ sun/net/ProgressMonitor.java \
+ sun/net/ProgressSource.java \
+ sun/net/ProgressEvent.java \
+ sun/net/ProgressListener.java \
+ sun/net/ProgressMeteringPolicy.java \
+ sun/net/TelnetInputStream.java \
+ sun/net/TelnetOutputStream.java \
+ sun/net/TelnetProtocolException.java \
+ sun/net/TransferProtocolClient.java \
+ sun/net/ConnectionResetException.java \
+ sun/net/NetProperties.java \
+ sun/net/util/IPAddressUtil.java \
+ sun/net/dns/ResolverConfiguration.java \
+ sun/net/dns/ResolverConfigurationImpl.java \
+ sun/net/ftp/FtpClient.java \
+ sun/net/ftp/FtpLoginException.java \
+ sun/net/ftp/FtpProtocolException.java \
+ sun/net/spi/DefaultProxySelector.java \
+ sun/net/spi/nameservice/NameServiceDescriptor.java \
+ sun/net/spi/nameservice/NameService.java \
+ sun/net/smtp/SmtpClient.java \
+ sun/net/smtp/SmtpProtocolException.java \
+ sun/net/www/content/text/Generic.java \
+ sun/net/www/content/text/plain.java \
+ sun/net/www/content/text/PlainTextInputStream.java \
+ sun/net/www/MessageHeader.java \
+ sun/net/www/HeaderParser.java \
+ sun/net/www/MeteredStream.java \
+ sun/net/www/MimeEntry.java \
+ sun/net/www/MimeLauncher.java \
+ sun/net/www/ApplicationLaunchException.java \
+ sun/net/www/MimeTable.java \
+ sun/net/www/URLConnection.java \
+ sun/net/www/ParseUtil.java \
+ sun/net/www/protocol/file/Handler.java \
+ sun/net/www/protocol/file/FileURLConnection.java \
+ sun/net/www/http/HttpClient.java \
+ sun/net/www/http/PosterOutputStream.java \
+ sun/net/www/http/ChunkedInputStream.java \
+ sun/net/www/http/ChunkedOutputStream.java \
+ sun/net/www/http/KeepAliveCache.java \
+ sun/net/www/http/KeepAliveStream.java \
+ sun/net/www/http/KeepAliveStreamCleaner.java \
+ sun/net/www/http/Hurryable.java \
+ sun/net/www/protocol/http/Handler.java \
+ sun/net/www/protocol/http/HttpURLConnection.java \
+ sun/net/www/protocol/http/HttpAuthenticator.java \
+ sun/net/www/protocol/http/AuthenticationHeader.java \
+ sun/net/www/protocol/http/AuthenticationInfo.java \
+ sun/net/www/protocol/http/AuthCache.java \
+ sun/net/www/protocol/http/AuthCacheImpl.java \
+ sun/net/www/protocol/http/AuthCacheValue.java \
+ sun/net/www/protocol/http/BasicAuthentication.java \
+ sun/net/www/protocol/http/DigestAuthentication.java \
+ sun/net/www/protocol/http/NTLMAuthentication.java \
+ sun/net/www/protocol/http/NegotiateAuthentication.java \
+ sun/net/www/protocol/http/NegotiatorImpl.java \
+ sun/net/www/protocol/http/NegotiateCallbackHandler.java \
+ sun/net/www/protocol/https/AbstractDelegateHttpsURLConnection.java \
+ sun/net/www/protocol/https/HttpsClient.java \
+ sun/net/www/protocol/https/DefaultHostnameVerifier.java \
+ sun/net/www/protocol/https/HttpsURLConnectionImpl.java \
+ sun/net/www/protocol/https/DelegateHttpsURLConnection.java \
+ sun/net/www/protocol/https/Handler.java \
+ sun/net/www/protocol/jar/Handler.java \
+ sun/net/www/protocol/jar/URLJarFile.java \
+ sun/net/www/protocol/jar/JarFileFactory.java \
+ sun/net/www/protocol/jar/JarURLConnection.java \
+ sun/net/www/protocol/netdoc/Handler.java \
+ sun/net/www/content/image/gif.java \
+ sun/net/www/content/image/jpeg.java \
+ sun/net/www/content/image/x_xbitmap.java \
+ sun/net/www/content/image/x_xpixmap.java \
+ sun/net/www/content/image/png.java \
+ sun/net/www/content/audio/aiff.java \
+ sun/net/www/content/audio/basic.java \
+ sun/net/www/content/audio/wav.java \
+ sun/net/www/content/audio/x_aiff.java \
+ sun/net/www/content/audio/x_wav.java \
+ sun/net/www/protocol/ftp/Handler.java \
+ sun/net/www/protocol/ftp/FtpURLConnection.java \
+ sun/net/www/protocol/gopher/GopherClient.java \
+ sun/net/www/protocol/gopher/Handler.java \
+ sun/net/www/protocol/mailto/Handler.java \
+ sun/net/www/protocol/mailto/MailToURLConnection.java \
+ sun/net/idn/Punycode.java \
+ sun/net/idn/UCharacterEnums.java \
+ sun/net/idn/UCharacterDirection.java \
+ sun/net/idn/StringPrepDataReader.java \
+ sun/net/idn/StringPrep.java \
+ sun/net/www/protocol/http/InMemoryCookieStore.java
+
+ifeq ($(PLATFORM), windows)
+ FILES_java += sun/net/www/protocol/http/NTLMAuthSequence.java
+endif
diff --git a/jdk/make/sun/net/Makefile b/jdk/make/sun/net/Makefile
new file mode 100644
index 0000000..d5d3dd1
--- /dev/null
+++ b/jdk/make/sun/net/Makefile
@@ -0,0 +1,34 @@
+#
+# Copyright 1995-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.net
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = others spi
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/sun/net/others/Makefile b/jdk/make/sun/net/others/Makefile
new file mode 100644
index 0000000..2adf604
--- /dev/null
+++ b/jdk/make/sun/net/others/Makefile
@@ -0,0 +1,75 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.net
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+include $(BUILDDIR)/sun/net/FILES_java.gmk
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+build: properties nameprep-profile
+
+clean clobber:: properties.clean nameprep-profile.clean
+
+#
+# Install/nuke properties.
+#
+PROPS = $(PLATFORM_SRC)/lib/content-types.properties
+
+$(LIBDIR)/content-types.properties: $(PROPS)
+ $(install-file)
+
+properties: $(LIBDIR)/content-types.properties
+
+properties.clean:
+ $(RM) -r $(LIBDIR)/content-types.properties
+
+#
+# Install/nuke nameprep profile.
+#
+NAMEPREP_PROFILE_SRC = $(TOPDIR)/src/share/classes/sun/net/idn/uidna.spp
+NAMEPREP_PROFILE_BUILD = $(CLASSBINDIR)/sun/net/idn/uidna.spp
+
+nameprep-profile: $(NAMEPREP_PROFILE_BUILD)
+
+nameprep-profile.clean:
+ $(RM) -r $(NAMEPREP_PROFILE_BUILD)
+
+$(NAMEPREP_PROFILE_BUILD): $(NAMEPREP_PROFILE_SRC)
+ $(install-file)
+
+$(NAMEPREP_PROFILE_SRC):
+
+.PHONY: properties properties.clean nameprep-profile nameprep-profile.clean
+
diff --git a/jdk/make/sun/net/spi/Makefile b/jdk/make/sun/net/spi/Makefile
new file mode 100644
index 0000000..20583bc
--- /dev/null
+++ b/jdk/make/sun/net/spi/Makefile
@@ -0,0 +1,36 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building com/sun
+#
+
+BUILDDIR = ../../..
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = nameservice
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/sun/net/spi/nameservice/Makefile b/jdk/make/sun/net/spi/nameservice/Makefile
new file mode 100644
index 0000000..b6593c7
--- /dev/null
+++ b/jdk/make/sun/net/spi/nameservice/Makefile
@@ -0,0 +1,36 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building com/sun
+#
+
+BUILDDIR = ../../../..
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = dns
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/sun/net/spi/nameservice/dns/Makefile b/jdk/make/sun/net/spi/nameservice/dns/Makefile
new file mode 100644
index 0000000..0a7683f
--- /dev/null
+++ b/jdk/make/sun/net/spi/nameservice/dns/Makefile
@@ -0,0 +1,77 @@
+#
+# Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building JNDI service provider toolkit
+#
+
+BUILDDIR = ../../../../..
+PACKAGE = sun.net.spi.nameservice.dns
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+JARFILE = $(EXTDIR)/dnsns.jar
+
+#
+# Files to compile
+#
+FILES_java = \
+ sun/net/spi/nameservice/dns/DNSNameServiceDescriptor.java \
+ sun/net/spi/nameservice/dns/DNSNameService.java
+
+#
+# Rules
+#
+CLASSDESTDIR = $(TEMPDIR)/classes
+
+FILES_class = $(FILES_java:%.java=$(CLASSDESTDIR)/%.class)
+
+
+all : build $(JARFILE)
+
+#
+# META-INF/services
+#
+SERVICE_DESCRIPTION = sun.net.spi.nameservice.NameServiceDescriptor
+
+$(CLASSDESTDIR)/META-INF/services/$(SERVICE_DESCRIPTION): \
+ $(SHARE_SRC)/classes/$(PKGDIR)/META-INF/services/$(SERVICE_DESCRIPTION)
+ $(install-file)
+
+#
+# JAR file
+#
+$(JARFILE): $(CLASSDESTDIR)/META-INF/services/$(SERVICE_DESCRIPTION) \
+ $(FILES_class)
+ $(BOOT_JAR_CMD) -cf $(JARFILE) \
+ -C $(CLASSDESTDIR) sun \
+ -C $(CLASSDESTDIR) META-INF \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+include $(BUILDDIR)/common/Classes.gmk
+
+clean clobber::
+ $(RM) -r $(CLASSDESTDIR) \
+ $(EXTDIR)/$(JARFILE)
diff --git a/jdk/make/sun/nio/FILES_java.gmk b/jdk/make/sun/nio/FILES_java.gmk
new file mode 100644
index 0000000..21a95a8
--- /dev/null
+++ b/jdk/make/sun/nio/FILES_java.gmk
@@ -0,0 +1,305 @@
+#
+# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Character converters for lib/charsets.jar
+#
+# Core character converters are built from make/java/java.
+#
+
+FILES_java = \
+ sun/io/ByteToCharDoubleByte.java \
+ sun/io/ByteToCharDBCS_ASCII.java \
+ sun/io/ByteToCharDBCS_EBCDIC.java \
+ sun/io/ByteToCharEUC.java \
+ sun/io/CharToByteDoubleByte.java \
+ sun/io/CharToByteDBCS_ASCII.java \
+ sun/io/CharToByteDBCS_EBCDIC.java \
+ sun/io/CharToByteEUC.java \
+ sun/io/ByteToCharBig5.java \
+ sun/io/ByteToCharBig5_Solaris.java \
+ sun/io/ByteToCharBig5_HKSCS.java \
+ sun/io/ByteToCharMS950_HKSCS.java \
+ sun/io/ByteToCharHKSCS.java \
+ sun/io/ByteToCharHKSCS_2001.java \
+ sun/io/ByteToCharGB18030.java \
+ sun/io/ByteToCharGB18030DB.java \
+ sun/io/ByteToCharCp037.java \
+ sun/io/ByteToCharCp1006.java \
+ sun/io/ByteToCharCp1025.java \
+ sun/io/ByteToCharCp1026.java \
+ sun/io/ByteToCharCp1046.java \
+ sun/io/ByteToCharCp1047.java \
+ sun/io/ByteToCharCp1097.java \
+ sun/io/ByteToCharCp1098.java \
+ sun/io/ByteToCharCp1112.java \
+ sun/io/ByteToCharCp1122.java \
+ sun/io/ByteToCharCp1123.java \
+ sun/io/ByteToCharCp1124.java \
+ sun/io/ByteToCharCp1140.java \
+ sun/io/ByteToCharCp1141.java \
+ sun/io/ByteToCharCp1142.java \
+ sun/io/ByteToCharCp1143.java \
+ sun/io/ByteToCharCp1144.java \
+ sun/io/ByteToCharCp1145.java \
+ sun/io/ByteToCharCp1146.java \
+ sun/io/ByteToCharCp1147.java \
+ sun/io/ByteToCharCp1148.java \
+ sun/io/ByteToCharCp1149.java \
+ sun/io/ByteToCharCp1255.java \
+ sun/io/ByteToCharCp1256.java \
+ sun/io/ByteToCharCp1258.java \
+ sun/io/ByteToCharCp1381.java \
+ sun/io/ByteToCharCp1383.java \
+ sun/io/ByteToCharCp273.java \
+ sun/io/ByteToCharCp277.java \
+ sun/io/ByteToCharCp278.java \
+ sun/io/ByteToCharCp280.java \
+ sun/io/ByteToCharCp284.java \
+ sun/io/ByteToCharCp285.java \
+ sun/io/ByteToCharCp297.java \
+ sun/io/ByteToCharCp33722.java \
+ sun/io/ByteToCharCp420.java \
+ sun/io/ByteToCharCp424.java \
+ sun/io/ByteToCharCp437.java \
+ sun/io/ByteToCharCp500.java \
+ sun/io/ByteToCharCp737.java \
+ sun/io/ByteToCharCp775.java \
+ sun/io/ByteToCharCp834.java \
+ sun/io/ByteToCharCp838.java \
+ sun/io/ByteToCharCp850.java \
+ sun/io/ByteToCharCp852.java \
+ sun/io/ByteToCharCp855.java \
+ sun/io/ByteToCharCp856.java \
+ sun/io/ByteToCharCp857.java \
+ sun/io/ByteToCharCp858.java \
+ sun/io/ByteToCharCp860.java \
+ sun/io/ByteToCharCp861.java \
+ sun/io/ByteToCharCp862.java \
+ sun/io/ByteToCharCp863.java \
+ sun/io/ByteToCharCp864.java \
+ sun/io/ByteToCharCp865.java \
+ sun/io/ByteToCharCp866.java \
+ sun/io/ByteToCharCp868.java \
+ sun/io/ByteToCharCp869.java \
+ sun/io/ByteToCharCp870.java \
+ sun/io/ByteToCharCp871.java \
+ sun/io/ByteToCharCp874.java \
+ sun/io/ByteToCharCp875.java \
+ sun/io/ByteToCharCp918.java \
+ sun/io/ByteToCharCp921.java \
+ sun/io/ByteToCharCp922.java \
+ sun/io/ByteToCharCp930.java \
+ sun/io/ByteToCharCp933.java \
+ sun/io/ByteToCharCp935.java \
+ sun/io/ByteToCharCp937.java \
+ sun/io/ByteToCharCp939.java \
+ sun/io/ByteToCharCp942.java \
+ sun/io/ByteToCharCp942C.java \
+ sun/io/ByteToCharCp943.java \
+ sun/io/ByteToCharCp943C.java \
+ sun/io/ByteToCharCp948.java \
+ sun/io/ByteToCharCp949.java \
+ sun/io/ByteToCharCp949C.java \
+ sun/io/ByteToCharCp950.java \
+ sun/io/ByteToCharCp964.java \
+ sun/io/ByteToCharCp970.java \
+ sun/io/ByteToCharJIS0201.java \
+ sun/io/ByteToCharJIS0208.java \
+ sun/io/ByteToCharJIS0208_Solaris.java \
+ sun/io/ByteToCharJIS0212.java \
+ sun/io/ByteToCharJIS0212_Solaris.java \
+ sun/io/ByteToCharEUC_CN.java \
+ sun/io/ByteToCharEUC_JP.java \
+ sun/io/ByteToCharEUC_JP_LINUX.java \
+ sun/io/ByteToCharEUC_JP_Solaris.java \
+ sun/io/ByteToCharEUC_KR.java \
+ sun/io/ByteToCharEUC_TW.java \
+ sun/io/ByteToCharSJIS.java \
+ sun/io/ByteToCharPCK.java \
+ sun/io/ByteToCharGBK.java \
+ sun/io/ByteToCharISCII91.java \
+ sun/io/ByteToCharISO2022.java \
+ sun/io/ByteToCharISO2022CN.java \
+ sun/io/ByteToCharISO2022JP.java \
+ sun/io/ByteToCharISO2022KR.java \
+ sun/io/ByteToCharISO8859_3.java \
+ sun/io/ByteToCharISO8859_6.java \
+ sun/io/ByteToCharISO8859_8.java \
+ sun/io/ByteToCharJISAutoDetect.java \
+ sun/io/ByteToCharJohab.java \
+ sun/io/ByteToCharMS874.java \
+ sun/io/ByteToCharMS932DB.java \
+ sun/io/ByteToCharMS932.java \
+ sun/io/ByteToCharMS936.java \
+ sun/io/ByteToCharMS949.java \
+ sun/io/ByteToCharMS950.java \
+ sun/io/ByteToCharMacArabic.java \
+ sun/io/ByteToCharMacCentralEurope.java \
+ sun/io/ByteToCharMacCroatian.java \
+ sun/io/ByteToCharMacCyrillic.java \
+ sun/io/ByteToCharMacDingbat.java \
+ sun/io/ByteToCharMacGreek.java \
+ sun/io/ByteToCharMacHebrew.java \
+ sun/io/ByteToCharMacIceland.java \
+ sun/io/ByteToCharMacRoman.java \
+ sun/io/ByteToCharMacRomania.java \
+ sun/io/ByteToCharMacSymbol.java \
+ sun/io/ByteToCharMacThai.java \
+ sun/io/ByteToCharMacTurkish.java \
+ sun/io/ByteToCharMacUkraine.java \
+ sun/io/ByteToCharTIS620.java \
+ sun/io/CharToByteBig5.java \
+ sun/io/CharToByteBig5_Solaris.java \
+ sun/io/CharToByteBig5_HKSCS.java \
+ sun/io/CharToByteHKSCS.java \
+ sun/io/CharToByteHKSCS_2001.java \
+ sun/io/CharToByteMS950_HKSCS.java \
+ sun/io/CharToByteGB18030.java \
+ sun/io/CharToByteCp037.java \
+ sun/io/CharToByteCp1006.java \
+ sun/io/CharToByteCp1025.java \
+ sun/io/CharToByteCp1026.java \
+ sun/io/CharToByteCp1046.java \
+ sun/io/CharToByteCp1047.java \
+ sun/io/CharToByteCp1097.java \
+ sun/io/CharToByteCp1098.java \
+ sun/io/CharToByteCp1112.java \
+ sun/io/CharToByteCp1122.java \
+ sun/io/CharToByteCp1123.java \
+ sun/io/CharToByteCp1124.java \
+ sun/io/CharToByteCp1140.java \
+ sun/io/CharToByteCp1141.java \
+ sun/io/CharToByteCp1142.java \
+ sun/io/CharToByteCp1143.java \
+ sun/io/CharToByteCp1144.java \
+ sun/io/CharToByteCp1145.java \
+ sun/io/CharToByteCp1146.java \
+ sun/io/CharToByteCp1147.java \
+ sun/io/CharToByteCp1148.java \
+ sun/io/CharToByteCp1149.java \
+ sun/io/CharToByteCp1255.java \
+ sun/io/CharToByteCp1256.java \
+ sun/io/CharToByteCp1258.java \
+ sun/io/CharToByteCp1381.java \
+ sun/io/CharToByteCp1383.java \
+ sun/io/CharToByteCp273.java \
+ sun/io/CharToByteCp277.java \
+ sun/io/CharToByteCp278.java \
+ sun/io/CharToByteCp280.java \
+ sun/io/CharToByteCp284.java \
+ sun/io/CharToByteCp285.java \
+ sun/io/CharToByteCp297.java \
+ sun/io/CharToByteCp33722.java \
+ sun/io/CharToByteCp420.java \
+ sun/io/CharToByteCp424.java \
+ sun/io/CharToByteCp437.java \
+ sun/io/CharToByteCp500.java \
+ sun/io/CharToByteCp737.java \
+ sun/io/CharToByteCp775.java \
+ sun/io/CharToByteCp834.java \
+ sun/io/CharToByteCp838.java \
+ sun/io/CharToByteCp850.java \
+ sun/io/CharToByteCp852.java \
+ sun/io/CharToByteCp855.java \
+ sun/io/CharToByteCp856.java \
+ sun/io/CharToByteCp857.java \
+ sun/io/CharToByteCp858.java \
+ sun/io/CharToByteCp860.java \
+ sun/io/CharToByteCp861.java \
+ sun/io/CharToByteCp862.java \
+ sun/io/CharToByteCp863.java \
+ sun/io/CharToByteCp864.java \
+ sun/io/CharToByteCp865.java \
+ sun/io/CharToByteCp866.java \
+ sun/io/CharToByteCp868.java \
+ sun/io/CharToByteCp869.java \
+ sun/io/CharToByteCp870.java \
+ sun/io/CharToByteCp871.java \
+ sun/io/CharToByteCp874.java \
+ sun/io/CharToByteCp875.java \
+ sun/io/CharToByteCp918.java \
+ sun/io/CharToByteCp921.java \
+ sun/io/CharToByteCp922.java \
+ sun/io/CharToByteCp930.java \
+ sun/io/CharToByteCp933.java \
+ sun/io/CharToByteCp935.java \
+ sun/io/CharToByteCp937.java \
+ sun/io/CharToByteCp939.java \
+ sun/io/CharToByteCp942.java \
+ sun/io/CharToByteCp942C.java \
+ sun/io/CharToByteCp943.java \
+ sun/io/CharToByteCp943C.java \
+ sun/io/CharToByteCp948.java \
+ sun/io/CharToByteCp949.java \
+ sun/io/CharToByteCp949C.java \
+ sun/io/CharToByteCp950.java \
+ sun/io/CharToByteCp964.java \
+ sun/io/CharToByteCp970.java \
+ sun/io/CharToByteJIS0201.java \
+ sun/io/CharToByteJIS0208.java \
+ sun/io/CharToByteJIS0208_Solaris.java \
+ sun/io/CharToByteJIS0212.java \
+ sun/io/CharToByteJIS0212_Solaris.java \
+ sun/io/CharToByteEUC_CN.java \
+ sun/io/CharToByteEUC_JP.java \
+ sun/io/CharToByteEUC_JP_LINUX.java \
+ sun/io/CharToByteEUC_JP_Solaris.java \
+ sun/io/CharToByteEUC_KR.java \
+ sun/io/CharToByteEUC_TW.java \
+ sun/io/CharToByteSJIS.java \
+ sun/io/CharToBytePCK.java \
+ sun/io/CharToByteGBK.java \
+ sun/io/CharToByteISCII91.java \
+ sun/io/CharToByteISO2022.java \
+ sun/io/CharToByteISO2022CN_CNS.java \
+ sun/io/CharToByteISO2022CN_GB.java \
+ sun/io/CharToByteISO2022JP.java \
+ sun/io/CharToByteISO2022KR.java \
+ sun/io/CharToByteISO8859_3.java \
+ sun/io/CharToByteISO8859_6.java \
+ sun/io/CharToByteISO8859_8.java \
+ sun/io/CharToByteJohab.java \
+ sun/io/CharToByteMS874.java \
+ sun/io/CharToByteMS932DB.java \
+ sun/io/CharToByteMS932.java \
+ sun/io/CharToByteMS936.java \
+ sun/io/CharToByteMS949.java \
+ sun/io/CharToByteMS950.java \
+ sun/io/CharToByteMacArabic.java \
+ sun/io/CharToByteMacCentralEurope.java \
+ sun/io/CharToByteMacCroatian.java \
+ sun/io/CharToByteMacCyrillic.java \
+ sun/io/CharToByteMacDingbat.java \
+ sun/io/CharToByteMacGreek.java \
+ sun/io/CharToByteMacHebrew.java \
+ sun/io/CharToByteMacIceland.java \
+ sun/io/CharToByteMacRoman.java \
+ sun/io/CharToByteMacRomania.java \
+ sun/io/CharToByteMacSymbol.java \
+ sun/io/CharToByteMacThai.java \
+ sun/io/CharToByteMacTurkish.java \
+ sun/io/CharToByteMacUkraine.java \
+ sun/io/CharToByteTIS620.java
diff --git a/jdk/make/sun/nio/Makefile b/jdk/make/sun/nio/Makefile
new file mode 100644
index 0000000..c18e55a
--- /dev/null
+++ b/jdk/make/sun/nio/Makefile
@@ -0,0 +1,89 @@
+#
+# Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for character converters.
+#
+
+BUILDDIR = ../..
+
+PACKAGE = sun.nio
+PRODUCT = sun
+
+# This re-directs all the class files to a separate location
+CLASSDESTDIR = $(TEMPDIR)/classes
+
+OTHER_JAVACFLAGS += -Xlint:serial -Werror
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+include FILES_java.gmk
+AUTO_FILES_JAVA_DIRS = sun/nio/cs/ext
+
+# Exclude a few sources on windows
+ifeq ($(PLATFORM), windows)
+ AUTO_JAVA_PRUNE = sun/nio/cs/ext/COMPOUND_TEXT.java \
+ sun/nio/cs/ext/COMPOUND_TEXT_Decoder.java \
+ sun/nio/cs/ext/COMPOUND_TEXT_Encoder.java \
+ sun/nio/cs/ext/CompoundTextSupport.java
+endif # PLATFORM
+
+# For Cygwin, command line arguments that are paths must be converted to
+# windows style paths. These paths cannot be used as targets, however, because
+# the ":" in them will interfere with GNU Make rules, generating "multiple
+# target pattern" errors.
+
+# this define is for the rule:
+CHARSETS_JAR = $(LIBDIR)/charsets.jar
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+build: $(CHARSETS_JAR)
+
+#
+# Extra rules to build character converters.
+
+SERVICE_DESCRIPTION = java.nio.charset.spi.CharsetProvider
+SERVICE_DESCRIPTION_PATH = META-INF/services/$(SERVICE_DESCRIPTION)
+
+$(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH): \
+ $(SHARE_SRC)/classes/sun/nio/cs/ext/$(SERVICE_DESCRIPTION_PATH)
+ $(install-file)
+
+$(CHARSETS_JAR): $(FILES_class) $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH)
+ $(BOOT_JAR_CMD) cf $(CHARSETS_JAR) \
+ -C $(CLASSDESTDIR) sun \
+ -C $(CLASSDESTDIR) $(SERVICE_DESCRIPTION_PATH) \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+clean::
+ $(RM) -r $(CLASSDESTDIR)
+ $(RM) $(CHARSETS_JAR)
diff --git a/jdk/make/sun/org/Makefile b/jdk/make/sun/org/Makefile
new file mode 100644
index 0000000..7d3496a
--- /dev/null
+++ b/jdk/make/sun/org/Makefile
@@ -0,0 +1,37 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building Mozilla modules
+#
+
+BUILDDIR = ../..
+PRODUCT = org
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = mozilla
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/sun/org/mozilla/Makefile b/jdk/make/sun/org/mozilla/Makefile
new file mode 100644
index 0000000..47f467f
--- /dev/null
+++ b/jdk/make/sun/org/mozilla/Makefile
@@ -0,0 +1,37 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building Mozilla JavaScript modules
+#
+
+BUILDDIR = ../../..
+PRODUCT = org
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = javascript
+all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/jdk/make/sun/org/mozilla/javascript/Makefile b/jdk/make/sun/org/mozilla/javascript/Makefile
new file mode 100644
index 0000000..2e74c02
--- /dev/null
+++ b/jdk/make/sun/org/mozilla/javascript/Makefile
@@ -0,0 +1,64 @@
+#
+# Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building all of sun.org.mozilla.javascript.internal.*
+#
+
+BUILDDIR = ../../../..
+PACKAGE = sun.org.mozilla.javascript.internal
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+AUTO_FILES_JAVA_DIRS = sun/org/mozilla/javascript/internal
+
+RESOURCEDIR = \
+ $(CLASSDESTDIR)/sun/org/mozilla/javascript/internal/resources
+
+FILES_copy = \
+ $(RESOURCEDIR)/Messages.properties \
+ $(RESOURCEDIR)/Messages_fr.properties
+
+#
+# Rules
+#
+
+include $(BUILDDIR)/common/Classes.gmk
+
+all: classes copy-files
+
+#
+# Copy resource messages file for Rhino JavaScript interpreter
+#
+
+copy-files: $(FILES_copy)
+
+$(RESOURCEDIR)/%: $(CLOSED_SRC)/share/classes/sun/org/mozilla/javascript/internal/resources/%
+ $(install-file)
+
+.PHONY: copy-files
+
+clean clobber::
+ $(RM) -rf $(CLASSDESTDIR)/sun/org/mozilla/javascript
diff --git a/jdk/make/sun/pisces/Makefile b/jdk/make/sun/pisces/Makefile
new file mode 100644
index 0000000..3f3a322
--- /dev/null
+++ b/jdk/make/sun/pisces/Makefile
@@ -0,0 +1,55 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.pisces
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+
+#
+# Include all Java source files in sun/java2d/pisces
+#
+AUTO_FILES_JAVA_DIRS = sun/java2d/pisces
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+SERVICEDIR = $(CLASSBINDIR)/META-INF/services
+
+FILES_copy = \
+ $(SERVICEDIR)/sun.java2d.pipe.RenderingEngine
+
+build: copy-files
+
+copy-files: $(FILES_copy)
+
+$(SERVICEDIR)/%: $(SHARE_SRC)/classes/sun/java2d/pisces/META-INF/services/%
+ $(install-file)
diff --git a/jdk/make/sun/rmi/Makefile b/jdk/make/sun/rmi/Makefile
new file mode 100644
index 0000000..59179b0
--- /dev/null
+++ b/jdk/make/sun/rmi/Makefile
@@ -0,0 +1,51 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build rmi tools, and sun.rmi.* implementation classes
+#
+BUILDDIR = ../..
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Order is important -- you can't build stubs without building rmic first.
+# We need corbalogsources to be built first, since it builds LogWrappers to
+# log the exceptions and generate the right minorcodes. These classes are
+# references in com/sun/corba/se/impl/io and util classes which in turn will
+# be built from rmic Makefile.
+#
+SUBDIRS = oldtools rmic
+
+SUBDIRS += rmi registry rmid
+ifeq ($(PLATFORM), windows)
+ SUBDIRS += cgi
+endif # PLATFORM
+
+# Then do the rest
+all build clean clobber ::
+ $(SUBDIRS-loop)
+
+clean::
+ $(RM) -r $(CLASSBINDIR)/sun/rmi $(CLASSBINDIR)/com/sun/rmi
diff --git a/jdk/make/sun/rmi/cgi/Makefile b/jdk/make/sun/rmi/cgi/Makefile
new file mode 100644
index 0000000..0ed90ca
--- /dev/null
+++ b/jdk/make/sun/rmi/cgi/Makefile
@@ -0,0 +1,57 @@
+#
+# Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building rmiregistry program
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.rmi
+PRODUCT = sun
+PROGRAM = java-rmi
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile.
+#
+FILES_c = java-rmi.c
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Program.gmk
+
+build: $(BINDIR)/$(PROGRAM).cgi
+
+#
+# Rename .exe to .cgi.
+#
+
+$(BINDIR)/$(PROGRAM).cgi: $(BINDIR)/$(PROGRAM).exe
+ $(install-file)
+
+clean clobber::
+ $(RM) $(BINDIR)/$(PROGRAM).cgi
+
diff --git a/jdk/make/sun/rmi/oldtools/FILES_java.gmk b/jdk/make/sun/rmi/oldtools/FILES_java.gmk
new file mode 100644
index 0000000..4787888
--- /dev/null
+++ b/jdk/make/sun/rmi/oldtools/FILES_java.gmk
@@ -0,0 +1,200 @@
+#
+# Copyright 1996-2003 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_java = \
+ sun/tools/java/RuntimeConstants.java \
+ sun/tools/javac/Main.java \
+ sun/tools/javac/BatchEnvironment.java \
+ sun/tools/javac/ErrorConsumer.java \
+ sun/tools/javac/ErrorMessage.java \
+ sun/tools/javac/BatchParser.java \
+ sun/tools/javac/SourceClass.java \
+ sun/tools/javac/SourceMember.java \
+ sun/tools/javac/CompilerMember.java \
+ sun/tools/tree/LocalMember.java \
+ sun/tools/tree/Node.java \
+ sun/tools/tree/Expression.java \
+ sun/tools/tree/Statement.java \
+ sun/tools/tree/TypeExpression.java \
+ sun/tools/tree/IdentifierExpression.java \
+ sun/tools/tree/UnaryExpression.java \
+ sun/tools/tree/FieldExpression.java \
+ sun/tools/tree/NaryExpression.java \
+ sun/tools/tree/MethodExpression.java \
+ sun/tools/tree/InlineMethodExpression.java \
+ sun/tools/tree/ConstantExpression.java \
+ sun/tools/tree/IntegerExpression.java \
+ sun/tools/tree/CharExpression.java \
+ sun/tools/tree/IntExpression.java \
+ sun/tools/tree/LongExpression.java \
+ sun/tools/tree/FloatExpression.java \
+ sun/tools/tree/DoubleExpression.java \
+ sun/tools/tree/StringExpression.java \
+ sun/tools/tree/BooleanExpression.java \
+ sun/tools/tree/NullExpression.java \
+ sun/tools/tree/ThisExpression.java \
+ sun/tools/tree/SuperExpression.java \
+ sun/tools/tree/NotExpression.java \
+ sun/tools/tree/PositiveExpression.java \
+ sun/tools/tree/NegativeExpression.java \
+ sun/tools/tree/BitNotExpression.java \
+ sun/tools/tree/IncDecExpression.java \
+ sun/tools/tree/PreIncExpression.java \
+ sun/tools/tree/PreDecExpression.java \
+ sun/tools/tree/BinaryExpression.java \
+ sun/tools/tree/CastExpression.java \
+ sun/tools/tree/ExprExpression.java \
+ sun/tools/tree/ArrayExpression.java \
+ sun/tools/tree/NewArrayExpression.java \
+ sun/tools/tree/NewInstanceExpression.java \
+ sun/tools/tree/ArrayAccessExpression.java \
+ sun/tools/tree/PostIncExpression.java \
+ sun/tools/tree/PostDecExpression.java \
+ sun/tools/tree/CommaExpression.java \
+ sun/tools/tree/InstanceOfExpression.java \
+ sun/tools/tree/BinaryArithmeticExpression.java \
+ sun/tools/tree/AddExpression.java \
+ sun/tools/tree/SubtractExpression.java \
+ sun/tools/tree/MultiplyExpression.java \
+ sun/tools/tree/DivRemExpression.java \
+ sun/tools/tree/DivideExpression.java \
+ sun/tools/tree/RemainderExpression.java \
+ sun/tools/tree/BinaryShiftExpression.java \
+ sun/tools/tree/ShiftLeftExpression.java \
+ sun/tools/tree/ShiftRightExpression.java \
+ sun/tools/tree/BinaryCompareExpression.java \
+ sun/tools/tree/LessExpression.java \
+ sun/tools/tree/LessOrEqualExpression.java \
+ sun/tools/tree/GreaterExpression.java \
+ sun/tools/tree/GreaterOrEqualExpression.java \
+ sun/tools/tree/BinaryEqualityExpression.java \
+ sun/tools/tree/EqualExpression.java \
+ sun/tools/tree/NotEqualExpression.java \
+ sun/tools/tree/BinaryBitExpression.java \
+ sun/tools/tree/BitAndExpression.java \
+ sun/tools/tree/BitXorExpression.java \
+ sun/tools/tree/BitOrExpression.java \
+ sun/tools/tree/BinaryLogicalExpression.java \
+ sun/tools/tree/AndExpression.java \
+ sun/tools/tree/OrExpression.java \
+ sun/tools/tree/BinaryAssignExpression.java \
+ sun/tools/tree/IfStatement.java \
+ sun/tools/tree/AssignExpression.java \
+ sun/tools/tree/AssignOpExpression.java \
+ sun/tools/tree/AssignAddExpression.java \
+ sun/tools/tree/AssignSubtractExpression.java \
+ sun/tools/tree/AssignMultiplyExpression.java \
+ sun/tools/tree/AssignDivideExpression.java \
+ sun/tools/tree/AssignRemainderExpression.java \
+ sun/tools/tree/AssignBitAndExpression.java \
+ sun/tools/tree/AssignBitOrExpression.java \
+ sun/tools/tree/AssignBitXorExpression.java \
+ sun/tools/tree/AssignShiftLeftExpression.java \
+ sun/tools/tree/AssignShiftRightExpression.java \
+ sun/tools/tree/ConditionalExpression.java \
+ sun/tools/tree/ConditionVars.java \
+ sun/tools/tree/CompoundStatement.java \
+ sun/tools/tree/DeclarationStatement.java \
+ sun/tools/tree/ExpressionStatement.java \
+ sun/tools/tree/ForStatement.java \
+ sun/tools/tree/WhileStatement.java \
+ sun/tools/tree/DoStatement.java \
+ sun/tools/tree/BreakStatement.java \
+ sun/tools/tree/ContinueStatement.java \
+ sun/tools/tree/ReturnStatement.java \
+ sun/tools/tree/InlineReturnStatement.java \
+ sun/tools/tree/CaseStatement.java \
+ sun/tools/tree/SwitchStatement.java \
+ sun/tools/tree/CatchStatement.java \
+ sun/tools/tree/TryStatement.java \
+ sun/tools/tree/FinallyStatement.java \
+ sun/tools/tree/ThrowStatement.java \
+ sun/tools/tree/SynchronizedStatement.java \
+ sun/tools/tree/ConvertExpression.java \
+ sun/tools/tree/LengthExpression.java \
+ sun/tools/tree/ByteExpression.java \
+ sun/tools/tree/ShortExpression.java \
+ sun/tools/tree/Context.java \
+ sun/tools/tree/CheckContext.java \
+ sun/tools/tree/CodeContext.java \
+ sun/tools/tree/VarDeclarationStatement.java \
+ sun/tools/asm/Assembler.java \
+ sun/tools/asm/Instruction.java \
+ sun/tools/asm/Label.java \
+ sun/tools/asm/SwitchData.java \
+ sun/tools/asm/Cover.java \
+ sun/tools/asm/ArrayData.java \
+ sun/tools/asm/TryData.java \
+ sun/tools/asm/CatchData.java \
+ sun/tools/asm/ConstantPool.java \
+ sun/tools/asm/ConstantPoolData.java \
+ sun/tools/asm/StringConstantData.java \
+ sun/tools/asm/ClassConstantData.java \
+ sun/tools/asm/FieldConstantData.java \
+ sun/tools/asm/NameAndTypeData.java \
+ sun/tools/asm/NameAndTypeConstantData.java \
+ sun/tools/asm/NumberConstantData.java \
+ sun/tools/asm/LocalVariableTable.java \
+ sun/tools/asm/LocalVariable.java \
+ sun/tools/java/Environment.java \
+ sun/tools/java/Scanner.java \
+ sun/tools/java/ScannerInputReader.java \
+ sun/tools/java/Parser.java \
+ sun/tools/java/Imports.java \
+ sun/tools/java/ClassDefinition.java \
+ sun/tools/java/MemberDefinition.java \
+ sun/tools/java/ClassDeclaration.java \
+ sun/tools/java/Identifier.java \
+ sun/tools/java/Package.java \
+ sun/tools/java/ClassPath.java \
+ sun/tools/java/ClassFile.java \
+ sun/tools/java/ClassNotFound.java \
+ sun/tools/java/Constants.java \
+ sun/tools/java/SyntaxError.java \
+ sun/tools/java/Type.java \
+ sun/tools/java/MethodType.java \
+ sun/tools/java/ArrayType.java \
+ sun/tools/java/ClassType.java \
+ sun/tools/java/AmbiguousClass.java \
+ sun/tools/java/CompilerError.java \
+ sun/tools/java/AmbiguousMember.java \
+ sun/tools/java/BinaryClass.java \
+ sun/tools/java/BinaryConstantPool.java \
+ sun/tools/java/BinaryAttribute.java \
+ sun/tools/java/BinaryCode.java \
+ sun/tools/java/BinaryExceptionHandler.java \
+ sun/tools/java/BinaryMember.java \
+ sun/tools/tree/UnsignedShiftRightExpression.java \
+ sun/tools/tree/AssignUnsignedShiftRightExpression.java \
+ sun/tools/asm/StringExpressionConstantData.java \
+ sun/tools/tree/InlineNewInstanceExpression.java \
+ sun/tools/java/IdentifierToken.java \
+ sun/tools/java/ParserActions.java \
+ sun/tools/tree/UplevelReference.java \
+ sun/tools/tree/FieldUpdater.java \
+ sun/tools/tree/Vset.java \
+ sun/tools/java/MethodSet.java \
+ sun/tools/util/ModifierFilter.java \
+ sun/tools/util/CommandLine.java
diff --git a/jdk/make/sun/rmi/oldtools/Makefile b/jdk/make/sun/rmi/oldtools/Makefile
new file mode 100644
index 0000000..1b5dfaa
--- /dev/null
+++ b/jdk/make/sun/rmi/oldtools/Makefile
@@ -0,0 +1,57 @@
+#
+# Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the old java compiler.
+#
+
+BUILDDIR = ../../..
+PRODUCT = oldjavac
+
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files to compile.
+#
+include FILES_java.gmk
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = j2sdk
+RESOURCE_BUNDLES_PROPERTIES = sun/tools/javac/resources/javac.properties
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+clean clobber::
+ $(RM) -r $(CLASSBINDIR)/sun/tools/asm
+ $(RM) -r $(CLASSBINDIR)/sun/tools/java
+ $(RM) -r $(CLASSBINDIR)/sun/tools/javac
+ $(RM) -r $(CLASSBINDIR)/sun/tools/tree
+ $(RM) -r $(CLASSBINDIR)/sun/tools/util
+
diff --git a/jdk/make/sun/rmi/registry/Makefile b/jdk/make/sun/rmi/registry/Makefile
new file mode 100644
index 0000000..5521318
--- /dev/null
+++ b/jdk/make/sun/rmi/registry/Makefile
@@ -0,0 +1,50 @@
+#
+# Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building sun.rmi.registry.* and the "rmiregistry" command
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.rmi.registry
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = sun/rmi/registry
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+RESOURCE_BUNDLES_PROPERTIES = $(PKGDIR)/resources/rmiregistry.properties
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/sun/rmi/rmi/Makefile b/jdk/make/sun/rmi/rmi/Makefile
new file mode 100644
index 0000000..c351d87
--- /dev/null
+++ b/jdk/make/sun/rmi/rmi/Makefile
@@ -0,0 +1,133 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building sun.rmi.*
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.rmi
+PRODUCT = sun
+LIBRARY = rmi
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Add use of a mapfile
+#
+FILES_m = mapfile-vers
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+#
+# Java files to compile.
+#
+AUTO_FILES_JAVA_DIRS = \
+ java/rmi \
+ sun/rmi/log \
+ sun/rmi/registry \
+ sun/rmi/runtime \
+ sun/rmi/server \
+ sun/rmi/transport \
+ com/sun/rmi
+
+#
+# Native files to compile.
+#
+FILES_c = \
+ sun/rmi/server/MarshalInputStream.c
+
+#
+# Add ambient vpath to pick up files not part of sun.rmi package
+#
+vpath %.c $(SHARE_SRC)/native/sun/rmi/server
+
+#
+# Exported files that require generated .h
+#
+FILES_export = \
+ sun/rmi/server/MarshalInputStream.java
+
+#
+# Link to JVM for JVM_LatestUserDefinedLoader
+#
+OTHER_LDLIBS = $(JVMLIB)
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# Full package names of implementations requiring stubs
+#
+REMOTE_impls = \
+ sun.rmi.registry.RegistryImpl \
+ sun.rmi.transport.DGCImpl
+
+ifeq ($(PLATFORM), windows)
+build: stubs
+else # PLATFORM
+ifneq ($(ARCH_DATA_MODEL), 32)
+build: stubs
+else # ARCH_DATA_MODEL
+build: stubs bin
+endif
+endif
+
+clean clobber:: bin.clean
+
+
+#
+# Compile stubs and skeletons for remote implementations
+# (use -v1.1 for backward interoperability)
+#
+# gnumake 3.78.1 on windows attempts to build the target even
+# though it exists. Not sure why, but a check for file existence
+# has been added...
+#
+$(CLASSBINDIR)/%_Skel.class $(CLASSBINDIR)/%_Stub.class: $(CLASSBINDIR)/%.class
+ if [ ! -s $@ ] ; \
+ then $(RMIC) -v1.1 -classpath \
+ "$(CLASSBINDIR)" \
+ -d $(CLASSBINDIR) '$(subst /,.,$(<:$(CLASSBINDIR)/%.class=%))' ; \
+ fi
+ @$(java-vm-cleanup)
+
+REMOTE_files = $(subst .,/,$(REMOTE_impls))
+FILES_stubs = $(REMOTE_files:%=$(CLASSBINDIR)/%_Stub.class)
+FILES_skels = $(REMOTE_files:%=$(CLASSBINDIR)/%_Skel.class)
+
+stubs: $(FILES_stubs) $(FILES_skels)
+
+bin: $(BINDIR)/java-rmi.cgi
+
+$(BINDIR)/java-rmi.cgi: $(PLATFORM_SRC)/bin/java-rmi.cgi.sh
+ $(install-file)
+ $(CHMOD) a+x $@
+
+bin.clean:
+ $(RM) $(BINDIR)/java-rmi.cgi
+
+.PHONY: stubs bin bin.clean
+
diff --git a/jdk/make/sun/rmi/rmi/mapfile-vers b/jdk/make/sun/rmi/rmi/mapfile-vers
new file mode 100644
index 0000000..ad76493
--- /dev/null
+++ b/jdk/make/sun/rmi/rmi/mapfile-vers
@@ -0,0 +1,33 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define library interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_sun_rmi_server_MarshalInputStream_latestUserDefinedLoader;
+ local:
+ *;
+};
diff --git a/jdk/make/sun/rmi/rmic/FILES.gmk b/jdk/make/sun/rmi/rmic/FILES.gmk
new file mode 100644
index 0000000..959a05f
--- /dev/null
+++ b/jdk/make/sun/rmi/rmic/FILES.gmk
@@ -0,0 +1,50 @@
+#
+# Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Generated by IBM JTC-SV tools.genmake
+# Copyright (c) IBM Corporation 1998.
+
+RMIC_java = \
+ sun/rmi/rmic/BatchEnvironment.java \
+ sun/rmi/rmic/Util.java \
+ sun/rmi/rmic/Constants.java \
+ sun/rmi/rmic/Generator.java \
+ sun/rmi/rmic/IndentingWriter.java \
+ sun/rmi/rmic/Main.java \
+ sun/rmi/rmic/Names.java \
+ sun/rmi/rmic/RMIConstants.java \
+ sun/rmi/rmic/RMIGenerator.java \
+ sun/rmi/rmic/RemoteClass.java \
+ sun/rmi/rmic/newrmic/BatchEnvironment.java \
+ sun/rmi/rmic/newrmic/Constants.java \
+ sun/rmi/rmic/newrmic/Generator.java \
+ sun/rmi/rmic/newrmic/IndentingWriter.java \
+ sun/rmi/rmic/newrmic/Main.java \
+ sun/rmi/rmic/newrmic/Resources.java \
+ sun/rmi/rmic/newrmic/jrmp/Constants.java \
+ sun/rmi/rmic/newrmic/jrmp/JrmpGenerator.java \
+ sun/rmi/rmic/newrmic/jrmp/RemoteClass.java \
+ sun/rmi/rmic/newrmic/jrmp/StubSkeletonWriter.java \
+ sun/rmi/rmic/newrmic/jrmp/Util.java
diff --git a/jdk/make/sun/rmi/rmic/Makefile b/jdk/make/sun/rmi/rmic/Makefile
new file mode 100644
index 0000000..c6c7c53
--- /dev/null
+++ b/jdk/make/sun/rmi/rmic/Makefile
@@ -0,0 +1,52 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building sun.rmi.rmic.* and the "rmic" command
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.rmi.rmic
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+include FILES.gmk
+
+FILES_java = $(RMIC_java)
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jdk
+RESOURCE_BUNDLES_PROPERTIES = $(PKGDIR)/resources/rmic.properties
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/sun/rmi/rmid/Makefile b/jdk/make/sun/rmi/rmid/Makefile
new file mode 100644
index 0000000..48c62d1
--- /dev/null
+++ b/jdk/make/sun/rmi/rmid/Makefile
@@ -0,0 +1,78 @@
+#
+# Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Install a wrapper for the "rmid" command. The associated classfiles
+# are built at a higher level.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.rmi.activation
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+build: stubs
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+RESOURCE_BUNDLES_PROPERTIES = sun/rmi/server/resources/rmid.properties
+
+#
+# Extra dependencies.
+#
+classes: stubs
+
+#
+# Rules to build activation-system stubs
+#
+
+# Full package names of implementations requiring stubs
+REMOTE_impls = \
+ sun.rmi.server.Activation$$ActivationSystemImpl \
+ java.rmi.activation.ActivationGroup
+
+REMOTE_files = $(subst .,/,$(REMOTE_impls))
+FILES_stubs = $(REMOTE_files:%=$(CLASSBINDIR)/%_Stub.class)
+
+#
+# Compile stubs for remote implementations
+# (use -v1.2 stubs for activation system)
+#
+
+$(CLASSBINDIR)/%_Stub.class: $(CLASSBINDIR)/%.class
+ $(RMIC) -v1.2 -classpath $(CLASSBINDIR) \
+ -d $(CLASSBINDIR) '$(subst /,.,$(<:$(CLASSBINDIR)/%.class=%))'
+ @$(java-vm-cleanup)
+
+stubs: $(FILES_stubs)
+
+#
+# Rules to
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+
diff --git a/jdk/make/sun/security/Makefile b/jdk/make/sun/security/Makefile
new file mode 100644
index 0000000..13394fc
--- /dev/null
+++ b/jdk/make/sun/security/Makefile
@@ -0,0 +1,70 @@
+#
+# Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Build classes for security tools:
+#
+# * keytool
+# * jarsigner
+# * policytool
+#
+# Also install wrappers for all of these.
+#
+
+BUILDDIR = ../..
+include $(BUILDDIR)/common/Defs.gmk
+
+# build sun/security/jgss/wrapper on non-windows platform
+JGSS_WRAPPER =
+ifneq ($(PLATFORM), windows)
+ JGSS_WRAPPER = jgss/wrapper
+endif
+
+# Build PKCS#11 on all platforms except 64-bit Windows.
+# We exclude windows-amd64 because we don't have any
+# 64-bit PKCS#11 implementations to test with on that platform.
+PKCS11 = pkcs11
+ifeq ($(ARCH_DATA_MODEL), 64)
+ ifeq ($(PLATFORM), windows)
+ PKCS11 =
+ endif
+endif
+
+# Build Microsoft CryptoAPI provider only on (non-64-bit) Windows platform.
+MSCAPI =
+ifeq ($(PLATFORM), windows)
+ ifneq ($(ARCH_DATA_MODEL), 64)
+ MSCAPI = mscapi
+ endif
+endif
+
+SUBDIRS = other action util tools jgss krb5 smartcardio $(PKCS11) \
+ $(JGSS_WRAPPER) $(MSCAPI)
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+clean::
+ $(RM) -r $(CLASSBINDIR)/sun/security
diff --git a/jdk/make/sun/security/action/Makefile b/jdk/make/sun/security/action/Makefile
new file mode 100644
index 0000000..394837b
--- /dev/null
+++ b/jdk/make/sun/security/action/Makefile
@@ -0,0 +1,39 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.security.action
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = sun/security/action
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/sun/security/jgss/Makefile b/jdk/make/sun/security/jgss/Makefile
new file mode 100644
index 0000000..f2e990e
--- /dev/null
+++ b/jdk/make/sun/security/jgss/Makefile
@@ -0,0 +1,39 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.security.jgss
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = sun/security/jgss
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/sun/security/jgss/wrapper/FILES_c.gmk b/jdk/make/sun/security/jgss/wrapper/FILES_c.gmk
new file mode 100644
index 0000000..b12eb17
--- /dev/null
+++ b/jdk/make/sun/security/jgss/wrapper/FILES_c.gmk
@@ -0,0 +1,29 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ NativeUtil.c \
+ NativeFunc.c \
+ GSSLibStub.c
diff --git a/jdk/make/sun/security/jgss/wrapper/Makefile b/jdk/make/sun/security/jgss/wrapper/Makefile
new file mode 100644
index 0000000..f5b75db
--- /dev/null
+++ b/jdk/make/sun/security/jgss/wrapper/Makefile
@@ -0,0 +1,76 @@
+#
+# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../../..
+PACKAGE = sun.security.jgss.wrapper
+PRODUCT = sun
+
+LIBRARY = j2gss
+# Force name of temp directory (needed due to LIBRARY change below)
+LIBRARY_OUTPUT = j2gss
+
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# C and Java Files
+#
+include FILES_c.gmk
+
+AUTO_FILES_JAVA_DIRS = sun/security/jgss/wrapper
+
+#
+# Java files that define native methods
+#
+FILES_export = \
+ sun/security/jgss/wrapper/GSSLibStub.java
+
+#
+# Find native code
+#
+vpath %.c \
+ $(SHARE_SRC)/native/sun/security/jgss/wrapper \
+ $(PLATFORM_SRC)/native/sun/security/jgss/wrapper
+
+#
+# Find include files
+#
+OTHER_INCLUDES += \
+ -I$(SHARE_SRC)/native/sun/security/jgss/wrapper \
+ -I$(PLATFORM_SRC)/native/sun/security/jgss/wrapper
+
+#
+# Rules
+#
+#FILES_class = $(FILES_java:%.java=$(CLASSDESTDIR)/%.class)
+
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# Libraries to link
+#
+ifneq ($(PLATFORM), windows)
+ OTHER_LDLIBS = -ldl $(JVMLIB)
+endif
diff --git a/jdk/make/sun/security/jgss/wrapper/mapfile-vers b/jdk/make/sun/security/jgss/wrapper/mapfile-vers
new file mode 100644
index 0000000..35d0051
--- /dev/null
+++ b/jdk/make/sun/security/jgss/wrapper/mapfile-vers
@@ -0,0 +1,63 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ JNI_OnLoad;
+ JNI_OnUnload;
+ Java_sun_security_jgss_wrapper_GSSLibStub_releaseName;
+ Java_sun_security_jgss_wrapper_GSSLibStub_importName;
+ Java_sun_security_jgss_wrapper_GSSLibStub_compareName;
+ Java_sun_security_jgss_wrapper_GSSLibStub_canonicalizeName;
+ Java_sun_security_jgss_wrapper_GSSLibStub_exportName;
+ Java_sun_security_jgss_wrapper_GSSLibStub_displayName;
+ Java_sun_security_jgss_wrapper_GSSLibStub_acquireCred;
+ Java_sun_security_jgss_wrapper_GSSLibStub_releaseCred;
+ Java_sun_security_jgss_wrapper_GSSLibStub_getCredName;
+ Java_sun_security_jgss_wrapper_GSSLibStub_getCredTime;
+ Java_sun_security_jgss_wrapper_GSSLibStub_getCredUsage;
+ Java_sun_security_jgss_wrapper_GSSLibStub_importContext;
+ Java_sun_security_jgss_wrapper_GSSLibStub_initContext;
+ Java_sun_security_jgss_wrapper_GSSLibStub_acceptContext;
+ Java_sun_security_jgss_wrapper_GSSLibStub_getContextName;
+ Java_sun_security_jgss_wrapper_GSSLibStub_getContextMech;
+ Java_sun_security_jgss_wrapper_GSSLibStub_inquireContext;
+ Java_sun_security_jgss_wrapper_GSSLibStub_deleteContext;
+ Java_sun_security_jgss_wrapper_GSSLibStub_getContextTime;
+ Java_sun_security_jgss_wrapper_GSSLibStub_wrapSizeLimit;
+ Java_sun_security_jgss_wrapper_GSSLibStub_exportContext;
+ Java_sun_security_jgss_wrapper_GSSLibStub_getMic;
+ Java_sun_security_jgss_wrapper_GSSLibStub_verifyMic;
+ Java_sun_security_jgss_wrapper_GSSLibStub_wrap;
+ Java_sun_security_jgss_wrapper_GSSLibStub_unwrap;
+ Java_sun_security_jgss_wrapper_GSSLibStub_indicateMechs;
+ Java_sun_security_jgss_wrapper_GSSLibStub_inquireNamesForMech;
+ Java_sun_security_jgss_wrapper_GSSLibStub_init;
+ Java_sun_security_jgss_wrapper_GSSLibStub_getMechPtr;
+ local:
+ *;
+};
diff --git a/jdk/make/sun/security/krb5/FILES_c_windows.gmk b/jdk/make/sun/security/krb5/FILES_c_windows.gmk
new file mode 100644
index 0000000..3aeb58f
--- /dev/null
+++ b/jdk/make/sun/security/krb5/FILES_c_windows.gmk
@@ -0,0 +1,28 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ NativeCreds.c \
+ WindowsDirectory.c
diff --git a/jdk/make/sun/security/krb5/Makefile b/jdk/make/sun/security/krb5/Makefile
new file mode 100644
index 0000000..aac29eb
--- /dev/null
+++ b/jdk/make/sun/security/krb5/Makefile
@@ -0,0 +1,79 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.security.krb5
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Java Files
+#
+AUTO_FILES_JAVA_DIRS = sun/security/krb5
+
+ifeq ($(PLATFORM), windows)
+#
+# Java files that define native methods
+#
+FILES_export = \
+ sun/security/krb5/Credentials.java \
+ sun/security/krb5/Config.java
+include FILES_c_windows.gmk
+# We need some extra libs for win32
+LIBRARY = w2k_lsa_auth
+EXTRA_LIBS += Secur32.lib netapi32.lib\
+ kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
+ odbccp32.lib wsock32.lib
+endif # PLATFORM
+
+#
+# Find native code
+#
+vpath %.c \
+ $(PLATFORM_SRC)/native/sun/security/krb5
+
+JGSS_NATIVE_SRC=$(PLATFORM_SRC)/native/sun/security/krb5
+JGSS_NATIVE_DIR_EXISTS := $(shell if [ -d $(JGSS_NATIVE_SRC) ] ; then echo true; else echo false; fi)
+
+#
+# Rules
+#
+ifeq ($(PLATFORM), windows)
+ ifeq ($(JGSS_NATIVE_DIR_EXISTS), true)
+ include $(BUILDDIR)/common/Library.gmk
+ endif
+else
+include $(BUILDDIR)/common/Classes.gmk
+endif # PLATFORM
+
+#
+# Libraries to link
+#
+ifeq ($(PLATFORM), windows)
+ OTHER_LDLIBS = $(JVMLIB)
+else
+ OTHER_LDLIBS = -ldl $(JVMLIB)
+endif
diff --git a/jdk/make/sun/security/mscapi/FILES_cpp.gmk b/jdk/make/sun/security/mscapi/FILES_cpp.gmk
new file mode 100644
index 0000000..2c54b8a
--- /dev/null
+++ b/jdk/make/sun/security/mscapi/FILES_cpp.gmk
@@ -0,0 +1,28 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_cpp = \
+ security.cpp
+
diff --git a/jdk/make/sun/security/mscapi/Makefile b/jdk/make/sun/security/mscapi/Makefile
new file mode 100644
index 0000000..e6b2372
--- /dev/null
+++ b/jdk/make/sun/security/mscapi/Makefile
@@ -0,0 +1,263 @@
+#
+# Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building sunmscapi.jar and native libraries.
+#
+# This file was derived from make/com/sun/crypto/provider/Makefile.
+#
+
+#
+# (The terms "OpenJDK" and "JDK" below refer to OpenJDK and Sun JDK builds
+# respectively.)
+#
+# JCE builds are very different between OpenJDK and JDK. The OpenJDK JCE
+# jar files do not require signing, but those for JDK do. If an unsigned
+# jar file is installed into JDK, things will break when the crypto
+# routines are called.
+#
+# This Makefile does the "real" build of the JCE files. For OpenJDK,
+# the jar files built here are installed directly into the OpenJDK.
+#
+# For JDK, the binaries use pre-built/pre-signed binary files stored in
+# the closed workspace that are not shipped in the OpenJDK workspaces.
+# We still build the JDK files here to verify the files compile, and in
+# preparation for possible signing. Developers working on JCE in JDK
+# must sign the JCE files before testing. The JCE signing key is kept
+# separate from the JDK workspace to prevent its disclosure.
+#
+# SPECIAL NOTE TO JCE/JDK developers: The source files must eventually
+# be built, signed, and then the resulting jar files MUST BE CHECKED
+# INTO THE CLOSED PART OF THE WORKSPACE*. This separate step *MUST NOT
+# BE FORGOTTEN*, otherwise a bug fixed in the source code will not be
+# reflected in the shipped binaries. The "release" target should be
+# used to generate the required files.
+#
+# There are a number of targets to help both JDK/OpenJDK developers.
+#
+# Main Targets (JDK/OPENJDK):
+#
+# all/clobber/clean The usual, plus the native libraries.
+# If OpenJDK, installs sunmscapi.jar.
+# If JDK, installs prebuilt
+# sunmscapi.jar.
+#
+# jar Builds/installs sunmscapi.jar
+# If OpenJDK, does not sign.
+# If JDK, tries to sign.
+#
+# Other lesser-used Targets (JDK/OPENJDK):
+#
+# build-jar Builds sunmscapi.jar
+# (does not sign/install)
+#
+# install-jar Alias for "jar" above.
+#
+# Other targets (JDK only):
+#
+# sign Alias for sign-jar
+# sign-jar Builds/signs sunmscapi.jar (no install)
+#
+# release Builds all targets in preparation
+# for workspace integration.
+#
+# install-prebuilt Installs the pre-built jar files
+#
+# This makefile was written to support parallel target execution.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.security.mscapi
+LIBRARY = sunmscapi
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+include $(BUILDDIR)/javax/crypto/Defs-jce.gmk
+
+CPLUSPLUSLIBRARY=true
+
+#
+# C++ and Java Files
+#
+include FILES_cpp.gmk
+
+AUTO_FILES_JAVA_DIRS = sun/security/mscapi
+
+#
+# Java files that define native methods
+#
+FILES_export = \
+ sun/security/mscapi/KeyStore.java \
+ sun/security/mscapi/Key.java \
+ sun/security/mscapi/PRNG.java \
+ sun/security/mscapi/RSACipher.java \
+ sun/security/mscapi/RSAPublicKey.java \
+ sun/security/mscapi/RSASignature.java \
+ sun/security/mscapi/RSAKeyPairGenerator.java
+
+#
+# Find native code
+#
+vpath %.cpp \
+ $(PLATFORM_SRC)/native/sun/security/mscapi
+
+#
+# Find include files
+#
+OTHER_INCLUDES += \
+ -I$(PLATFORM_SRC)/native/sun/security/mscapi
+
+#
+# Rules
+#
+CLASSDESTDIR = $(TEMPDIR)/classes
+
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# Libraries to link
+#
+ifeq ($(PLATFORM), windows)
+ OTHER_LDLIBS += $(JVMLIB) Crypt32.Lib
+endif
+
+#
+# We use a variety of subdirectories in the $(TEMPDIR) depending on what
+# part of the build we're doing. Both OPENJDK/JDK builds are initially
+# done in the unsigned area. When files are signed in JDK,
+# they will be placed in the appropriate area.
+#
+UNSIGNED_DIR = $(TEMPDIR)/unsigned
+
+#
+# Rules
+#
+
+ifdef OPENJDK
+all: build-jar install-jar
+else
+all: build-jar install-prebuilt
+ $(build-warning)
+endif
+
+
+# =====================================================
+# Build the unsigned sunmscapi.jar file.
+#
+
+JAR_DESTFILE = $(EXTDIR)/sunmscapi.jar
+
+#
+# The sunmscapi.jar needs to be in the extension class directory,
+# therefore none of its classes can appear in $(CLASSBINDIR).
+# Currently no one is using any of the MSCAPI internals, so these files
+# should not have been built.
+#
+
+#
+# Since the -C option to jar is used below, each directory entry must be
+# preceded with the appropriate directory to "cd" into.
+#
+JAR_DIRS = $(patsubst %, -C $(CLASSDESTDIR) %, $(AUTO_FILES_JAVA_DIRS))
+
+build-jar: $(UNSIGNED_DIR)/sunmscapi.jar
+
+#
+# Build sunmscapi.jar.
+#
+$(UNSIGNED_DIR)/sunmscapi.jar: build
+ $(prep-target)
+ $(BOOT_JAR_CMD) cf $@ $(JAR_DIRS) \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+
+ifndef OPENJDK
+# =====================================================
+# Sign the provider jar file. Not needed for OpenJDK.
+#
+
+SIGNED_DIR = $(TEMPDIR)/signed
+
+sign: sign-jar
+
+sign-jar: $(SIGNED_DIR)/sunmscapi.jar
+
+$(SIGNED_DIR)/sunmscapi.jar: $(UNSIGNED_DIR)/sunmscapi.jar
+ $(sign-file)
+
+
+# =====================================================
+# Create the Release Engineering files. Signed builds, etc.
+#
+
+release: $(SIGNED_DIR)/sunmscapi.jar
+ $(RM) $(RELEASE_DIR)/sunmscapi.jar
+ $(MKDIR) -p $(RELEASE_DIR)
+ $(CP) $(SIGNED_DIR)/sunmscapi.jar $(RELEASE_DIR)
+ $(release-warning)
+
+endif # OPENJDK
+
+
+# =====================================================
+# Install routines.
+#
+
+#
+# Install sunmscapi.jar, depending on which type is requested.
+#
+install-jar jar: $(JAR_DESTFILE)
+ifndef OPENJDK
+ $(release-warning)
+endif
+
+ifdef OPENJDK
+$(JAR_DESTFILE): $(UNSIGNED_DIR)/sunmscapi.jar
+else
+$(JAR_DESTFILE): $(SIGNED_DIR)/sunmscapi.jar
+endif
+ $(install-file)
+
+ifndef OPENJDK
+install-prebuilt:
+ @$(ECHO) "\n>>>Installing prebuilt SunMSCAPI provider..."
+ $(RM) $(JAR_DESTFILE)
+ $(CP) $(PREBUILT_DIR)/mscapi/sunmscapi.jar $(JAR_DESTFILE)
+endif
+
+
+# =====================================================
+# Support routines.
+#
+
+clobber clean::
+ $(RM) -r $(JAR_DESTFILE) $(TEMPDIR)
+
+.PHONY: build-jar jar install-jar
+ifndef OPENJDK
+.PHONY: sign sign-jar release install-prebuilt
+endif
diff --git a/jdk/make/sun/security/other/Makefile b/jdk/make/sun/security/other/Makefile
new file mode 100644
index 0000000..8fea7ce
--- /dev/null
+++ b/jdk/make/sun/security/other/Makefile
@@ -0,0 +1,51 @@
+#
+# Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.security.other
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = \
+ sun/security/acl \
+ sun/security/ec \
+ sun/security/jca \
+ sun/security/pkcs \
+ sun/security/pkcs12 \
+ sun/security/provider \
+ sun/security/rsa \
+ sun/security/ssl \
+ sun/security/timestamp \
+ sun/security/validator \
+ sun/security/x509 \
+ com/sun/net/ssl/internal/ssl
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
diff --git a/jdk/make/sun/security/pkcs11/FILES_c.gmk b/jdk/make/sun/security/pkcs11/FILES_c.gmk
new file mode 100644
index 0000000..6fa9405
--- /dev/null
+++ b/jdk/make/sun/security/pkcs11/FILES_c.gmk
@@ -0,0 +1,41 @@
+#
+# Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ j2secmod.c \
+ j2secmod_md.c \
+ p11_convert.c \
+ p11_crypt.c \
+ p11_digest.c \
+ p11_dual.c \
+ p11_general.c \
+ p11_keymgmt.c \
+ p11_mutex.c \
+ p11_objmgmt.c \
+ p11_sessmgmt.c \
+ p11_sign.c \
+ p11_util.c \
+ p11_md.c
+
diff --git a/jdk/make/sun/security/pkcs11/Makefile b/jdk/make/sun/security/pkcs11/Makefile
new file mode 100644
index 0000000..32d77f9
--- /dev/null
+++ b/jdk/make/sun/security/pkcs11/Makefile
@@ -0,0 +1,263 @@
+#
+# Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building sunpkcs11.jar and native libraries.
+#
+# This file was derived from make/com/sun/crypto/provider/Makefile.
+#
+
+#
+# (The terms "OpenJDK" and "JDK" below refer to OpenJDK and Sun JDK builds
+# respectively.)
+#
+# JCE builds are very different between OpenJDK and JDK. The OpenJDK JCE
+# jar files do not require signing, but those for JDK do. If an unsigned
+# jar file is installed into JDK, things will break when the crypto
+# routines are called.
+#
+# This Makefile does the "real" build of the JCE files. For OpenJDK,
+# the jar files built here are installed directly into the OpenJDK.
+#
+# For JDK, the binaries use pre-built/pre-signed binary files stored in
+# the closed workspace that are not shipped in the OpenJDK workspaces.
+# We still build the JDK files here to verify the files compile, and in
+# preparation for possible signing. Developers working on JCE in JDK
+# must sign the JCE files before testing. The JCE signing key is kept
+# separate from the JDK workspace to prevent its disclosure.
+#
+# SPECIAL NOTE TO JCE/JDK developers: The source files must eventually
+# be built, signed, and then the resulting jar files MUST BE CHECKED
+# INTO THE CLOSED PART OF THE WORKSPACE*. This separate step *MUST NOT
+# BE FORGOTTEN*, otherwise a bug fixed in the source code will not be
+# reflected in the shipped binaries. The "release" target should be
+# used to generate the required files.
+#
+# There are a number of targets to help both JDK/OpenJDK developers.
+#
+# Main Targets (JDK/OPENJDK):
+#
+# all/clobber/clean The usual, plus the native libraries.
+# If OpenJDK, installs sunpkcs11.jar.
+# If JDK, installs prebuilt
+# sunpkcs11.jar.
+#
+# jar Builds/installs sunpkcs11.jar
+# If OpenJDK, does not sign.
+# If JDK, tries to sign.
+#
+# Other lesser-used Targets (JDK/OPENJDK):
+#
+# build-jar Builds sunpkcs11.jar
+# (does not sign/install)
+#
+# install-jar Alias for "jar" above.
+#
+# Other targets (JDK only):
+#
+# sign Alias for sign-jar
+# sign-jar Builds/signs sunpkcs11.jar (no install)
+#
+# release Builds all targets in preparation
+# for workspace integration.
+#
+# install-prebuilt Installs the pre-built jar files
+#
+# This makefile was written to support parallel target execution.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.security.pkcs11
+LIBRARY = j2pkcs11
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+include $(BUILDDIR)/javax/crypto/Defs-jce.gmk
+
+#
+# C and Java Files
+#
+include FILES_c.gmk
+
+#
+# Subdirectories of these are automatically included.
+#
+AUTO_FILES_JAVA_DIRS = sun/security/pkcs11
+
+#
+# Java files that define native methods
+#
+FILES_export = \
+ sun/security/pkcs11/wrapper/PKCS11.java \
+ sun/security/pkcs11/Secmod.java
+
+#
+# Find native code
+#
+vpath %.c \
+ $(SHARE_SRC)/native/sun/security/pkcs11/wrapper \
+ $(PLATFORM_SRC)/native/sun/security/pkcs11/wrapper \
+
+#
+# Find include files
+#
+OTHER_INCLUDES += \
+ -I$(SHARE_SRC)/native/sun/security/pkcs11/wrapper \
+ -I$(PLATFORM_SRC)/native/sun/security/pkcs11/wrapper
+
+#
+# Rules
+#
+CLASSDESTDIR = $(TEMPDIR)/classes
+
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# Libraries to link
+#
+ifeq ($(PLATFORM), windows)
+ OTHER_LDLIBS = $(JVMLIB)
+else
+ OTHER_LDLIBS = -ldl $(JVMLIB)
+endif
+
+#
+# We use a variety of subdirectories in the $(TEMPDIR) depending on what
+# part of the build we're doing. Both OPENJDK/JDK builds are initially
+# done in the unsigned area. When files are signed in JDK,
+# they will be placed in the appropriate area.
+#
+UNSIGNED_DIR = $(TEMPDIR)/unsigned
+
+#
+# Rules
+#
+
+ifdef OPENJDK
+all: build-jar install-jar
+else
+all: build-jar install-prebuilt
+ $(build-warning)
+endif
+
+
+# =====================================================
+# Build the unsigned sunpkcs11.jar file.
+#
+
+JAR_DESTFILE = $(EXTDIR)/sunpkcs11.jar
+
+#
+# The sunpkcs11.jar needs to be in the extension class directory,
+# therefore none of its classes can appear in $(CLASSBINDIR).
+# Currently no one is using any of the PKCS11 internals, so these files
+# should not have been built.
+#
+
+#
+# Since the -C option to jar is used below, each directory entry must be
+# preceded with the appropriate directory to "cd" into.
+#
+JAR_DIRS = $(patsubst %, -C $(CLASSDESTDIR) %, $(AUTO_FILES_JAVA_DIRS))
+
+build-jar: $(UNSIGNED_DIR)/sunpkcs11.jar
+
+#
+# Build sunpkcs11.jar.
+#
+$(UNSIGNED_DIR)/sunpkcs11.jar: build
+ $(prep-target)
+ $(BOOT_JAR_CMD) cf $@ $(JAR_DIRS) \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+
+ifndef OPENJDK
+# =====================================================
+# Sign the provider jar file. Not needed for OpenJDK.
+#
+
+SIGNED_DIR = $(TEMPDIR)/signed
+
+sign: sign-jar
+
+sign-jar: $(SIGNED_DIR)/sunpkcs11.jar
+
+$(SIGNED_DIR)/sunpkcs11.jar: $(UNSIGNED_DIR)/sunpkcs11.jar
+ $(sign-file)
+
+
+# =====================================================
+# Create the Release Engineering files. Signed builds, etc.
+#
+
+release: $(SIGNED_DIR)/sunpkcs11.jar
+ $(RM) $(RELEASE_DIR)/sunpkcs11.jar
+ $(MKDIR) -p $(RELEASE_DIR)
+ $(CP) $(SIGNED_DIR)/sunpkcs11.jar $(RELEASE_DIR)
+ $(release-warning)
+
+endif # OPENJDK
+
+
+# =====================================================
+# Install routines.
+#
+
+#
+# Install sunpkcs11.jar, depending on which type is requested.
+#
+install-jar jar: $(JAR_DESTFILE)
+ifndef OPENJDK
+ $(release-warning)
+endif
+
+ifdef OPENJDK
+$(JAR_DESTFILE): $(UNSIGNED_DIR)/sunpkcs11.jar
+else
+$(JAR_DESTFILE): $(SIGNED_DIR)/sunpkcs11.jar
+endif
+ $(install-file)
+
+ifndef OPENJDK
+install-prebuilt:
+ @$(ECHO) "\n>>>Installing prebuilt SunPKCS11 provider..."
+ $(RM) $(JAR_DESTFILE)
+ $(CP) $(PREBUILT_DIR)/pkcs11/sunpkcs11.jar $(JAR_DESTFILE)
+endif
+
+
+# =====================================================
+# Support routines.
+#
+
+clobber clean::
+ $(RM) -r $(JAR_DESTFILE) $(TEMPDIR)
+
+.PHONY: build-jar jar install-jar
+ifndef OPENJDK
+.PHONY: sign sign-jar release install-prebuilt
+endif
diff --git a/jdk/make/sun/security/pkcs11/mapfile-vers b/jdk/make/sun/security/pkcs11/mapfile-vers
new file mode 100644
index 0000000..f5f0e36
--- /dev/null
+++ b/jdk/make/sun/security/pkcs11/mapfile-vers
@@ -0,0 +1,110 @@
+#
+# Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ JNI_OnLoad;
+ Java_sun_security_pkcs11_wrapper_PKCS11_initializeLibrary;
+ Java_sun_security_pkcs11_wrapper_PKCS11_finalizeLibrary;
+ Java_sun_security_pkcs11_wrapper_PKCS11_connect;
+ Java_sun_security_pkcs11_wrapper_PKCS11_disconnect;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1Initialize;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1Finalize;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetInfo;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetSlotList;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetSlotInfo;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetTokenInfo;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetMechanismList;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetMechanismInfo;
+# Java_sun_security_pkcs11_wrapper_PKCS11_C_1InitToken;
+# Java_sun_security_pkcs11_wrapper_PKCS11_C_1InitPIN;
+# Java_sun_security_pkcs11_wrapper_PKCS11_C_1SetPIN;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1OpenSession;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1CloseSession;
+# Java_sun_security_pkcs11_wrapper_PKCS11_C_1CloseAllSessions;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetSessionInfo;
+# Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetOperationState;
+# Java_sun_security_pkcs11_wrapper_PKCS11_C_1SetOperationState;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1Login;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1Logout;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1CreateObject;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1CopyObject;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1DestroyObject;
+# Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetObjectSize;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetAttributeValue;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1SetAttributeValue;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1FindObjectsInit;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1FindObjects;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1FindObjectsFinal;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1EncryptInit;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1Encrypt;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1EncryptUpdate;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1EncryptFinal;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1DecryptInit;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1Decrypt;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1DecryptUpdate;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1DecryptFinal;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1DigestInit;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1DigestSingle;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1DigestUpdate;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1DigestKey;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1DigestFinal;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1SignInit;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1Sign;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1SignUpdate;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1SignFinal;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1SignRecoverInit;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1SignRecover;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1VerifyInit;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1Verify;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1VerifyUpdate;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1VerifyFinal;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1VerifyRecoverInit;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1VerifyRecover;
+# Java_sun_security_pkcs11_wrapper_PKCS11_C_1DigestEncryptUpdate;
+# Java_sun_security_pkcs11_wrapper_PKCS11_C_1DecryptDigestUpdate;
+# Java_sun_security_pkcs11_wrapper_PKCS11_C_1SignEncryptUpdate;
+# Java_sun_security_pkcs11_wrapper_PKCS11_C_1DecryptVerifyUpdate;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1GenerateKey;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1GenerateKeyPair;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1WrapKey;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1UnwrapKey;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1DeriveKey;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1SeedRandom;
+ Java_sun_security_pkcs11_wrapper_PKCS11_C_1GenerateRandom;
+# Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetFunctionStatus;
+# Java_sun_security_pkcs11_wrapper_PKCS11_C_1CancelFunction;
+# Java_sun_security_pkcs11_wrapper_PKCS11_C_1WaitForSlotEvent;
+ Java_sun_security_pkcs11_Secmod_nssGetLibraryHandle;
+ Java_sun_security_pkcs11_Secmod_nssLoadLibrary;
+ Java_sun_security_pkcs11_Secmod_nssVersionCheck;
+ Java_sun_security_pkcs11_Secmod_nssInit;
+ Java_sun_security_pkcs11_Secmod_nssGetModuleList;
+
+ local:
+ *;
+};
diff --git a/jdk/make/sun/security/smartcardio/FILES_c.gmk b/jdk/make/sun/security/smartcardio/FILES_c.gmk
new file mode 100644
index 0000000..c6be032
--- /dev/null
+++ b/jdk/make/sun/security/smartcardio/FILES_c.gmk
@@ -0,0 +1,28 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ pcsc.c \
+ pcsc_md.c
diff --git a/jdk/make/sun/security/smartcardio/Makefile b/jdk/make/sun/security/smartcardio/Makefile
new file mode 100644
index 0000000..5568641
--- /dev/null
+++ b/jdk/make/sun/security/smartcardio/Makefile
@@ -0,0 +1,80 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.security.smartcardio
+LIBRARY = j2pcsc
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# C and Java Files
+#
+include FILES_c.gmk
+
+AUTO_FILES_JAVA_DIRS = sun/security/smartcardio
+
+#
+# Java files that define native methods
+#
+FILES_export = \
+ sun/security/smartcardio/PCSC.java \
+ sun/security/smartcardio/PlatformPCSC.java
+
+#
+# Find native code
+#
+vpath %.c \
+ $(SHARE_SRC)/native/sun/security/smartcardio \
+ $(PLATFORM_SRC)/native/sun/security/smartcardio
+
+#
+# Find include files
+#
+OTHER_INCLUDES += \
+ -I$(SHARE_SRC)/native/sun/security/smartcardio \
+ -I$(PLATFORM_SRC)/native/sun/security/smartcardio \
+ -I$(PLATFORM_SRC)/native/sun/security/smartcardio/MUSCLE
+
+#
+# Rules
+#
+#CLASSDESTDIR = $(TMPDIR)/classes
+
+#FILES_class = $(FILES_java:%.java=$(CLASSDESTDIR)/%.class)
+
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# Libraries to link
+#
+ifeq ($(PLATFORM), windows)
+ OTHER_LDLIBS = $(JVMLIB) winscard.lib
+else
+ OTHER_LDLIBS = -ldl $(JVMLIB)
+ OTHER_CFLAGS = -D__sun_jdk
+endif
diff --git a/jdk/make/sun/security/smartcardio/mapfile-vers b/jdk/make/sun/security/smartcardio/mapfile-vers
new file mode 100644
index 0000000..356058c
--- /dev/null
+++ b/jdk/make/sun/security/smartcardio/mapfile-vers
@@ -0,0 +1,45 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ JNI_OnLoad;
+ Java_sun_security_smartcardio_PlatformPCSC_initialize;
+ Java_sun_security_smartcardio_PCSC_SCardEstablishContext;
+ Java_sun_security_smartcardio_PCSC_SCardListReaders;
+ Java_sun_security_smartcardio_PCSC_SCardConnect;
+ Java_sun_security_smartcardio_PCSC_SCardTransmit;
+ Java_sun_security_smartcardio_PCSC_SCardStatus;
+ Java_sun_security_smartcardio_PCSC_SCardDisconnect;
+ Java_sun_security_smartcardio_PCSC_SCardGetStatusChange;
+ Java_sun_security_smartcardio_PCSC_SCardBeginTransaction;
+ Java_sun_security_smartcardio_PCSC_SCardEndTransaction;
+ Java_sun_security_smartcardio_PCSC_SCardControl;
+
+ local:
+ *;
+};
diff --git a/jdk/make/sun/security/tools/Makefile b/jdk/make/sun/security/tools/Makefile
new file mode 100644
index 0000000..0a8ffab
--- /dev/null
+++ b/jdk/make/sun/security/tools/Makefile
@@ -0,0 +1,46 @@
+#
+# Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.security.tools
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = sun/security/tools
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jdk
+RESOURCE_BUNDLES_JAVA = sun/security/tools/JarSignerResources.java
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/sun/security/util/Makefile b/jdk/make/sun/security/util/Makefile
new file mode 100644
index 0000000..7669143
--- /dev/null
+++ b/jdk/make/sun/security/util/Makefile
@@ -0,0 +1,46 @@
+#
+# Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../../..
+PACKAGE = sun.security.util
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = sun/security/util
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jre
+RESOURCE_BUNDLES_JAVA = sun/security/util/Resources.java
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/sun/serialver/Makefile b/jdk/make/sun/serialver/Makefile
new file mode 100644
index 0000000..3dfae49
--- /dev/null
+++ b/jdk/make/sun/serialver/Makefile
@@ -0,0 +1,50 @@
+#
+# Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building sun.tools.serialver.*
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.tools.serialver
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = sun/tools/serialver
+
+#
+# Resources
+#
+LOCALE_SET_DEFINITION = jdk
+RESOURCE_BUNDLES_PROPERTIES = $(PKGDIR)/resources/serialver.properties
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/sun/splashscreen/FILES_c.gmk b/jdk/make/sun/splashscreen/FILES_c.gmk
new file mode 100644
index 0000000..a22e189
--- /dev/null
+++ b/jdk/make/sun/splashscreen/FILES_c.gmk
@@ -0,0 +1,110 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_c = \
+ java_awt_SplashScreen.c \
+ splashscreen_gfx_impl.c \
+ splashscreen_gif.c \
+ splashscreen_impl.c \
+ splashscreen_jpeg.c \
+ splashscreen_png.c \
+ splashscreen_sys.c \
+ png.c \
+ pngerror.c \
+ pngget.c \
+ pngmem.c \
+ pngpread.c \
+ pngread.c \
+ pngrio.c \
+ pngrtran.c \
+ pngrutil.c \
+ pngset.c \
+ pngtrans.c \
+ pngwio.c \
+ pngwrite.c \
+ pngwtran.c \
+ pngwutil.c \
+ dgif_lib.c \
+ gif_err.c \
+ gifalloc.c \
+ compress.c \
+ deflate.c \
+ gzio.c \
+ infblock.c \
+ infcodes.c \
+ inffast.c \
+ inflate.c \
+ inftrees.c \
+ infutil.c \
+ trees.c \
+ uncompr.c \
+ zadler32.c \
+ zcrc32.c \
+ zutil.c \
+ jcomapi.c \
+ jdapimin.c \
+ jdapistd.c \
+ jdcoefct.c \
+ jdcolor.c \
+ jddctmgr.c \
+ jdhuff.c \
+ jdinput.c \
+ jdmainct.c \
+ jdmarker.c \
+ jdmaster.c \
+ jdmerge.c \
+ jdphuff.c \
+ jdpostct.c \
+ jdsample.c \
+ jerror.c \
+ jidctflt.c \
+ jidctfst.c \
+ jidctint.c \
+ jidctred.c \
+ jmemmgr.c \
+ jmemnobs.c \
+ jquant1.c \
+ jquant2.c \
+ jutils.c \
+ jcapimin.c \
+ jcapistd.c \
+ jccoefct.c \
+ jccolor.c \
+ jcdctmgr.c \
+ jchuff.c \
+ jcinit.c \
+ jcmainct.c \
+ jcmarker.c \
+ jcmaster.c \
+ jcparam.c \
+ jcphuff.c \
+ jcprepct.c \
+ jcsample.c \
+ jctrans.c \
+ jdtrans.c \
+ jfdctflt.c \
+ jfdctfst.c \
+ jfdctint.c
+
diff --git a/jdk/make/sun/splashscreen/Makefile b/jdk/make/sun/splashscreen/Makefile
new file mode 100644
index 0000000..1b51d3a
--- /dev/null
+++ b/jdk/make/sun/splashscreen/Makefile
@@ -0,0 +1,87 @@
+#
+# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.awt
+LIBRARY = splashscreen
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+include FILES_c.gmk
+
+FILES_java = \
+ java/awt/SplashScreen.java
+
+FILES_export = \
+ java/awt/SplashScreen.java
+
+
+#
+# Rules
+#
+# FIXME!!!!
+#ifeq ($(PLATFORM), solaris)
+# ifneq ($(ARCH), amd64)
+# FILES_reorder += reorder-$(ARCH)
+# endif
+#endif
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+JAVALIB=
+
+#
+# C Flags
+#
+
+CFLAGS += -DSPLASHSCREEN
+
+ifneq ($(PLATFORM), windows)
+ CFLAGS += -DWITH_X11
+ CPPFLAGS += -I$(OPENWIN_HOME)/include -I$(OPENWIN_HOME)/include/X11/extensions
+ OTHER_LDLIBS += -L$(OPENWIN_LIB) -lX11 -lXext $(LIBM) -lpthread
+else # PLATFORM
+ CFLAGS += -DWITH_WIN32
+ OTHER_LDLIBS += kernel32.lib user32.lib gdi32.lib
+#$(JVMLIB) $(OBJDIR)/../../jpeg/$(OBJDIRNAME)/jpeg$(SUFFIX).lib
+endif # PLATFORM
+
+#
+# Add to ambient vpath to get files in a subdirectory
+#
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/splashscreen
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/giflib
+vpath %.c $(SHARE_SRC)/native/java/util/zip/zlib-1.1.3
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/libpng
+vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/image/jpeg
+vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)/splashscreen
+
+CPPFLAGS += -I$(PLATFORM_SRC)/native/$(PKGDIR)/splashscreen -I$(SHARE_SRC)/native/$(PKGDIR)/splashscreen
+CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/image/jpeg -I$(SHARE_SRC)/native/java/util/zip/zlib-1.1.3
+
diff --git a/jdk/make/sun/splashscreen/mapfile-vers b/jdk/make/sun/splashscreen/mapfile-vers
new file mode 100644
index 0000000..08b7658
--- /dev/null
+++ b/jdk/make/sun/splashscreen/mapfile-vers
@@ -0,0 +1,46 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_java_awt_SplashScreen__1update;
+ Java_java_awt_SplashScreen__1isVisible;
+ Java_java_awt_SplashScreen__1getBounds;
+ Java_java_awt_SplashScreen__1getInstance;
+ Java_java_awt_SplashScreen__1close;
+ Java_java_awt_SplashScreen__1getImageFileName;
+ Java_java_awt_SplashScreen__1getImageJarName;
+ Java_java_awt_SplashScreen__1setImageData;
+
+ SplashLoadMemory;
+ SplashLoadFile;
+ SplashInit;
+ SplashClose;
+ SplashSetFileJarName;
+ local:
+ *;
+};
diff --git a/jdk/make/sun/text/FILES_java.gmk b/jdk/make/sun/text/FILES_java.gmk
new file mode 100644
index 0000000..f12ac39
--- /dev/null
+++ b/jdk/make/sun/text/FILES_java.gmk
@@ -0,0 +1,95 @@
+#
+# Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Locale data files for lib/ext/localedata.jar.
+# This includes resource bundles and data for non-European
+# languages in sun.text.resources as well as sun.util.resources.
+#
+# Locale data for European languages is built from
+# - make/java/text for classes in sun.text.resources
+# - make/java/util for classes in sun.util.resources
+#
+
+FILES_java = \
+ sun/text/resources/BreakIteratorInfo_th.java \
+ \
+ sun/text/resources/CollationData_ar.java \
+ sun/text/resources/CollationData_hi.java \
+ sun/text/resources/CollationData_iw.java \
+ sun/text/resources/CollationData_ja.java \
+ sun/text/resources/CollationData_ko.java \
+ sun/text/resources/CollationData_th.java \
+ sun/text/resources/CollationData_vi.java \
+ sun/text/resources/CollationData_zh.java \
+ sun/text/resources/CollationData_zh_HK.java \
+ sun/text/resources/CollationData_zh_TW.java \
+ \
+ sun/text/resources/FormatData_ar.java \
+ sun/text/resources/FormatData_ar_AE.java \
+ sun/text/resources/FormatData_ar_BH.java \
+ sun/text/resources/FormatData_ar_DZ.java \
+ sun/text/resources/FormatData_ar_EG.java \
+ sun/text/resources/FormatData_ar_IQ.java \
+ sun/text/resources/FormatData_ar_JO.java \
+ sun/text/resources/FormatData_ar_KW.java \
+ sun/text/resources/FormatData_ar_LB.java \
+ sun/text/resources/FormatData_ar_LY.java \
+ sun/text/resources/FormatData_ar_MA.java \
+ sun/text/resources/FormatData_ar_OM.java \
+ sun/text/resources/FormatData_ar_QA.java \
+ sun/text/resources/FormatData_ar_SA.java \
+ sun/text/resources/FormatData_ar_SD.java \
+ sun/text/resources/FormatData_ar_SY.java \
+ sun/text/resources/FormatData_ar_TN.java \
+ sun/text/resources/FormatData_ar_YE.java \
+ sun/text/resources/FormatData_hi_IN.java \
+ sun/text/resources/FormatData_iw.java \
+ sun/text/resources/FormatData_iw_IL.java \
+ sun/text/resources/FormatData_ja.java \
+ sun/text/resources/FormatData_ja_JP.java \
+ sun/text/resources/FormatData_ja_JP_JP.java \
+ sun/text/resources/FormatData_ko.java \
+ sun/text/resources/FormatData_ko_KR.java \
+ sun/text/resources/FormatData_th.java \
+ sun/text/resources/FormatData_th_TH.java \
+ sun/text/resources/FormatData_th_TH_TH.java \
+ sun/text/resources/FormatData_vi.java \
+ sun/text/resources/FormatData_vi_VN.java \
+ sun/text/resources/FormatData_zh.java \
+ sun/text/resources/FormatData_zh_CN.java \
+ sun/text/resources/FormatData_zh_HK.java \
+ sun/text/resources/FormatData_zh_SG.java \
+ sun/text/resources/FormatData_zh_TW.java \
+ \
+ sun/util/resources/CurrencyNames_zh_HK.java \
+ sun/util/resources/CurrencyNames_zh_SG.java \
+ sun/util/resources/LocaleNames_zh_HK.java \
+ sun/util/resources/TimeZoneNames_hi.java \
+ sun/util/resources/TimeZoneNames_ja.java \
+ sun/util/resources/TimeZoneNames_ko.java \
+ sun/util/resources/TimeZoneNames_zh_CN.java \
+ sun/util/resources/TimeZoneNames_zh_TW.java \
+ sun/util/resources/TimeZoneNames_zh_HK.java
+
diff --git a/jdk/make/sun/text/FILES_properties.gmk b/jdk/make/sun/text/FILES_properties.gmk
new file mode 100644
index 0000000..e9e9c8a
--- /dev/null
+++ b/jdk/make/sun/text/FILES_properties.gmk
@@ -0,0 +1,73 @@
+#
+# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+FILES_compiled_properties = \
+ sun/util/resources/LocaleNames_ar.properties \
+ sun/util/resources/LocaleNames_hi.properties \
+ sun/util/resources/LocaleNames_iw.properties \
+ sun/util/resources/LocaleNames_ja.properties \
+ sun/util/resources/LocaleNames_ko.properties \
+ sun/util/resources/LocaleNames_th.properties \
+ sun/util/resources/LocaleNames_vi.properties \
+ sun/util/resources/LocaleNames_zh.properties \
+ sun/util/resources/LocaleNames_zh_SG.properties \
+ sun/util/resources/LocaleNames_zh_TW.properties \
+ \
+ sun/util/resources/CalendarData_ar.properties \
+ sun/util/resources/CalendarData_hi.properties \
+ sun/util/resources/CalendarData_iw.properties \
+ sun/util/resources/CalendarData_ja.properties \
+ sun/util/resources/CalendarData_ko.properties \
+ sun/util/resources/CalendarData_th.properties \
+ sun/util/resources/CalendarData_vi.properties \
+ sun/util/resources/CalendarData_zh.properties \
+ \
+ sun/util/resources/CurrencyNames_ar_AE.properties \
+ sun/util/resources/CurrencyNames_ar_BH.properties \
+ sun/util/resources/CurrencyNames_ar_DZ.properties \
+ sun/util/resources/CurrencyNames_ar_EG.properties \
+ sun/util/resources/CurrencyNames_ar_IQ.properties \
+ sun/util/resources/CurrencyNames_ar_JO.properties \
+ sun/util/resources/CurrencyNames_ar_KW.properties \
+ sun/util/resources/CurrencyNames_ar_LB.properties \
+ sun/util/resources/CurrencyNames_ar_LY.properties \
+ sun/util/resources/CurrencyNames_ar_MA.properties \
+ sun/util/resources/CurrencyNames_ar_OM.properties \
+ sun/util/resources/CurrencyNames_ar_QA.properties \
+ sun/util/resources/CurrencyNames_ar_SA.properties \
+ sun/util/resources/CurrencyNames_ar_SD.properties \
+ sun/util/resources/CurrencyNames_ar_SY.properties \
+ sun/util/resources/CurrencyNames_ar_TN.properties \
+ sun/util/resources/CurrencyNames_ar_YE.properties \
+ sun/util/resources/CurrencyNames_hi_IN.properties \
+ sun/util/resources/CurrencyNames_iw_IL.properties \
+ sun/util/resources/CurrencyNames_ja.properties \
+ sun/util/resources/CurrencyNames_ja_JP.properties \
+ sun/util/resources/CurrencyNames_ko.properties \
+ sun/util/resources/CurrencyNames_ko_KR.properties \
+ sun/util/resources/CurrencyNames_th_TH.properties \
+ sun/util/resources/CurrencyNames_vi_VN.properties \
+ sun/util/resources/CurrencyNames_zh_CN.properties \
+ sun/util/resources/CurrencyNames_zh_TW.properties
diff --git a/jdk/make/sun/text/Makefile b/jdk/make/sun/text/Makefile
new file mode 100644
index 0000000..d3d4935
--- /dev/null
+++ b/jdk/make/sun/text/Makefile
@@ -0,0 +1,123 @@
+#
+# Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for locale data.
+#
+
+BUILDDIR = ../..
+
+PACKAGE = sun.text
+PRODUCT = sun
+
+include $(BUILDDIR)/common/Defs.gmk
+
+# Re-direct classes to another location (we are building localedata.jar)
+CLASSDESTDIR = $(TEMPDIR)/classes
+
+#
+# Files
+#
+include FILES_java.gmk
+include FILES_properties.gmk
+
+#
+# Compile the properties files
+#
+COMPILED_PROPERTIES_SUPERCLASS=LocaleNamesBundle
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
+#
+# Rules to add data files BreakIterator (for th locale)
+#
+TEXT_CLASSES = $(BUILDTOOLCLASSDIR)/sun.text/classes
+
+# input
+#
+# Notes: sun.text.resources.BreakIteratorRules_th no longer goes to runtime.
+# They are used at JDK build phase in order to create $(BIFILES) which
+# are used on runtime instead.
+#
+TEXT_SRCDIR = $(SHARE_SRC)/classes/sun/text/resources
+BIRULES = $(TEXT_SRCDIR)/BreakIteratorRules.java \
+ $(TEXT_SRCDIR)/BreakIteratorRules_th.java
+BIINFO = $(TEXT_SRCDIR)/BreakIteratorInfo_th.java
+UNICODEDATA = $(BUILDDIR)/tools/UnicodeData
+
+# output
+BIFILES = $(CLASSDESTDIR)/sun/text/resources/WordBreakIteratorData_th \
+ $(CLASSDESTDIR)/sun/text/resources/LineBreakIteratorData_th
+
+# builder
+GENERATEBREAKITERATORDATA_JARFILE = \
+ $(BUILDTOOLJARDIR)/generatebreakiteratordata.jar
+
+$(BIFILES): $(GENERATEBREAKITERATORDATA_JARFILE) $(BIRULES) $(BIINFO) \
+ $(UNICODEDATA)/UnicodeData.txt
+ $(prep-target)
+ $(MKDIR) -p $(TEXT_CLASSES)
+ $(BOOT_JAVAC_CMD) -d $(TEXT_CLASSES) \
+ -sourcepath $(TEXT_SRCDIR) \
+ $(BIRULES) $(BIINFO)
+ $(BOOT_JAVA_CMD) -Xbootclasspath/p:$(TEXT_CLASSES) \
+ -jar $(GENERATEBREAKITERATORDATA_JARFILE) \
+ -o $(CLASSDESTDIR)/sun/text/resources \
+ -spec $(UNICODEDATA)/UnicodeData.txt \
+ -language th
+ @$(java-vm-cleanup)
+
+clean::
+ $(RM) -r $(TEXT_CLASSES)
+ $(RM) -r $(BIFILES)
+#
+# End of rules to add data files for BreakIterator
+#
+
+#
+# Extra rules to build locale data.
+#
+LOCALEDATA_JAR = $(EXTDIR)/localedata.jar
+
+SPECIALFILES = $(CLASSDESTDIR)/sun/text/resources/thai_dict
+
+$(CLASSDESTDIR)/sun/text/resources/% : $(TEXT_SRCDIR)/%
+ $(install-file)
+
+$(LOCALEDATA_JAR): $(EXTDIR) $(FILES_class) $(BIFILES) $(SPECIALFILES)
+ $(prep-target)
+ $(BOOT_JAR_CMD) -cf $@ -C $(CLASSDESTDIR) sun \
+ $(JAR_JFLAGS)
+ @$(java-vm-cleanup)
+
+build: $(LOCALEDATA_JAR)
+
+clean clobber::
+ $(RM) -r $(CLASSDESTDIR)
+ $(RM) $(LOCALEDATA_JAR)
+
diff --git a/jdk/make/sun/tools/Makefile b/jdk/make/sun/tools/Makefile
new file mode 100644
index 0000000..3c4d4c9
--- /dev/null
+++ b/jdk/make/sun/tools/Makefile
@@ -0,0 +1,87 @@
+#
+# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building tools
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.tools
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = \
+ sun/tools/jinfo \
+ sun/tools/jmap \
+ sun/tools/jps \
+ sun/tools/jstack \
+ sun/tools/jstat \
+ sun/tools/jstatd \
+ com/sun/tools/hat \
+ com/sun/tools/script/shell \
+ sun/jvmstat
+
+# Extra jstat files
+FILES_copy += \
+ $(CLASSDESTDIR)/sun/tools/jstat/resources/jstat_options
+
+# Extra jhat files
+JHAT_RESOURCEDIR = $(CLASSDESTDIR)/com/sun/tools/hat/resources
+FILES_copy += \
+ $(JHAT_RESOURCEDIR)/hat.js \
+ $(JHAT_RESOURCEDIR)/oqlhelp.html \
+ $(JHAT_RESOURCEDIR)/platform_names.txt
+
+# Extra jrunscript files
+JRUNSCRIPT_RESOURCEDIR = $(CLASSDESTDIR)/com/sun/tools/script/shell
+FILES_copy += \
+ $(JRUNSCRIPT_RESOURCEDIR)/init.js \
+ $(JRUNSCRIPT_RESOURCEDIR)/messages.properties
+
+# Extra jvmstat files
+FILES_copy += \
+ $(CLASSDESTDIR)/sun/jvmstat/perfdata/resources/aliasmap
+
+# Build should include the file copies
+build: copy-files
+
+copy-files: $(FILES_copy)
+
+$(CLASSDESTDIR)/%: $(SHARE_SRC)/classes/%
+ $(install-file)
+
+clean clobber::
+ $(RM) $(FILES_copy)
+
+.PHONY: copy-files
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
+
diff --git a/jdk/make/sun/xawt/FILES_c_unix.gmk b/jdk/make/sun/xawt/FILES_c_unix.gmk
new file mode 100644
index 0000000..c40d146
--- /dev/null
+++ b/jdk/make/sun/xawt/FILES_c_unix.gmk
@@ -0,0 +1,81 @@
+#
+# Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# include rules
+#
+
+FILES_c = \
+ XlibWrapper.c \
+ XWindow.c \
+ XToolkit.c \
+ X11Color.c \
+ X11SurfaceData.c \
+ awt_GraphicsEnv.c \
+ awt_InputMethod.c \
+ robot_common.c \
+ awt_Robot.c \
+ list.c \
+ multiVis.c \
+ initIDs.c \
+ awt_util.c \
+ awt_Desktop.c \
+ awt_UNIXToolkit.c \
+ X11FontScaler_md.c \
+ X11TextRenderer_md.c \
+ fontpath.c \
+ awt_Insets.c \
+ awt_Event.c \
+ X11Renderer.c \
+ X11PMBlitLoops.c \
+ OGLBlitLoops.c \
+ OGLBufImgOps.c \
+ OGLContext.c \
+ OGLFuncs.c \
+ OGLMaskBlit.c \
+ OGLMaskFill.c \
+ OGLPaints.c \
+ OGLRenderQueue.c \
+ OGLRenderer.c \
+ OGLSurfaceData.c \
+ OGLTextRenderer.c \
+ OGLVertexCache.c \
+ GLXGraphicsConfig.c \
+ GLXSurfaceData.c \
+ AccelGlyphCache.c \
+ awt_Font.c \
+ multi_font.c \
+ awt_AWTEvent.c \
+ awt_DrawingSurface.c \
+ jawt.c \
+ CUPSfuncs.c \
+ debug_assert.c \
+ debug_mem.c \
+ debug_trace.c \
+ debug_util.c \
+ awt_Plugin.c \
+ gtk2_interface.c \
+ swing_GTKEngine.c \
+ swing_GTKStyle.c
diff --git a/jdk/make/sun/xawt/FILES_export_unix.gmk b/jdk/make/sun/xawt/FILES_export_unix.gmk
new file mode 100644
index 0000000..f09f832
--- /dev/null
+++ b/jdk/make/sun/xawt/FILES_export_unix.gmk
@@ -0,0 +1,36 @@
+#
+# Copyright 2002-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# include rules
+#
+
+FILES_export = \
+ sun/awt/X11/XlibWrapper.java \
+ sun/awt/X11/XWindow.java \
+ sun/awt/X11/XDesktopPeer.java \
+ sun/awt/X11/XToolkit.java \
+ sun/awt/X11/XComponentPeer.java \
+ sun/awt/X11/XInputMethod.java
diff --git a/jdk/make/sun/xawt/Makefile b/jdk/make/sun/xawt/Makefile
new file mode 100644
index 0000000..e0f59b7
--- /dev/null
+++ b/jdk/make/sun/xawt/Makefile
@@ -0,0 +1,313 @@
+#
+# Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.awt.X11
+LIBRARY = mawt
+LIBRARY_OUTPUT = xawt
+LIB_LOCATION = $(LIBDIR)/$(LIBARCH)/xawt
+PRODUCT = sun
+
+include $(BUILDDIR)/common/Defs.gmk
+
+GEN_DIR=$(GENSRCDIR)/sun/awt/X11
+
+CLASSES_INIT += $(TEMPDIR)/.gen.wrappers $(TEMPDIR)/.gen_icons touch.wrappers
+
+.PHONY: generated.clean
+
+#
+# Files
+#
+include FILES_c_unix.gmk
+include FILES_export_unix.gmk
+AUTO_FILES_JAVA_DIRS = sun/awt/X11
+AUTO_JAVA_PRUNE = WrapperGenerator.java
+
+LDFLAGS += -L$(OPENWIN_LIB)
+
+ifeq ($(PLATFORM), linux)
+LDFLAGS += -lpthread
+dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
+endif
+
+# Since this library will be living in a subdirectory below the other libraries
+# we need to add an extra runpath so that libraries in the upper directory
+# are found at runtime.
+LD_RUNPATH_EXTRAS = ..
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# Add to the ambient vpath to pick up files in subdirectories
+#
+vpath %.c $(SHARE_SRC)/native/sunawt/alphacomposite
+vpath %.c $(PLATFORM_SRC)/native/sun/xawt
+vpath %.c $(PLATFORM_SRC)/native/sun/awt
+vpath %.c $(SHARE_SRC)/native/sun/awt/debug
+vpath %.c $(SHARE_SRC)/native/sun/awt/image
+vpath %.c $(SHARE_SRC)/native/sun/awt/image/gif
+vpath %.c $(SHARE_SRC)/native/sun/awt/image/cvutils
+vpath %.c $(SHARE_SRC)/native/sun/awt/shell
+vpath %.c $(SHARE_SRC)/native/sun/java2d
+vpath %.c $(SHARE_SRC)/native/sun/java2d/loops
+vpath %.c $(SHARE_SRC)/native/sun/java2d/pipe
+vpath %.c $(SHARE_SRC)/native/sun/awt/medialib
+vpath %.cpp $(SHARE_SRC)/native/sun/image
+vpath %.c $(SHARE_SRC)/native/sun/font
+vpath %.c $(PLATFORM_SRC)/native/sun/awt/robot_child
+vpath %.c $(SHARE_SRC)/native/sun/java2d/opengl
+vpath %.c $(PLATFORM_SRC)/native/sun/java2d/opengl
+vpath %.c $(PLATFORM_SRC)/native/sun/java2d/x11
+
+OTHER_LDLIBS = $(LIBM) -lawt -lXext -lX11 -ldl \
+ $(LDFLAGS_COMMON) $(AWT_RUNPATH) $(OTHER_LDFLAGS) -lXtst -lXi
+
+ifeq ($(PLATFORM), solaris)
+CPPFLAGS += -DFUNCPROTO=15
+dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
+endif
+
+CPPFLAGS += -I$(CUPS_HEADERS_PATH)
+
+CPPFLAGS += -DXAWT -DXAWT_HACK \
+ -I$(TEMPDIR)/../../sun.awt/awt/CClassHeaders \
+ -I$(PLATFORM_SRC)/native/sun/awt \
+ -I$(PLATFORM_SRC)/native/sun/xawt \
+ -I$(PLATFORM_SRC)/native/sun/jdga \
+ -I$(SHARE_SRC)/native/sun/awt/debug \
+ -I$(SHARE_SRC)/native/sun/awt/image/cvutils \
+ -I$(SHARE_SRC)/native/sun/java2d \
+ -I$(SHARE_SRC)/native/sun/java2d/loops \
+ -I$(SHARE_SRC)/native/sun/awt/image/cvutils \
+ -I$(SHARE_SRC)/native/sun/awt/image \
+ -I$(SHARE_SRC)/native/sun/font \
+ -I$(PLATFORM_SRC)/native/sun/java2d \
+ -I$(SHARE_SRC)/native/sun/java2d/pipe \
+ -I$(SHARE_SRC)/native/sun/java2d/opengl \
+ -I$(PLATFORM_SRC)/native/sun/java2d/opengl \
+ -I$(PLATFORM_SRC)/native/sun/java2d/x11 \
+ -I$(SHARE_SRC)/native/sun/dc/path \
+ -I$(SHARE_SRC)/native/sun/dc/doe \
+ -I$(SHARE_SRC)/native/sun/awt/alphacomposite \
+ -I$(SHARE_SRC)/native/sun/awt/medialib \
+ -I$(PLATFORM_SRC)/native/sun/awt/medialib \
+ -I$(PLATFORM_SRC)/native/sun/font \
+ -I$(SHARE_SRC)/native/sun/awt \
+ -I$(PLATFORM_SRC)/native/sun/awt
+
+ifeq ($(PLATFORM), linux)
+# Allows for builds on Debian GNU Linux, X11 is in a different place
+ CPPFLAGS += -I/usr/X11R6/include/X11/extensions \
+ -I/usr/include/X11/extensions \
+ -I$(OPENWIN_HOME)/include
+endif
+
+ifeq ($(PLATFORM), solaris)
+ CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions
+endif
+
+ifeq ($(MILESTONE), internal)
+ CPPFLAGS += -DINTERNAL_BUILD
+endif
+
+#
+# Generation of wrappers
+#
+SIZER_DIR=$(GEN_DIR)/generator
+SIZER = $(SIZER_DIR)/sizer
+SIZER_32_C = $(SIZER).32.c
+SIZER_64_C = $(SIZER).64.c
+CFLAGS_32=$(CFLAGS)
+CFLAGS_64=$(CFLAGS)
+
+ifeq ($(PLATFORM), solaris)
+
+isalist:=$(shell $(ISAINFO))
+
+ifneq (,$(findstring sparcv9, $(isalist)))
+# On sparcv9 we generate both 32 and 64-bit sizers in spite of ARCH_DATA_MODEL.
+# On sparcv9 CFLAGS already contain $(XARCH_OPTION/64), so to generate 32-bit sizer we need to change this option.
+CFLAGS_32=$(subst $(XARCH_OPTION/64),$(XARCH_OPTION/32),$(CFLAGS))
+SIZERS = $(SIZER).32 $(SIZER).64
+SIZERS_C = $(SIZER_32_C) $(SIZER_64_C)
+SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32 $(WRAPPER_GENERATOR_DIR)/sizes.64
+CFLAGS_64=$(CFLAGS) $(XARCH_OPTION/64)
+else
+ifneq (,$(findstring amd64, $(isalist)))
+# On amd64 we generate both 32 and 64-bit sizers in spite of ARCH_DATA_MODEL.
+# On amd64 CFLAGS already contain $(XARCH_OPTION/64), so to generate 32-bit sizer we need to change this option.
+CFLAGS_32=$(subst $(XARCH_OPTION/64),$(XARCH_OPTION/32),$(CFLAGS))
+SIZERS = $(SIZER).32 $(SIZER).64
+SIZERS_C = $(SIZER_32_C) $(SIZER_64_C)
+SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32 $(WRAPPER_GENERATOR_DIR)/sizes.64
+CFLAGS_64=$(CFLAGS) $(XARCH_OPTION/64)
+else # !sparcv9 : includes (32-bit) sparc, i586
+SIZERS = $(SIZER).32
+SIZERS_C = $(SIZER_32_C)
+SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32
+endif # amd64
+endif # sparcv9
+
+else # !solaris
+
+ifeq ($(ARCH_DATA_MODEL), 32)
+SIZERS = $(SIZER).32
+SIZERS_C = $(SIZER_32_C)
+SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32
+else # !32
+SIZERS = $(SIZER).64
+SIZERS_C = $(SIZER_64_C)
+SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.64
+endif # 32
+
+endif # solaris
+
+# XXX Hack for 6185483 - use hard-coded sizes.
+# Add the 64-bit platforms that need to be included into 32-bit build
+# and have sizes.64-$(PLATFORM)-$(LIBARCH) hardcoded in the workspace
+ifeq ($(PLATFORM)-$(LIBARCH), solaris-i386)
+# If you define DOHACK=true for some combination of $(PLATFORM)-$(LIBARCH),
+# make sure you have sizes.64-$(PLATFORM)-$(LIBARCH) pre-generated in
+# $(PLATFORM_SRC)/classes/sun/awt/X11/generator/
+DOHACK=true
+endif # Hack
+
+ifeq ($(DOHACK), true)
+PREDEFINED_SIZES_TMPL=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/sizes.64-$(PLATFORM)-$(LIBARCH)
+PREDEFINED_SIZES=$(WRAPPER_GENERATOR_DIR)/sizes.64
+SIZES += $(WRAPPER_GENERATOR_DIR)/sizes.64
+endif
+
+ifeq ($(PLATFORM)-$(LIBARCH), solaris-amd64)
+DOCOMPARE=true
+endif
+# 64 bit sizers are generated on platform-libarch (left) for use
+# on platform-libarch (right) and stored under the latter name.
+# Do compare manually stored and automatically generated pair(s)
+# if DOCOMPARE=true, just after the generation.
+STORED_SIZES_TMPL_solaris_amd64=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/sizes.64-solaris-i386
+
+WRAPPER_GENERATOR_JAVA=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/WrapperGenerator.java
+WRAPPER_GENERATOR_DIR=$(GENSRCDIR)/sun/awt/X11/generator
+WRAPPER_GENERATOR_TEMPDIR=$(TEMPDIR)/sun/awt/X11/generator
+WRAPPER_GENERATOR_CLASS=$(WRAPPER_GENERATOR_TEMPDIR)/WrapperGenerator.class
+XLIBTYPES=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/xlibtypes.txt
+
+$(SIZERS): $(SIZERS_C)
+ $(prep-target)
+ $(CC) $(CFLAGS_$(subst .,,$(suffix $@))) $(CPPFLAGS) -o $@ $(SIZER)$(suffix $@).c
+
+$(WRAPPER_GENERATOR_CLASS): $(WRAPPER_GENERATOR_JAVA)
+ $(prep-target)
+ $(BOOT_JAVAC_CMD) -d $(WRAPPER_GENERATOR_TEMPDIR) $(WRAPPER_GENERATOR_JAVA)
+
+$(SIZERS_C): $(WRAPPER_GENERATOR_CLASS) $(XLIBTYPES)
+ $(prep-target)
+ $(MKDIR) -p $(WRAPPER_GENERATOR_TEMPDIR)
+ $(BOOT_JAVA_CMD) -cp $(WRAPPER_GENERATOR_TEMPDIR) WrapperGenerator \
+ $(SIZER_DIR) $(XLIBTYPES) "sizer" $(subst .,,$(suffix $(basename $@)))
+
+$(SIZES): $(SIZERS)
+ @if [ "$(DOHACK)$@" = "true$(PREDEFINED_SIZES)" ]; then \
+ $(ECHO) COPYING $(PREDEFINED_SIZES_TMPL) into $@; \
+ $(CP) $(PREDEFINED_SIZES_TMPL) $@; \
+ $(CHMOD) +w $@;\
+ else \
+ $(ECHO) GENERATING $@; \
+ $(WRAPPER_GENERATOR_DIR)/sizer$(suffix $@) > $@; \
+ fi
+ @if [ "$(DOCOMPARE)$(suffix $@)" = "true.64" ]; then \
+ $(ECHO) COMPARING $@ and $(STORED_SIZES_TMPL_$(PLATFORM)_$(LIBARCH)); \
+ $(DIFF) $@ $(STORED_SIZES_TMPL_$(PLATFORM)_$(LIBARCH)); \
+ fi
+
+$(TEMPDIR)/.gen.wrappers: $(SIZES) $(WRAPPER_GENERATOR_CLASS) $(XLIBTYPES)
+ $(BOOT_JAVA_CMD) -cp $(WRAPPER_GENERATOR_TEMPDIR) WrapperGenerator \
+ $(GEN_DIR) $(XLIBTYPES) "gen" $(WRAPPER_GENERATOR_DIR)/sizes
+
+touch.wrappers: $(TEMPDIR)/.gen.wrappers
+ $(MKDIR) -p $(TEMPDIR)
+ $(TOUCH) $(TEMPDIR)/.gen.wrappers
+
+generated.clean:
+ $(RM) -r $(WRAPPER_GENERATOR_TEMPDIR)
+ $(RM) -r $(WRAPPER_GENERATOR_DIR)
+ $(RM) -r $(GEN_DIR)/*.java
+
+ifdef OPENJDK
+ ICONS_PATH_PREFIX=$(PLATFORM_SRC)
+else
+ ICONS_PATH_PREFIX=$(CLOSED_SRC)/solaris
+endif
+
+ICONS = \
+ $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon16.png \
+ $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon24.png \
+ $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon32.png \
+ $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon48.png
+
+TEMPDIR_CLASSES = $(TEMPDIR)/classes
+
+$(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class: ToBin.java
+ @$(prep-target)
+ $(BOOT_JAVAC_CMD) -d $(TEMPDIR_CLASSES) $<
+
+$(TEMPDIR)/.gen_icons: $(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class $(ICONS)
+ $(prep-target)
+ for i in $(ICONS); do \
+ filename=`basename $$i`; \
+ name=`$(ECHO) $$filename | $(TR) '\-.' '__'`; \
+ classname=$(GEN_DIR)/XAWTIcon32_$$name.java; \
+ $(RM) $$classname; \
+ $(ECHO) "package sun.awt.X11;" >> $$classname ; \
+ $(ECHO) "public class XAWTIcon32_$$name {" >> $$classname; \
+ $(ECHO) "public static int[] $$name = { " >> $$classname; \
+ $(CAT) $$i | \
+ $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES) \
+ -Djava.awt.headless=true \
+ sun.awt.X11.ToBin >> $$classname; \
+ $(ECHO) "}; }" >> $$classname; \
+ classname=$(GEN_DIR)/XAWTIcon64_$$name.java; \
+ $(RM) $$classname; \
+ $(ECHO) "package sun.awt.X11;" >> $$classname ; \
+ $(ECHO) "public class XAWTIcon64_$$name {" >> $$classname; \
+ $(ECHO) "public static long[] $$name = { " >> $$classname; \
+ $(CAT) $$i | \
+ $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES) \
+ -Djava.awt.headless=true \
+ sun.awt.X11.ToBin >> $$classname; \
+ $(ECHO) "}; }" >> $$classname; \
+ done
+ $(TOUCH) $@
+
+clean clobber:: generated.clean
+
+.PHONY: generated.clean robot_child
+
diff --git a/jdk/make/sun/xawt/ToBin.java b/jdk/make/sun/xawt/ToBin.java
new file mode 100644
index 0000000..f3aedb7
--- /dev/null
+++ b/jdk/make/sun/xawt/ToBin.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.awt.X11;
+
+import java.io.*;
+import java.awt.image.*;
+import javax.imageio.*;
+import java.awt.*;
+
+public class ToBin {
+ public static void main(String[] args) throws Exception {
+ BufferedImage im = ImageIO.read(System.in);
+ BufferedImage bi = null;
+ int iconWidth = im.getWidth(null);
+ int iconHeight = im.getHeight(null);
+ if (im != null && iconHeight != 0 && iconWidth != 0) {
+ bi = new BufferedImage(iconWidth, iconHeight, BufferedImage.TYPE_INT_ARGB);
+ Graphics g = bi.getGraphics();
+ try {
+ g.drawImage(im, 0, 0, iconWidth, iconHeight, null);
+ } finally {
+ g.dispose();
+ }
+ }
+ DataBuffer srcBuf = bi.getData().getDataBuffer();
+ int[] buf = ((DataBufferInt)srcBuf).getData();
+ System.out.print(iconWidth + ",");
+ System.out.println(iconHeight + ",");
+ for (int i = 0; i < buf.length; i++) {
+ System.out.print("0x" + Integer.toHexString(buf[i]) + ", ");
+ if (i % 10 == 0) {
+ System.out.println();
+ }
+ }
+ }
+}
diff --git a/jdk/make/sun/xawt/mapfile-vers b/jdk/make/sun/xawt/mapfile-vers
new file mode 100644
index 0000000..7828481
--- /dev/null
+++ b/jdk/make/sun/xawt/mapfile-vers
@@ -0,0 +1,400 @@
+#
+# Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ JNI_OnLoad;
+ Java_sun_awt_X11_XlibWrapper_copyIntArray;
+ Java_sun_awt_X11_XlibWrapper_copyLongArray;
+ Java_sun_awt_X11_XlibWrapper_getAddress;
+ Java_sun_awt_X11_XlibWrapper_XConvertSelection;
+ Java_sun_awt_X11_XlibWrapper_XSetSelectionOwner;
+ Java_sun_awt_X11_XlibWrapper_XGetSelectionOwner;
+ Java_sun_awt_X11_XlibWrapper_XGetAtomName;
+ Java_sun_awt_X11_XlibWrapper_XMaxRequestSize;
+ Java_sun_awt_X11_XlibWrapper_XReparentWindow;
+ Java_sun_awt_X11_XlibWrapper_XAllocSizeHints;
+ Java_sun_awt_X11_XlibWrapper_XAllocWMHints;
+ Java_sun_awt_X11_XlibWrapper_XSetMinMaxHints;
+ Java_sun_awt_X11_XlibWrapper_XGetVisualInfo;
+ Java_sun_awt_X11_XlibWrapper_XOpenDisplay;
+ Java_sun_awt_X11_XlibWrapper_XCloseDisplay;
+ Java_sun_awt_X11_XlibWrapper_XDisplayString;
+ Java_sun_awt_X11_XlibWrapper_XSetCloseDownMode;
+ Java_sun_awt_X11_XlibWrapper_XCreateWindow;
+ Java_sun_awt_X11_XlibWrapper_XMapWindow;
+ Java_sun_awt_X11_XlibWrapper_XMapRaised;
+ Java_sun_awt_X11_XlibWrapper_XUnmapWindow;
+ Java_sun_awt_X11_XlibWrapper_XSelectInput;
+ Java_sun_awt_X11_XlibWrapper_XNextEvent;
+ Java_sun_awt_X11_XlibWrapper_XMaskEvent;
+ Java_sun_awt_X11_XlibWrapper_XWindowEvent;
+ Java_sun_awt_X11_XlibWrapper_XFilterEvent;
+ Java_sun_awt_X11_XlibWrapper_XSupportsLocale;
+ Java_sun_awt_X11_XlibWrapper_XSetLocaleModifiers;
+ Java_sun_awt_X11_XlibWrapper_XPeekEvent;
+ Java_sun_awt_X11_XlibWrapper_DefaultScreen;
+ Java_sun_awt_X11_XlibWrapper_ScreenOfDisplay;
+ Java_sun_awt_X11_XlibWrapper_DoesBackingStore;
+ Java_sun_awt_X11_XlibWrapper_RootWindow;
+ Java_sun_awt_X11_XlibWrapper_DisplayHeight;
+ Java_sun_awt_X11_XlibWrapper_DisplayWidthMM;
+ Java_sun_awt_X11_XlibWrapper_DisplayWidth;
+ Java_sun_awt_X11_XlibWrapper_DisplayHeightMM;
+ Java_sun_awt_X11_XlibWrapper_ScreenCount;
+ Java_sun_awt_X11_XlibWrapper_XMoveResizeWindow;
+ Java_sun_awt_X11_XlibWrapper_XResizeWindow;
+ Java_sun_awt_X11_XlibWrapper_XMoveWindow;
+ Java_sun_awt_X11_XlibWrapper_XGetWindowAttributes;
+ Java_sun_awt_X11_XlibWrapper_XGetGeometry;
+ Java_sun_awt_X11_XlibWrapper_XGrabPointer;
+ Java_sun_awt_X11_XlibWrapper_XUngrabPointer;
+ Java_sun_awt_X11_XlibWrapper_XGrabKeyboard;
+ Java_sun_awt_X11_XlibWrapper_XUngrabKeyboard;
+ Java_sun_awt_X11_XlibWrapper_XSetWindowBackground;
+ Java_sun_awt_X11_XlibWrapper_XFlush;
+ Java_sun_awt_X11_XlibWrapper_XSync;
+ Java_sun_awt_X11_XlibWrapper_XEventsQueued;
+ Java_sun_awt_X11_XlibWrapper_XRaiseWindow;
+ Java_sun_awt_X11_XlibWrapper_XLowerWindow;
+ Java_sun_awt_X11_XlibWrapper_XRestackWindows;
+ Java_sun_awt_X11_XlibWrapper_XSetInputFocus;
+ Java_sun_awt_X11_XlibWrapper_XSetInputFocus2;
+ Java_sun_awt_X11_XlibWrapper_XGetInputFocus;
+ Java_sun_awt_X11_XlibWrapper_XDestroyWindow;
+ Java_sun_awt_X11_XlibWrapper_XTranslateCoordinates;
+ Java_sun_awt_X11_XlibWrapper_XCreateFontCursor;
+ Java_sun_awt_X11_XlibWrapper_XSetTransientFor;
+ Java_sun_awt_X11_XlibWrapper_XSetWMHints;
+ Java_sun_awt_X11_XlibWrapper_XGetWMHints;
+ Java_sun_awt_X11_XlibWrapper_XShapeQueryExtension;
+ Java_sun_awt_X11_XlibWrapper_SetRectangularShape;
+ Java_sun_awt_X11_XToolkit_initIDs;
+ Java_sun_awt_X11_XWindow_getNativeColor;
+ Java_sun_awt_X11_XWindow_getWMInsets;
+ Java_sun_awt_X11_XWindow_getTopWindow;
+ Java_sun_awt_X11_XWindow_getWindowBounds;
+ Java_sun_awt_X11_XWindow_setSizeHints;
+ Java_sun_awt_X11_XWindow_getAWTKeyCodeForKeySym;
+ Java_sun_awt_X11_XWindow_getKeySymForAWTKeyCode;
+ Java_sun_awt_X11_XToolkit_nativeLoadSystemColors;
+ Java_sun_awt_X11_XToolkit_awt_1toolkit_1init;
+ Java_sun_awt_X11_XToolkit_awt_1output_1flush;
+ Java_sun_awt_X11_XToolkit_wakeup_1poll;
+ Java_java_awt_Cursor_finalizeImpl;
+ Java_sun_awt_X11_XlibWrapper_InternAtom;
+ Java_sun_awt_X11_XlibWrapper_GetProperty;
+ Java_sun_awt_X11_XlibWrapper_SetProperty;
+ Java_sun_awt_X11_XlibWrapper_XGetDefault;
+ Java_sun_awt_X11_XlibWrapper_XGetPointerMapping;
+ Java_sun_awt_X11_XlibWrapper_XScreenNumberOfScreen;
+ Java_sun_awt_X11_XlibWrapper_getScreenOfWindow;
+ Java_sun_awt_X11_XlibWrapper_XIconifyWindow;
+ Java_sun_awt_X11_XlibWrapper_XBell;
+ Java_sun_awt_X11_XlibWrapper_XChangePropertyImpl;
+ Java_sun_awt_X11_XlibWrapper_XChangePropertyS;
+ Java_sun_awt_X11_XlibWrapper_XGetWindowProperty;
+ Java_sun_awt_X11_XlibWrapper_getStringBytes;
+ Java_sun_awt_X11_XlibWrapper_XFree;
+ Java_sun_awt_X11_XlibWrapper_ServerVendor;
+ Java_sun_awt_X11_XlibWrapper_VendorRelease;
+ Java_sun_awt_X11_XlibWrapper_SetToolkitErrorHandler;
+ Java_sun_awt_X11_XlibWrapper_XSetErrorHandler;
+ Java_sun_awt_X11_XlibWrapper_CallErrorHandler;
+ Java_sun_awt_X11_XlibWrapper_XInternAtoms;
+ Java_sun_awt_X11_XlibWrapper_XChangeWindowAttributes;
+ Java_sun_awt_X11_XlibWrapper_XDeleteProperty;
+ Java_sun_awt_X11_XlibWrapper_XSetWMNormalHints;
+ Java_sun_awt_X11_XlibWrapper_XGetWMNormalHints;
+ Java_sun_awt_X11_XlibWrapper_XSendEvent;
+ Java_sun_awt_X11_XlibWrapper_XQueryTree;
+ Java_sun_awt_X11_XlibWrapper_memcpy;
+ Java_sun_awt_X11_XlibWrapper_XdbeQueryExtension;
+ Java_sun_awt_X11_XlibWrapper_XQueryExtension;
+ Java_sun_awt_X11_XlibWrapper_IsKeypadKey;
+ Java_sun_awt_X11_XlibWrapper_XdbeAllocateBackBufferName;
+ Java_sun_awt_X11_XlibWrapper_XdbeDeallocateBackBufferName;
+ Java_sun_awt_X11_XlibWrapper_XdbeSwapBuffers;
+ Java_sun_awt_X11_XlibWrapper_XdbeBeginIdiom;
+ Java_sun_awt_X11_XlibWrapper_XdbeEndIdiom;
+ Java_sun_awt_X11_XDesktopPeer_init;
+ Java_sun_awt_X11_XDesktopPeer_gnome_1url_1show;
+ Java_sun_awt_X11_XRobotPeer_getRGBPixelsImpl;
+ Java_sun_awt_X11_XRobotPeer_keyPressImpl;
+ Java_sun_awt_X11_XRobotPeer_keyReleaseImpl;
+ Java_sun_awt_X11_XRobotPeer_mouseMoveImpl;
+ Java_sun_awt_X11_XRobotPeer_mousePressImpl;
+ Java_sun_awt_X11_XRobotPeer_mouseReleaseImpl;
+ Java_sun_awt_X11_XRobotPeer_mouseWheelImpl;
+ Java_sun_awt_X11_XRobotPeer_setup;
+ Java_java_awt_Component_initIDs;
+ Java_java_awt_Container_initIDs;
+ Java_java_awt_Button_initIDs;
+ Java_java_awt_Scrollbar_initIDs;
+ Java_java_awt_Window_initIDs;
+ Java_java_awt_Frame_initIDs;
+ Java_sun_awt_SunToolkit_closeSplashScreen;
+ Java_sun_awt_UNIXToolkit_check_1gtk;
+ Java_sun_awt_UNIXToolkit_load_1gtk;
+ Java_sun_awt_UNIXToolkit_unload_1gtk;
+ Java_sun_awt_UNIXToolkit_load_1stock_1icon;
+ Java_sun_awt_UNIXToolkit_load_1gtk_1icon;
+ Java_sun_awt_UNIXToolkit_nativeSync;
+ Java_java_awt_AWTEvent_initIDs;
+ Java_java_awt_event_InputEvent_initIDs;
+ Java_java_awt_event_KeyEvent_initIDs;
+ Java_java_awt_MenuComponent_initIDs;
+ Java_java_awt_Cursor_initIDs;
+ Java_java_awt_MenuItem_initIDs;
+ Java_java_awt_Menu_initIDs;
+ Java_java_awt_TextArea_initIDs;
+ Java_java_awt_Checkbox_initIDs;
+ Java_java_awt_ScrollPane_initIDs;
+ Java_java_awt_TextField_initIDs;
+ Java_java_awt_TrayIcon_initIDs;
+ Java_sun_font_FontManager_getFontConfig;
+ Java_sun_font_FontManager_getFontConfigAASettings;
+ Java_sun_font_FontManager_getFontPath;
+ Java_sun_font_FontManager_setNativeFontPath;
+ Java_sun_font_FontManager_populateFontFileNameMap;
+ Java_sun_awt_X11GraphicsEnvironment_initDisplay;
+ Java_sun_awt_X11GraphicsEnvironment_initGLX;
+ Java_sun_awt_X11GraphicsEnvironment_checkShmExt;
+ Java_sun_awt_X11GraphicsEnvironment_getNumScreens;
+ Java_sun_awt_X11GraphicsEnvironment_getDefaultScreenNum;
+ Java_sun_awt_X11GraphicsEnvironment_pRunningXinerama;
+ Java_sun_awt_X11GraphicsEnvironment_getXineramaCenterPoint;
+ Java_sun_awt_X11GraphicsEnvironment_getDisplayString;
+# Java_sun_awt_X11GraphicsEnvironment_getNativeFonts;
+ Java_sun_awt_X11GraphicsDevice_initIDs;
+ Java_sun_awt_X11GraphicsDevice_getConfigVisualId;
+ Java_sun_awt_X11GraphicsDevice_getConfigDepth;
+ Java_sun_awt_X11GraphicsDevice_getNumConfigs;
+ Java_sun_awt_X11GraphicsDevice_getConfigColormap;
+ Java_sun_awt_X11GraphicsDevice_isDBESupported;
+ Java_sun_awt_X11GraphicsDevice_getDisplay;
+ Java_sun_awt_X11GraphicsDevice_getDoubleBufferVisuals;
+ Java_sun_awt_X11GraphicsDevice_initXrandrExtension;
+ Java_sun_awt_X11GraphicsDevice_enterFullScreenExclusive;
+ Java_sun_awt_X11GraphicsDevice_exitFullScreenExclusive;
+ Java_sun_awt_X11GraphicsDevice_getCurrentDisplayMode;
+ Java_sun_awt_X11GraphicsDevice_enumDisplayModes;
+ Java_sun_awt_X11GraphicsDevice_configDisplayMode;
+ Java_sun_awt_X11GraphicsDevice_resetNativeData;
+ Java_sun_awt_X11GraphicsConfig_initIDs;
+ Java_sun_awt_X11GraphicsConfig_getXResolution;
+ Java_sun_awt_X11GraphicsConfig_getYResolution;
+ Java_sun_awt_X11GraphicsConfig_init;
+ Java_sun_awt_X11GraphicsConfig_dispose;
+ Java_sun_awt_X11GraphicsConfig_makeColorModel;
+ Java_sun_awt_X11GraphicsConfig_pGetBounds;
+ Java_sun_awt_X11GraphicsConfig_createBackBuffer;
+ Java_sun_awt_X11GraphicsConfig_destroyBackBuffer;
+ Java_sun_awt_X11GraphicsConfig_swapBuffers;
+ Java_java_awt_Insets_initIDs;
+ Java_java_awt_KeyboardFocusManager_initIDs;
+ Java_java_awt_Font_initIDs;
+ # libfontmanager entry points
+ AWTIsHeadless;
+ AWTCountFonts;
+ AWTLoadFont;
+ AWTFreeFont;
+ AWTFontAscent;
+ AWTFontDescent;
+ AWTFontMinByte1;
+ AWTFontMaxByte1;
+ AWTFontMinCharOrByte2;
+ AWTFontMaxCharOrByte2;
+ AWTFontDefaultChar;
+ AWTFontPerChar;
+ AWTFontMaxBounds;
+ AWTFontTextExtents16;
+ AWTFreeChar;
+ AWTFontGenerateImage;
+ AWTCharAdvance;
+ AWTCharLBearing;
+ AWTCharRBearing;
+ AWTCharAscent;
+ AWTCharDescent;
+ AWTDrawGlyphList;
+
+ Java_sun_awt_X11_XToolkit_waitForEvents;
+ Java_java_awt_Event_initIDs;
+ Java_sun_awt_motif_X11FontMetrics_initIDs;
+ Java_sun_awt_motif_X11FontMetrics_init;
+ Java_sun_awt_X11_XWindow_x11inputMethodLookupString;
+ Java_sun_awt_X11_XWindow_haveCurrentX11InputMethodInstance;
+ Java_java_awt_AWTEvent_nativeSetSource;
+ Java_java_awt_Dialog_initIDs;
+ Java_sun_awt_PlatformFont_initIDs;
+ Java_sun_awt_FontDescriptor_initIDs;
+ Java_sun_awt_X11_XFontPeer_initIDs;
+ Java_sun_awt_motif_X11FontMetrics_getMFCharsWidth;
+ Java_sun_awt_X11InputMethod_initIDs;
+ Java_sun_awt_X11InputMethod_resetXIC;
+ Java_sun_awt_X11InputMethod_disposeXIC;
+ Java_sun_awt_X11InputMethod_setCompositionEnabledNative;
+ Java_sun_awt_X11InputMethod_isCompositionEnabledNative;
+ Java_sun_awt_X11InputMethod_turnoffStatusWindow;
+ Java_sun_awt_X11_XInputMethod_openXIMNative;
+ Java_sun_awt_X11_XInputMethod_createXICNative;
+ Java_sun_awt_X11_XInputMethod_setXICFocusNative;
+ Java_sun_awt_X11_XInputMethod_adjustStatusWindow;
+ Java_sun_awt_X11_XlibWrapper_XQueryPointer;
+ Java_sun_awt_X11_XlibWrapper_XFreeCursor;
+ Java_sun_awt_X11_XToolkit_getDefaultXColormap;
+ Java_sun_awt_X11_XToolkit_getDefaultScreenData;
+ Java_sun_awt_X11_XToolkit_getEnv;
+ Java_sun_awt_X11_XToolkit_setNoisyXErrorHandler;
+ Java_sun_awt_X11_XlibWrapper_XCreateBitmapFromData;
+ Java_sun_awt_X11_XlibWrapper_XFreePixmap;
+ Java_sun_awt_X11_XlibWrapper_XAllocColor;
+ Java_sun_awt_X11_XlibWrapper_XCreatePixmapCursor;
+ Java_sun_awt_X11_XlibWrapper_XQueryBestCursor;
+ Java_sun_awt_X11_XlibWrapper_XCreatePixmap;
+ Java_sun_awt_X11_XlibWrapper_XCreateImage;
+ Java_sun_awt_X11_XlibWrapper_XCreateGC;
+ Java_sun_awt_X11_XlibWrapper_XDestroyImage;
+ Java_sun_awt_X11_XlibWrapper_XPutImage;
+ Java_sun_awt_X11_XlibWrapper_XFreeGC;
+ Java_sun_awt_X11_XlibWrapper_XSetWindowBackgroundPixmap;
+ Java_sun_awt_X11_XlibWrapper_XClearWindow;
+ Java_sun_awt_X11_XlibWrapper_XGetIconSizes;
+ Java_sun_awt_X11_XlibWrapper_XKeycodeToKeysym;
+ Java_sun_awt_X11_XlibWrapper_XKeysymToKeycode;
+ Java_sun_awt_X11_XlibWrapper_XGetModifierMapping;
+ Java_sun_awt_X11_XlibWrapper_XFreeModifiermap;
+ Java_sun_awt_X11_XlibWrapper_XChangeActivePointerGrab;
+ Java_sun_awt_X11_XlibWrapper_XNextSecondaryLoopEvent;
+ Java_sun_awt_X11_XlibWrapper_ExitSecondaryLoop;
+ Java_sun_awt_X11_XlibWrapper_XTextPropertyToStringList;
+ Java_sun_awt_X11_XlibWrapper_XGrabServer;
+ Java_sun_awt_X11_XlibWrapper_XUngrabServer;
+ Java_sun_awt_X11_XlibWrapper_XPutBackEvent;
+ Java_sun_awt_X11_XlibWrapper_XConvertCase;
+ Java_sun_awt_X11_XlibWrapper_XSynchronize;
+ Java_java_awt_FileDialog_initIDs;
+ Java_sun_awt_X11_XWindow_initIDs;
+
+ Java_sun_java2d_opengl_OGLMaskFill_maskFill;
+ Java_sun_java2d_opengl_OGLRenderer_drawPoly;
+ Java_sun_java2d_opengl_OGLRenderQueue_flushBuffer;
+ Java_sun_java2d_opengl_OGLSurfaceData_initTexture;
+ Java_sun_java2d_opengl_OGLSurfaceData_initFBObject;
+ Java_sun_java2d_opengl_OGLSurfaceData_initFlipBackbuffer;
+ Java_sun_java2d_opengl_OGLSurfaceData_getTextureTarget;
+ Java_sun_java2d_opengl_OGLTextRenderer_drawGlyphList;
+ Java_sun_java2d_opengl_GLXGraphicsConfig_getGLXConfigInfo;
+ Java_sun_java2d_opengl_GLXGraphicsConfig_initConfig;
+ Java_sun_java2d_opengl_GLXGraphicsConfig_getOGLCapabilities;
+ Java_sun_java2d_opengl_GLXSurfaceData_initOps;
+ Java_sun_java2d_opengl_GLXSurfaceData_initPbuffer;
+
+ Java_sun_java2d_x11_X11PMBlitBgLoops_nativeBlitBg;
+ Java_sun_java2d_x11_X11PMBlitLoops_nativeBlit;
+ Java_sun_java2d_x11_X11PMBlitLoops_updateBitmask;
+ Java_sun_java2d_x11_X11Renderer_XFillSpans;
+ Java_sun_java2d_x11_X11Renderer_XDrawArc;
+ Java_sun_java2d_x11_X11Renderer_XDrawLine;
+ Java_sun_java2d_x11_X11Renderer_XDrawOval;
+ Java_sun_java2d_x11_X11Renderer_XDrawPoly;
+ Java_sun_java2d_x11_X11Renderer_XDrawRect;
+ Java_sun_java2d_x11_X11Renderer_XDrawRoundRect;
+ Java_sun_java2d_x11_X11Renderer_XDoPath;
+ Java_sun_java2d_x11_X11Renderer_XFillArc;
+ Java_sun_java2d_x11_X11Renderer_XFillOval;
+ Java_sun_java2d_x11_X11Renderer_XFillPoly;
+ Java_sun_java2d_x11_X11Renderer_XFillRect;
+ Java_sun_java2d_x11_X11Renderer_XFillRoundRect;
+ Java_sun_java2d_x11_X11Renderer_devCopyArea;
+ Java_sun_java2d_x11_X11SurfaceData_setInvalid;
+ Java_sun_java2d_x11_X11SurfaceData_initIDs;
+ Java_sun_java2d_x11_X11SurfaceData_isDrawableValid;
+ Java_sun_java2d_x11_X11SurfaceData_isDgaAvailable;
+ Java_sun_java2d_x11_X11SurfaceData_initOps;
+ Java_sun_java2d_x11_X11SurfaceData_initSurface;
+ Java_sun_java2d_x11_X11SurfaceData_flushNativeSurface;
+ Java_sun_java2d_x11_X11SurfaceData_XCreateGC;
+ Java_sun_java2d_x11_X11SurfaceData_XResetClip;
+ Java_sun_java2d_x11_X11SurfaceData_XSetClip;
+ Java_sun_java2d_x11_X11SurfaceData_XSetCopyMode;
+ Java_sun_java2d_x11_X11SurfaceData_XSetXorMode;
+ Java_sun_java2d_x11_X11SurfaceData_XSetForeground;
+ Java_sun_java2d_x11_X11SurfaceData_XSetGraphicsExposures;
+
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1arrow;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1box;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1box_1gap;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1check;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1expander;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1extension;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1flat_1box;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1focus;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1handle;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1hline;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1option;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1shadow;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1slider;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1vline;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1background;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_nativeStartPainting;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_nativeFinishPainting;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1switch_1theme;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1get_1gtk_1setting;
+ Java_com_sun_java_swing_plaf_gtk_GTKEngine_nativeSetRangeValue;
+ Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetXThickness;
+ Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetYThickness;
+ Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetColorForState;
+ Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetClassValue;
+ Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetPangoFontName;
+
+ Java_sun_print_CUPSPrinter_initIDs;
+ Java_sun_print_CUPSPrinter_getCupsServer;
+ Java_sun_print_CUPSPrinter_getCupsPort;
+ Java_sun_print_CUPSPrinter_canConnect;
+ Java_sun_print_CUPSPrinter_getMedia;
+ Java_sun_print_CUPSPrinter_getPageSizes;
+
+ awt_GetDrawingSurface;
+ awt_FreeDrawingSurface;
+ awt_Unlock;
+ awt_Lock;
+ awt_GetComponent;
+
+ # Java Plugin
+ # This is in awt_LoadLibrary.c and falls through to libmawt.
+ # Evidently plugin needs this for backward compatability.
+ getAwtLockFunctions;
+ getAwtData;
+ getAwtDisplay;
+ #XAWT entry point for CDE
+ Java_sun_awt_motif_XsessionWMcommand;
+ Java_sun_awt_motif_XsessionWMcommand_New;
+
+ local:
+ *;
+};
diff --git a/jdk/make/sunw/Makefile b/jdk/make/sunw/Makefile
new file mode 100644
index 0000000..c45257f
--- /dev/null
+++ b/jdk/make/sunw/Makefile
@@ -0,0 +1,49 @@
+#
+# Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+BUILDDIR = ..
+PACKAGE = sunw
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+FILES_java = \
+ sunw/util/EventObject.java \
+ sunw/util/EventListener.java \
+ sunw/io/Serializable.java
+
+#
+# include rules
+#
+include $(BUILDDIR)/common/Rules.gmk
+
+#
+# Rules
+#
+clean clobber:: .delete.classlist
+ $(RM) -r $(CLASSBINDIR)/sunw
+
diff --git a/jdk/make/templates/bsd-header b/jdk/make/templates/bsd-header
new file mode 100644
index 0000000..12bc44a
--- /dev/null
+++ b/jdk/make/templates/bsd-header
@@ -0,0 +1,28 @@
+Copyright %YEARS% Sun Microsystems, Inc. All Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/jdk/make/templates/gpl-cp-header b/jdk/make/templates/gpl-cp-header
new file mode 100644
index 0000000..8645e29
--- /dev/null
+++ b/jdk/make/templates/gpl-cp-header
@@ -0,0 +1,22 @@
+Copyright %YEARS% Sun Microsystems, Inc. All Rights Reserved.
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+This code is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License version 2 only, as
+published by the Free Software Foundation. Sun designates this
+particular file as subject to the "Classpath" exception as provided
+by Sun in the LICENSE file that accompanied this code.
+
+This code 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
+version 2 for more details (a copy is included in the LICENSE file that
+accompanied this code).
+
+You should have received a copy of the GNU General Public License version
+2 along with this work; if not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+CA 95054 USA or visit www.sun.com if you need additional information or
+have any questions.
diff --git a/jdk/make/templates/gpl-header b/jdk/make/templates/gpl-header
new file mode 100644
index 0000000..07dbc05
--- /dev/null
+++ b/jdk/make/templates/gpl-header
@@ -0,0 +1,20 @@
+Copyright %YEARS% Sun Microsystems, Inc. All Rights Reserved.
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+This code is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License version 2 only, as
+published by the Free Software Foundation.
+
+This code 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
+version 2 for more details (a copy is included in the LICENSE file that
+accompanied this code).
+
+You should have received a copy of the GNU General Public License version
+2 along with this work; if not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+CA 95054 USA or visit www.sun.com if you need additional information or
+have any questions.
diff --git a/jdk/make/tools/GenerateCharacter/Character.c.template b/jdk/make/tools/GenerateCharacter/Character.c.template
new file mode 100644
index 0000000..3833f01
--- /dev/null
+++ b/jdk/make/tools/GenerateCharacter/Character.c.template
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+#include <ctype.h>
+
+#include "bool.h"
+#include "utf.h"
+
+ $$Tables
+
+/* Take pointer to a string. Skip over the longest part of the string that
+ * could be taken as a fieldname. Allow '/' if slash_okay is TRUE.
+ *
+ * Return a pointer to just past the fieldname. Return NULL if no fieldname
+ * at all was found, or in the case of slash_okay being true, we saw
+ * consecutive slashes (meaning we were looking for a qualified path but
+ * found something that was badly-formed).
+ */
+
+#define bool_t int
+
+char *
+skip_over_fieldname(char *name, bool_t slash_okay)
+{
+ char *p = name;
+ char *last_p;
+ unicode ch;
+ unicode last_ch = 0;
+
+ ch = *p;
+ if (ch == (ch & 0x7F))
+ ++p;
+ else
+ ch = next_utf2unicode(&p);
+ if (($$Lookup(ch) & $$bitJavaStart) == 0)
+ return 0;
+ for (;;) {
+ last_p = p;
+ last_ch = ch;
+ ch = *p;
+ if (ch == (ch & 0x7F))
+ ++p;
+ else
+ ch = next_utf2unicode(&p);
+ if (($$Lookup(ch) & $$bitJavaPart) == 0) {
+ if (ch == '/' && slash_okay) {
+ if (last_ch == '/')
+ return 0;
+ }
+ else {
+ return last_p;
+ }
+ }
+ }
+}
+
+void main() {
+ int j;
+ for (j = 0; j < (1 << 16); j++) {
+ int q = $$Lookup(j);
+ printf("%04x%s%s\n", j,
+ (q & $$bitJavaStart ? " Start" : ""),
+ (q & $$bitJavaPart ? " Part" : ""));
+ }
+}
diff --git a/jdk/make/tools/GenerateCharacter/CharacterData00.java.template b/jdk/make/tools/GenerateCharacter/CharacterData00.java.template
new file mode 100644
index 0000000..c790f37
--- /dev/null
+++ b/jdk/make/tools/GenerateCharacter/CharacterData00.java.template
@@ -0,0 +1,439 @@
+/*
+ * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.lang;
+
+/**
+ * The CharacterData00 class encapsulates the large tables once found in
+ * java.lang.Character
+*/
+
+class CharacterData00 extends CharacterData {
+ /* The character properties are currently encoded into 32 bits in the following manner:
+ 1 bit mirrored property
+ 4 bits directionality property
+ 9 bits signed offset used for converting case
+ 1 bit if 1, adding the signed offset converts the character to lowercase
+ 1 bit if 1, subtracting the signed offset converts the character to uppercase
+ 1 bit if 1, this character has a titlecase equivalent (possibly itself)
+ 3 bits 0 may not be part of an identifier
+ 1 ignorable control; may continue a Unicode identifier or Java identifier
+ 2 may continue a Java identifier but not a Unicode identifier (unused)
+ 3 may continue a Unicode identifier or Java identifier
+ 4 is a Java whitespace character
+ 5 may start or continue a Java identifier;
+ may continue but not start a Unicode identifier (underscores)
+ 6 may start or continue a Java identifier but not a Unicode identifier ($)
+ 7 may start or continue a Unicode identifier or Java identifier
+ Thus:
+ 5, 6, 7 may start a Java identifier
+ 1, 2, 3, 5, 6, 7 may continue a Java identifier
+ 7 may start a Unicode identifier
+ 1, 3, 5, 7 may continue a Unicode identifier
+ 1 is ignorable within an identifier
+ 4 is Java whitespace
+ 2 bits 0 this character has no numeric property
+ 1 adding the digit offset to the character code and then
+ masking with 0x1F will produce the desired numeric value
+ 2 this character has a "strange" numeric value
+ 3 a Java supradecimal digit: adding the digit offset to the
+ character code, then masking with 0x1F, then adding 10
+ will produce the desired numeric value
+ 5 bits digit offset
+ 5 bits character type
+
+ The encoding of character properties is subject to change at any time.
+ */
+
+ int getProperties(int ch) {
+ char offset = (char)ch;
+ int props = $$Lookup(offset);
+ return props;
+ }
+
+ int getType(int ch) {
+ int props = getProperties(ch);
+ return (props & $$maskType);
+ }
+
+ boolean isJavaIdentifierStart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) >= $$lowJavaStart);
+ }
+
+ boolean isJavaIdentifierPart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$nonzeroJavaPart) != 0);
+ }
+
+ boolean isUnicodeIdentifierStart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) == $$valueUnicodeStart);
+ }
+
+ boolean isUnicodeIdentifierPart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskUnicodePart) != 0);
+ }
+
+ boolean isIdentifierIgnorable(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) == $$valueIgnorable);
+ }
+
+ int toLowerCase(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskLowerCase) != 0) {
+ if ((val & $$maskCaseOffset) == $$maskCaseOffset) {
+ switch(ch) {
+ // map the offset overflow chars
+ case 0x0130 : mapChar = 0x0069; break;
+ case 0x2126 : mapChar = 0x03C9; break;
+ case 0x212A : mapChar = 0x006B; break;
+ case 0x212B : mapChar = 0x00E5; break;
+ // map the titlecase chars with both a 1:M uppercase map
+ // and a lowercase map
+ case 0x1F88 : mapChar = 0x1F80; break;
+ case 0x1F89 : mapChar = 0x1F81; break;
+ case 0x1F8A : mapChar = 0x1F82; break;
+ case 0x1F8B : mapChar = 0x1F83; break;
+ case 0x1F8C : mapChar = 0x1F84; break;
+ case 0x1F8D : mapChar = 0x1F85; break;
+ case 0x1F8E : mapChar = 0x1F86; break;
+ case 0x1F8F : mapChar = 0x1F87; break;
+ case 0x1F98 : mapChar = 0x1F90; break;
+ case 0x1F99 : mapChar = 0x1F91; break;
+ case 0x1F9A : mapChar = 0x1F92; break;
+ case 0x1F9B : mapChar = 0x1F93; break;
+ case 0x1F9C : mapChar = 0x1F94; break;
+ case 0x1F9D : mapChar = 0x1F95; break;
+ case 0x1F9E : mapChar = 0x1F96; break;
+ case 0x1F9F : mapChar = 0x1F97; break;
+ case 0x1FA8 : mapChar = 0x1FA0; break;
+ case 0x1FA9 : mapChar = 0x1FA1; break;
+ case 0x1FAA : mapChar = 0x1FA2; break;
+ case 0x1FAB : mapChar = 0x1FA3; break;
+ case 0x1FAC : mapChar = 0x1FA4; break;
+ case 0x1FAD : mapChar = 0x1FA5; break;
+ case 0x1FAE : mapChar = 0x1FA6; break;
+ case 0x1FAF : mapChar = 0x1FA7; break;
+ case 0x1FBC : mapChar = 0x1FB3; break;
+ case 0x1FCC : mapChar = 0x1FC3; break;
+ case 0x1FFC : mapChar = 0x1FF3; break;
+ // default mapChar is already set, so no
+ // need to redo it here.
+ // default : mapChar = ch;
+ }
+ }
+ else {
+ int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
+ mapChar = ch + offset;
+ }
+ }
+ return mapChar;
+ }
+
+ int toUpperCase(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskUpperCase) != 0) {
+ if ((val & $$maskCaseOffset) == $$maskCaseOffset) {
+ switch(ch) {
+ // map chars with overflow offsets
+ case 0x00B5 : mapChar = 0x039C; break;
+ case 0x017F : mapChar = 0x0053; break;
+ case 0x1FBE : mapChar = 0x0399; break;
+ // map char that have both a 1:1 and 1:M map
+ case 0x1F80 : mapChar = 0x1F88; break;
+ case 0x1F81 : mapChar = 0x1F89; break;
+ case 0x1F82 : mapChar = 0x1F8A; break;
+ case 0x1F83 : mapChar = 0x1F8B; break;
+ case 0x1F84 : mapChar = 0x1F8C; break;
+ case 0x1F85 : mapChar = 0x1F8D; break;
+ case 0x1F86 : mapChar = 0x1F8E; break;
+ case 0x1F87 : mapChar = 0x1F8F; break;
+ case 0x1F90 : mapChar = 0x1F98; break;
+ case 0x1F91 : mapChar = 0x1F99; break;
+ case 0x1F92 : mapChar = 0x1F9A; break;
+ case 0x1F93 : mapChar = 0x1F9B; break;
+ case 0x1F94 : mapChar = 0x1F9C; break;
+ case 0x1F95 : mapChar = 0x1F9D; break;
+ case 0x1F96 : mapChar = 0x1F9E; break;
+ case 0x1F97 : mapChar = 0x1F9F; break;
+ case 0x1FA0 : mapChar = 0x1FA8; break;
+ case 0x1FA1 : mapChar = 0x1FA9; break;
+ case 0x1FA2 : mapChar = 0x1FAA; break;
+ case 0x1FA3 : mapChar = 0x1FAB; break;
+ case 0x1FA4 : mapChar = 0x1FAC; break;
+ case 0x1FA5 : mapChar = 0x1FAD; break;
+ case 0x1FA6 : mapChar = 0x1FAE; break;
+ case 0x1FA7 : mapChar = 0x1FAF; break;
+ case 0x1FB3 : mapChar = 0x1FBC; break;
+ case 0x1FC3 : mapChar = 0x1FCC; break;
+ case 0x1FF3 : mapChar = 0x1FFC; break;
+ // ch must have a 1:M case mapping, but we
+ // can't handle it here. Return ch.
+ // since mapChar is already set, no need
+ // to redo it here.
+ //default : mapChar = ch;
+ }
+ }
+ else {
+ int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
+ mapChar = ch - offset;
+ }
+ }
+ return mapChar;
+ }
+
+ int toTitleCase(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskTitleCase) != 0) {
+ // There is a titlecase equivalent. Perform further checks:
+ if ((val & $$maskUpperCase) == 0) {
+ // The character does not have an uppercase equivalent, so it must
+ // already be uppercase; so add 1 to get the titlecase form.
+ mapChar = ch + 1;
+ }
+ else if ((val & $$maskLowerCase) == 0) {
+ // The character does not have a lowercase equivalent, so it must
+ // already be lowercase; so subtract 1 to get the titlecase form.
+ mapChar = ch - 1;
+ }
+ // else {
+ // The character has both an uppercase equivalent and a lowercase
+ // equivalent, so it must itself be a titlecase form; return it.
+ // return ch;
+ //}
+ }
+ else if ((val & $$maskUpperCase) != 0) {
+ // This character has no titlecase equivalent but it does have an
+ // uppercase equivalent, so use that (subtract the signed case offset).
+ mapChar = toUpperCase(ch);
+ }
+ return mapChar;
+ }
+
+ int digit(int ch, int radix) {
+ int value = -1;
+ if (radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX) {
+ int val = getProperties(ch);
+ int kind = val & $$maskType;
+ if (kind == Character.DECIMAL_DIGIT_NUMBER) {
+ value = ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit;
+ }
+ else if ((val & $$maskNumericType) == $$valueJavaSupradecimal) {
+ // Java supradecimal digit
+ value = (ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit) + 10;
+ }
+ }
+ return (value < radix) ? value : -1;
+ }
+
+ int getNumericValue(int ch) {
+ int val = getProperties(ch);
+ int retval = -1;
+
+ switch (val & $$maskNumericType) {
+ default: // cannot occur
+ case ($$valueNotNumeric): // not numeric
+ retval = -1;
+ break;
+ case ($$valueDigit): // simple numeric
+ retval = ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit;
+ break;
+ case ($$valueStrangeNumeric) : // "strange" numeric
+ switch (ch) {
+ case 0x0BF1: retval = 100; break; // TAMIL NUMBER ONE HUNDRED
+ case 0x0BF2: retval = 1000; break; // TAMIL NUMBER ONE THOUSAND
+ case 0x1375: retval = 40; break; // ETHIOPIC NUMBER FORTY
+ case 0x1376: retval = 50; break; // ETHIOPIC NUMBER FIFTY
+ case 0x1377: retval = 60; break; // ETHIOPIC NUMBER SIXTY
+ case 0x1378: retval = 70; break; // ETHIOPIC NUMBER SEVENTY
+ case 0x1379: retval = 80; break; // ETHIOPIC NUMBER EIGHTY
+ case 0x137A: retval = 90; break; // ETHIOPIC NUMBER NINETY
+ case 0x137B: retval = 100; break; // ETHIOPIC NUMBER HUNDRED
+ case 0x137C: retval = 10000; break; // ETHIOPIC NUMBER TEN THOUSAND
+ case 0x215F: retval = 1; break; // FRACTION NUMERATOR ONE
+ case 0x216C: retval = 50; break; // ROMAN NUMERAL FIFTY
+ case 0x216D: retval = 100; break; // ROMAN NUMERAL ONE HUNDRED
+ case 0x216E: retval = 500; break; // ROMAN NUMERAL FIVE HUNDRED
+ case 0x216F: retval = 1000; break; // ROMAN NUMERAL ONE THOUSAND
+ case 0x217C: retval = 50; break; // SMALL ROMAN NUMERAL FIFTY
+ case 0x217D: retval = 100; break; // SMALL ROMAN NUMERAL ONE HUNDRED
+ case 0x217E: retval = 500; break; // SMALL ROMAN NUMERAL FIVE HUNDRED
+ case 0x217F: retval = 1000; break; // SMALL ROMAN NUMERAL ONE THOUSAND
+ case 0x2180: retval = 1000; break; // ROMAN NUMERAL ONE THOUSAND C D
+ case 0x2181: retval = 5000; break; // ROMAN NUMERAL FIVE THOUSAND
+ case 0x2182: retval = 10000; break; // ROMAN NUMERAL TEN THOUSAND
+
+ case 0x325C: retval = 32; break;
+
+ case 0x325D: retval = 33; break; // CIRCLED NUMBER THIRTY THREE
+ case 0x325E: retval = 34; break; // CIRCLED NUMBER THIRTY FOUR
+ case 0x325F: retval = 35; break; // CIRCLED NUMBER THIRTY FIVE
+ case 0x32B1: retval = 36; break; // CIRCLED NUMBER THIRTY SIX
+ case 0x32B2: retval = 37; break; // CIRCLED NUMBER THIRTY SEVEN
+ case 0x32B3: retval = 38; break; // CIRCLED NUMBER THIRTY EIGHT
+ case 0x32B4: retval = 39; break; // CIRCLED NUMBER THIRTY NINE
+ case 0x32B5: retval = 40; break; // CIRCLED NUMBER FORTY
+ case 0x32B6: retval = 41; break; // CIRCLED NUMBER FORTY ONE
+ case 0x32B7: retval = 42; break; // CIRCLED NUMBER FORTY TWO
+ case 0x32B8: retval = 43; break; // CIRCLED NUMBER FORTY THREE
+ case 0x32B9: retval = 44; break; // CIRCLED NUMBER FORTY FOUR
+ case 0x32BA: retval = 45; break; // CIRCLED NUMBER FORTY FIVE
+ case 0x32BB: retval = 46; break; // CIRCLED NUMBER FORTY SIX
+ case 0x32BC: retval = 47; break; // CIRCLED NUMBER FORTY SEVEN
+ case 0x32BD: retval = 48; break; // CIRCLED NUMBER FORTY EIGHT
+ case 0x32BE: retval = 49; break; // CIRCLED NUMBER FORTY NINE
+ case 0x32BF: retval = 50; break; // CIRCLED NUMBER FIFTY
+
+ default: retval = -2; break;
+ }
+ break;
+ case ($$valueJavaSupradecimal): // Java supradecimal
+ retval = (ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit) + 10;
+ break;
+ }
+ return retval;
+ }
+
+ boolean isWhitespace(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) == $$valueJavaWhitespace);
+ }
+
+ byte getDirectionality(int ch) {
+ int val = getProperties(ch);
+ byte directionality = (byte)((val & $$maskBidi) >> $$shiftBidi);
+ if (directionality == 0xF ) {
+ switch(ch) {
+ case 0x202A :
+ // This is the only char with LRE
+ directionality = Character.DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING;
+ break;
+ case 0x202B :
+ // This is the only char with RLE
+ directionality = Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING;
+ break;
+ case 0x202C :
+ // This is the only char with PDF
+ directionality = Character.DIRECTIONALITY_POP_DIRECTIONAL_FORMAT;
+ break;
+ case 0x202D :
+ // This is the only char with LRO
+ directionality = Character.DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE;
+ break;
+ case 0x202E :
+ // This is the only char with RLO
+ directionality = Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE;
+ break;
+ default :
+ directionality = Character.DIRECTIONALITY_UNDEFINED;
+ break;
+ }
+ }
+ return directionality;
+ }
+
+ boolean isMirrored(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskMirrored) != 0);
+ }
+
+ int toUpperCaseEx(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskUpperCase) != 0) {
+ if ((val & $$maskCaseOffset) != $$maskCaseOffset) {
+ int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
+ mapChar = ch - offset;
+ }
+ else {
+ switch(ch) {
+ // map overflow characters
+ case 0x00B5 : mapChar = 0x039C; break;
+ case 0x017F : mapChar = 0x0053; break;
+ case 0x1FBE : mapChar = 0x0399; break;
+ default : mapChar = Character.ERROR; break;
+ }
+ }
+ }
+ return mapChar;
+ }
+
+ char[] toUpperCaseCharArray(int ch) {
+ char[] upperMap = {(char)ch};
+ int location = findInCharMap(ch);
+ if (location != -1) {
+ upperMap = charMap[location][1];
+ }
+ return upperMap;
+ }
+
+
+ /**
+ * Finds the character in the uppercase mapping table.
+ *
+ * @param ch the <code>char</code> to search
+ * @return the index location ch in the table or -1 if not found
+ * @since 1.4
+ */
+ int findInCharMap(int ch) {
+ if (charMap == null || charMap.length == 0) {
+ return -1;
+ }
+ int top, bottom, current;
+ bottom = 0;
+ top = charMap.length;
+ current = top/2;
+ // invariant: top > current >= bottom && ch >= CharacterData.charMap[bottom][0]
+ while (top - bottom > 1) {
+ if (ch >= charMap[current][0][0]) {
+ bottom = current;
+ } else {
+ top = current;
+ }
+ current = (top + bottom) / 2;
+ }
+ if (ch == charMap[current][0][0]) return current;
+ else return -1;
+ }
+
+ static final CharacterData00 instance = new CharacterData00();
+ private CharacterData00() {};
+
+ $$Tables
+
+ static {
+ $$Initializers
+ }
+}
diff --git a/jdk/make/tools/GenerateCharacter/CharacterData01.java.template b/jdk/make/tools/GenerateCharacter/CharacterData01.java.template
new file mode 100644
index 0000000..9a228b7
--- /dev/null
+++ b/jdk/make/tools/GenerateCharacter/CharacterData01.java.template
@@ -0,0 +1,259 @@
+/*
+ * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.lang;
+
+/** The CharacterData class encapsulates the large tables once found in
+ * java.lang.Character.
+ */
+
+class CharacterData01 extends CharacterData {
+ /* The character properties are currently encoded into 32 bits in the following manner:
+ 1 bit mirrored property
+ 4 bits directionality property
+ 9 bits signed offset used for converting case
+ 1 bit if 1, adding the signed offset converts the character to lowercase
+ 1 bit if 1, subtracting the signed offset converts the character to uppercase
+ 1 bit if 1, this character has a titlecase equivalent (possibly itself)
+ 3 bits 0 may not be part of an identifier
+ 1 ignorable control; may continue a Unicode identifier or Java identifier
+ 2 may continue a Java identifier but not a Unicode identifier (unused)
+ 3 may continue a Unicode identifier or Java identifier
+ 4 is a Java whitespace character
+ 5 may start or continue a Java identifier;
+ may continue but not start a Unicode identifier (underscores)
+ 6 may start or continue a Java identifier but not a Unicode identifier ($)
+ 7 may start or continue a Unicode identifier or Java identifier
+ Thus:
+ 5, 6, 7 may start a Java identifier
+ 1, 2, 3, 5, 6, 7 may continue a Java identifier
+ 7 may start a Unicode identifier
+ 1, 3, 5, 7 may continue a Unicode identifier
+ 1 is ignorable within an identifier
+ 4 is Java whitespace
+ 2 bits 0 this character has no numeric property
+ 1 adding the digit offset to the character code and then
+ masking with 0x1F will produce the desired numeric value
+ 2 this character has a "strange" numeric value
+ 3 a Java supradecimal digit: adding the digit offset to the
+ character code, then masking with 0x1F, then adding 10
+ will produce the desired numeric value
+ 5 bits digit offset
+ 5 bits character type
+
+ The encoding of character properties is subject to change at any time.
+ */
+
+ int getProperties(int ch) {
+ char offset = (char)ch;
+ int props = $$Lookup(offset);
+ return props;
+ }
+
+ int getType(int ch) {
+ int props = getProperties(ch);
+ return (props & $$maskType);
+ }
+
+ boolean isJavaIdentifierStart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) >= $$lowJavaStart);
+ }
+
+ boolean isJavaIdentifierPart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$nonzeroJavaPart) != 0);
+ }
+
+ boolean isUnicodeIdentifierStart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) == $$valueUnicodeStart);
+ }
+
+ boolean isUnicodeIdentifierPart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskUnicodePart) != 0);
+ }
+
+ boolean isIdentifierIgnorable(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) == $$valueIgnorable);
+ }
+
+ int toLowerCase(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskLowerCase) != 0) {
+ int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
+ mapChar = ch + offset;
+ }
+ return mapChar;
+ }
+
+ int toUpperCase(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskUpperCase) != 0) {
+ int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
+ mapChar = ch - offset;
+ }
+ return mapChar;
+ }
+
+ int toTitleCase(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskTitleCase) != 0) {
+ // There is a titlecase equivalent. Perform further checks:
+ if ((val & $$maskUpperCase) == 0) {
+ // The character does not have an uppercase equivalent, so it must
+ // already be uppercase; so add 1 to get the titlecase form.
+ mapChar = ch + 1;
+ }
+ else if ((val & $$maskLowerCase) == 0) {
+ // The character does not have a lowercase equivalent, so it must
+ // already be lowercase; so subtract 1 to get the titlecase form.
+ mapChar = ch - 1;
+ }
+ // else {
+ // The character has both an uppercase equivalent and a lowercase
+ // equivalent, so it must itself be a titlecase form; return it.
+ // return ch;
+ //}
+ }
+ else if ((val & $$maskUpperCase) != 0) {
+ // This character has no titlecase equivalent but it does have an
+ // uppercase equivalent, so use that (subtract the signed case offset).
+ mapChar = toUpperCase(ch);
+ }
+ return mapChar;
+ }
+
+ int digit(int ch, int radix) {
+ int value = -1;
+ if (radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX) {
+ int val = getProperties(ch);
+ int kind = val & $$maskType;
+ if (kind == Character.DECIMAL_DIGIT_NUMBER) {
+ value = ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit;
+ }
+ else if ((val & $$maskNumericType) == $$valueJavaSupradecimal) {
+ // Java supradecimal digit
+ value = (ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit) + 10;
+ }
+ }
+ return (value < radix) ? value : -1;
+ }
+
+ int getNumericValue(int ch) {
+ int val = getProperties(ch);
+ int retval = -1;
+
+ switch (val & $$maskNumericType) {
+ default: // cannot occur
+ case ($$valueNotNumeric): // not numeric
+ retval = -1;
+ break;
+ case ($$valueDigit): // simple numeric
+ retval = ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit;
+ break;
+ case ($$valueStrangeNumeric) : // "strange" numeric
+ switch(ch) {
+ case 0x10113: retval = 40; break; // AEGEAN NUMBER FORTY
+ case 0x10114: retval = 50; break; // AEGEAN NUMBER FIFTY
+ case 0x10115: retval = 60; break; // AEGEAN NUMBER SIXTY
+ case 0x10116: retval = 70; break; // AEGEAN NUMBER SEVENTY
+ case 0x10117: retval = 80; break; // AEGEAN NUMBER EIGHTY
+ case 0x10118: retval = 90; break; // AEGEAN NUMBER NINETY
+ case 0x10119: retval = 100; break; // AEGEAN NUMBER ONE HUNDRED
+ case 0x1011A: retval = 200; break; // AEGEAN NUMBER TWO HUNDRED
+ case 0x1011B: retval = 300; break; // AEGEAN NUMBER THREE HUNDRED
+ case 0x1011C: retval = 400; break; // AEGEAN NUMBER FOUR HUNDRED
+ case 0x1011D: retval = 500; break; // AEGEAN NUMBER FIVE HUNDRED
+ case 0x1011E: retval = 600; break; // AEGEAN NUMBER SIX HUNDRED
+ case 0x1011F: retval = 700; break; // AEGEAN NUMBER SEVEN HUNDRED
+ case 0x10120: retval = 800; break; // AEGEAN NUMBER EIGHT HUNDRED
+ case 0x10121: retval = 900; break; // AEGEAN NUMBER NINE HUNDRED
+ case 0x10122: retval = 1000; break; // AEGEAN NUMBER ONE THOUSAND
+ case 0x10123: retval = 2000; break; // AEGEAN NUMBER TWO THOUSAND
+ case 0x10124: retval = 3000; break; // AEGEAN NUMBER THREE THOUSAND
+ case 0x10125: retval = 4000; break; // AEGEAN NUMBER FOUR THOUSAND
+ case 0x10126: retval = 5000; break; // AEGEAN NUMBER FIVE THOUSAND
+ case 0x10127: retval = 6000; break; // AEGEAN NUMBER SIX THOUSAND
+ case 0x10128: retval = 7000; break; // AEGEAN NUMBER SEVEN THOUSAND
+ case 0x10129: retval = 8000; break; // AEGEAN NUMBER EIGHT THOUSAND
+ case 0x1012A: retval = 9000; break; // AEGEAN NUMBER NINE THOUSAND
+ case 0x1012B: retval = 10000; break; // AEGEAN NUMBER TEN THOUSAND
+ case 0x1012C: retval = 20000; break; // AEGEAN NUMBER TWENTY THOUSAND
+ case 0x1012D: retval = 30000; break; // AEGEAN NUMBER THIRTY THOUSAND
+ case 0x1012E: retval = 40000; break; // AEGEAN NUMBER FORTY THOUSAND
+ case 0x1012F: retval = 50000; break; // AEGEAN NUMBER FIFTY THOUSAND
+ case 0x10130: retval = 60000; break; // AEGEAN NUMBER SIXTY THOUSAND
+ case 0x10131: retval = 70000; break; // AEGEAN NUMBER SEVENTY THOUSAND
+ case 0x10132: retval = 80000; break; // AEGEAN NUMBER EIGHTY THOUSAND
+ case 0x10133: retval = 90000; break; // AEGEAN NUMBER NINETY THOUSAND
+ case 0x10323: retval = 50; break; // OLD ITALIC NUMERAL FIFTY
+ default: retval = -2; break;
+ }
+
+ break;
+ case ($$valueJavaSupradecimal): // Java supradecimal
+ retval = (ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit) + 10;
+ break;
+ }
+ return retval;
+ }
+
+ boolean isWhitespace(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) == $$valueJavaWhitespace);
+ }
+
+ byte getDirectionality(int ch) {
+ int val = getProperties(ch);
+ byte directionality = (byte)((val & $$maskBidi) >> $$shiftBidi);
+ if (directionality == 0xF ) {
+ directionality = Character.DIRECTIONALITY_UNDEFINED;
+ }
+ return directionality;
+ }
+
+ boolean isMirrored(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskMirrored) != 0);
+ }
+
+ static final CharacterData instance = new CharacterData01();
+ private CharacterData01() {};
+
+ $$Tables
+
+ static {
+ $$Initializers
+ }
+}
diff --git a/jdk/make/tools/GenerateCharacter/CharacterData02.java.template b/jdk/make/tools/GenerateCharacter/CharacterData02.java.template
new file mode 100644
index 0000000..38a63b4
--- /dev/null
+++ b/jdk/make/tools/GenerateCharacter/CharacterData02.java.template
@@ -0,0 +1,219 @@
+/*
+ * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.lang;
+
+/** The CharacterData class encapsulates the large tables found in
+ Java.lang.Character. */
+
+class CharacterData02 extends CharacterData {
+ /* The character properties are currently encoded into 32 bits in the following manner:
+ 1 bit mirrored property
+ 4 bits directionality property
+ 9 bits signed offset used for converting case
+ 1 bit if 1, adding the signed offset converts the character to lowercase
+ 1 bit if 1, subtracting the signed offset converts the character to uppercase
+ 1 bit if 1, this character has a titlecase equivalent (possibly itself)
+ 3 bits 0 may not be part of an identifier
+ 1 ignorable control; may continue a Unicode identifier or Java identifier
+ 2 may continue a Java identifier but not a Unicode identifier (unused)
+ 3 may continue a Unicode identifier or Java identifier
+ 4 is a Java whitespace character
+ 5 may start or continue a Java identifier;
+ may continue but not start a Unicode identifier (underscores)
+ 6 may start or continue a Java identifier but not a Unicode identifier ($)
+ 7 may start or continue a Unicode identifier or Java identifier
+ Thus:
+ 5, 6, 7 may start a Java identifier
+ 1, 2, 3, 5, 6, 7 may continue a Java identifier
+ 7 may start a Unicode identifier
+ 1, 3, 5, 7 may continue a Unicode identifier
+ 1 is ignorable within an identifier
+ 4 is Java whitespace
+ 2 bits 0 this character has no numeric property
+ 1 adding the digit offset to the character code and then
+ masking with 0x1F will produce the desired numeric value
+ 2 this character has a "strange" numeric value
+ 3 a Java supradecimal digit: adding the digit offset to the
+ character code, then masking with 0x1F, then adding 10
+ will produce the desired numeric value
+ 5 bits digit offset
+ 5 bits character type
+
+ The encoding of character properties is subject to change at any time.
+ */
+
+ int getProperties(int ch) {
+ char offset = (char)ch;
+ int props = $$Lookup(offset);
+ return props;
+ }
+
+ int getType(int ch) {
+ int props = getProperties(ch);
+ return (props & $$maskType);
+ }
+
+ boolean isJavaIdentifierStart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) >= $$lowJavaStart);
+ }
+
+ boolean isJavaIdentifierPart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$nonzeroJavaPart) != 0);
+ }
+
+ boolean isUnicodeIdentifierStart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) == $$valueUnicodeStart);
+ }
+
+ boolean isUnicodeIdentifierPart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskUnicodePart) != 0);
+ }
+
+ boolean isIdentifierIgnorable(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) == $$valueIgnorable);
+ }
+
+ int toLowerCase(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskLowerCase) != 0) {
+ int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
+ mapChar = ch + offset;
+ }
+ return mapChar;
+ }
+
+ int toUpperCase(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskUpperCase) != 0) {
+ int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
+ mapChar = ch - offset;
+ }
+ return mapChar;
+ }
+
+ int toTitleCase(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskTitleCase) != 0) {
+ // There is a titlecase equivalent. Perform further checks:
+ if ((val & $$maskUpperCase) == 0) {
+ // The character does not have an uppercase equivalent, so it must
+ // already be uppercase; so add 1 to get the titlecase form.
+ mapChar = ch + 1;
+ }
+ else if ((val & $$maskLowerCase) == 0) {
+ // The character does not have a lowercase equivalent, so it must
+ // already be lowercase; so subtract 1 to get the titlecase form.
+ mapChar = ch - 1;
+ }
+ // else {
+ // The character has both an uppercase equivalent and a lowercase
+ // equivalent, so it must itself be a titlecase form; return it.
+ // return ch;
+ //}
+ }
+ else if ((val & $$maskUpperCase) != 0) {
+ // This character has no titlecase equivalent but it does have an
+ // uppercase equivalent, so use that (subtract the signed case offset).
+ mapChar = toUpperCase(ch);
+ }
+ return mapChar;
+ }
+
+ int digit(int ch, int radix) {
+ int value = -1;
+ if (radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX) {
+ int val = getProperties(ch);
+ int kind = val & $$maskType;
+ if (kind == Character.DECIMAL_DIGIT_NUMBER) {
+ value = ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit;
+ }
+ else if ((val & $$maskNumericType) == $$valueJavaSupradecimal) {
+ // Java supradecimal digit
+ value = (ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit) + 10;
+ }
+ }
+ return (value < radix) ? value : -1;
+ }
+
+ int getNumericValue(int ch) {
+ int val = getProperties(ch);
+ int retval = -1;
+
+ switch (val & $$maskNumericType) {
+ default: // cannot occur
+ case ($$valueNotNumeric): // not numeric
+ retval = -1;
+ break;
+ case ($$valueDigit): // simple numeric
+ retval = ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit;
+ break;
+ case ($$valueStrangeNumeric) : // "strange" numeric
+ retval = -2;
+ break;
+ case ($$valueJavaSupradecimal): // Java supradecimal
+ retval = (ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit) + 10;
+ break;
+ }
+ return retval;
+ }
+
+ boolean isWhitespace(int ch) {
+ return (getProperties(ch) & $$maskIdentifierInfo) == $$valueJavaWhitespace;
+ }
+
+ byte getDirectionality(int ch) {
+ int val = getProperties(ch);
+ byte directionality = (byte)((val & $$maskBidi) >> $$shiftBidi);
+ if (directionality == 0xF ) {
+ directionality = Character.DIRECTIONALITY_UNDEFINED;
+ }
+ return directionality;
+ }
+
+ boolean isMirrored(int ch) {
+ return (getProperties(ch) & $$maskMirrored) != 0;
+ }
+
+ static final CharacterData instance = new CharacterData02();
+ private CharacterData02() {};
+
+ $$Tables
+
+ static {
+ $$Initializers
+ }
+}
diff --git a/jdk/make/tools/GenerateCharacter/CharacterData0E.java.template b/jdk/make/tools/GenerateCharacter/CharacterData0E.java.template
new file mode 100644
index 0000000..f0df25e
--- /dev/null
+++ b/jdk/make/tools/GenerateCharacter/CharacterData0E.java.template
@@ -0,0 +1,221 @@
+/*
+ * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.lang;
+
+/** The CharacterData class encapsulates the large tables found in
+ Java.lang.Character. */
+
+class CharacterData0E extends CharacterData {
+ /* The character properties are currently encoded into 32 bits in the following manner:
+ 1 bit mirrored property
+ 4 bits directionality property
+ 9 bits signed offset used for converting case
+ 1 bit if 1, adding the signed offset converts the character to lowercase
+ 1 bit if 1, subtracting the signed offset converts the character to uppercase
+ 1 bit if 1, this character has a titlecase equivalent (possibly itself)
+ 3 bits 0 may not be part of an identifier
+ 1 ignorable control; may continue a Unicode identifier or Java identifier
+ 2 may continue a Java identifier but not a Unicode identifier (unused)
+ 3 may continue a Unicode identifier or Java identifier
+ 4 is a Java whitespace character
+ 5 may start or continue a Java identifier;
+ may continue but not start a Unicode identifier (underscores)
+ 6 may start or continue a Java identifier but not a Unicode identifier ($)
+ 7 may start or continue a Unicode identifier or Java identifier
+ Thus:
+ 5, 6, 7 may start a Java identifier
+ 1, 2, 3, 5, 6, 7 may continue a Java identifier
+ 7 may start a Unicode identifier
+ 1, 3, 5, 7 may continue a Unicode identifier
+ 1 is ignorable within an identifier
+ 4 is Java whitespace
+ 2 bits 0 this character has no numeric property
+ 1 adding the digit offset to the character code and then
+ masking with 0x1F will produce the desired numeric value
+ 2 this character has a "strange" numeric value
+ 3 a Java supradecimal digit: adding the digit offset to the
+ character code, then masking with 0x1F, then adding 10
+ will produce the desired numeric value
+ 5 bits digit offset
+ 5 bits character type
+
+ The encoding of character properties is subject to change at any time.
+ */
+
+ int getProperties(int ch) {
+ char offset = (char)ch;
+ int props = $$Lookup(offset);
+ return props;
+ }
+
+ int getType(int ch) {
+ int props = getProperties(ch);
+ return (props & $$maskType);
+ }
+
+ boolean isJavaIdentifierStart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) >= $$lowJavaStart);
+ }
+
+ boolean isJavaIdentifierPart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$nonzeroJavaPart) != 0);
+ }
+
+ boolean isUnicodeIdentifierStart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) == $$valueUnicodeStart);
+ }
+
+ boolean isUnicodeIdentifierPart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskUnicodePart) != 0);
+ }
+
+ boolean isIdentifierIgnorable(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) == $$valueIgnorable);
+ }
+
+ int toLowerCase(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskLowerCase) != 0) {
+ int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
+ mapChar = ch + offset;
+ }
+ return mapChar;
+ }
+
+ int toUpperCase(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskUpperCase) != 0) {
+ int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
+ mapChar = ch - offset;
+ }
+ return mapChar;
+ }
+
+ int toTitleCase(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskTitleCase) != 0) {
+ // There is a titlecase equivalent. Perform further checks:
+ if ((val & $$maskUpperCase) == 0) {
+ // The character does not have an uppercase equivalent, so it must
+ // already be uppercase; so add 1 to get the titlecase form.
+ mapChar = ch + 1;
+ }
+ else if ((val & $$maskLowerCase) == 0) {
+ // The character does not have a lowercase equivalent, so it must
+ // already be lowercase; so subtract 1 to get the titlecase form.
+ mapChar = ch - 1;
+ }
+ // else {
+ // The character has both an uppercase equivalent and a lowercase
+ // equivalent, so it must itself be a titlecase form; return it.
+ // return ch;
+ //}
+ }
+ else if ((val & $$maskUpperCase) != 0) {
+ // This character has no titlecase equivalent but it does have an
+ // uppercase equivalent, so use that (subtract the signed case offset).
+ mapChar = toUpperCase(ch);
+ }
+ return mapChar;
+ }
+
+ int digit(int ch, int radix) {
+ int value = -1;
+ if (radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX) {
+ int val = getProperties(ch);
+ int kind = val & $$maskType;
+ if (kind == Character.DECIMAL_DIGIT_NUMBER) {
+ value = ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit;
+ }
+ else if ((val & $$maskNumericType) == $$valueJavaSupradecimal) {
+ // Java supradecimal digit
+ value = (ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit) + 10;
+ }
+ }
+ return (value < radix) ? value : -1;
+ }
+
+ int getNumericValue(int ch) {
+ int val = getProperties(ch);
+ int retval = -1;
+
+ switch (val & $$maskNumericType) {
+ default: // cannot occur
+ case ($$valueNotNumeric): // not numeric
+ retval = -1;
+ break;
+ case ($$valueDigit): // simple numeric
+ retval = ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit;
+ break;
+ case ($$valueStrangeNumeric) : // "strange" numeric
+ retval = -2;
+ break;
+ case ($$valueJavaSupradecimal): // Java supradecimal
+ retval = (ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit) + 10;
+ break;
+ }
+ return retval;
+ }
+
+ boolean isWhitespace(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) == $$valueJavaWhitespace);
+ }
+
+ byte getDirectionality(int ch) {
+ int val = getProperties(ch);
+ byte directionality = (byte)((val & $$maskBidi) >> $$shiftBidi);
+ if (directionality == 0xF ) {
+ directionality = Character.DIRECTIONALITY_UNDEFINED;
+ }
+ return directionality;
+ }
+
+ boolean isMirrored(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskMirrored) != 0);
+ }
+
+ static final CharacterData instance = new CharacterData0E();
+ private CharacterData0E() {};
+
+ $$Tables
+
+ static {
+ $$Initializers
+ }
+}
diff --git a/jdk/make/tools/GenerateCharacter/CharacterDataLatin1.java.template b/jdk/make/tools/GenerateCharacter/CharacterDataLatin1.java.template
new file mode 100644
index 0000000..4669a7c
--- /dev/null
+++ b/jdk/make/tools/GenerateCharacter/CharacterDataLatin1.java.template
@@ -0,0 +1,233 @@
+/*
+ * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.lang;
+
+/** The CharacterData class encapsulates the large tables found in
+ Java.lang.Character. */
+
+class CharacterDataLatin1 extends CharacterData {
+
+ /* The character properties are currently encoded into 32 bits in the following manner:
+ 1 bit mirrored property
+ 4 bits directionality property
+ 9 bits signed offset used for converting case
+ 1 bit if 1, adding the signed offset converts the character to lowercase
+ 1 bit if 1, subtracting the signed offset converts the character to uppercase
+ 1 bit if 1, this character has a titlecase equivalent (possibly itself)
+ 3 bits 0 may not be part of an identifier
+ 1 ignorable control; may continue a Unicode identifier or Java identifier
+ 2 may continue a Java identifier but not a Unicode identifier (unused)
+ 3 may continue a Unicode identifier or Java identifier
+ 4 is a Java whitespace character
+ 5 may start or continue a Java identifier;
+ may continue but not start a Unicode identifier (underscores)
+ 6 may start or continue a Java identifier but not a Unicode identifier ($)
+ 7 may start or continue a Unicode identifier or Java identifier
+ Thus:
+ 5, 6, 7 may start a Java identifier
+ 1, 2, 3, 5, 6, 7 may continue a Java identifier
+ 7 may start a Unicode identifier
+ 1, 3, 5, 7 may continue a Unicode identifier
+ 1 is ignorable within an identifier
+ 4 is Java whitespace
+ 2 bits 0 this character has no numeric property
+ 1 adding the digit offset to the character code and then
+ masking with 0x1F will produce the desired numeric value
+ 2 this character has a "strange" numeric value
+ 3 a Java supradecimal digit: adding the digit offset to the
+ character code, then masking with 0x1F, then adding 10
+ will produce the desired numeric value
+ 5 bits digit offset
+ 5 bits character type
+
+ The encoding of character properties is subject to change at any time.
+ */
+
+ int getProperties(int ch) {
+ char offset = (char)ch;
+ int props = $$Lookup(offset);
+ return props;
+ }
+
+ int getType(int ch) {
+ int props = getProperties(ch);
+ return (props & $$maskType);
+ }
+
+ boolean isJavaIdentifierStart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) >= $$lowJavaStart);
+ }
+
+ boolean isJavaIdentifierPart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$nonzeroJavaPart) != 0);
+ }
+
+ boolean isUnicodeIdentifierStart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) == $$valueUnicodeStart);
+ }
+
+ boolean isUnicodeIdentifierPart(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskUnicodePart) != 0);
+ }
+
+ boolean isIdentifierIgnorable(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) == $$valueIgnorable);
+ }
+
+ int toLowerCase(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if (((val & $$maskLowerCase) != 0) &&
+ ((val & $$maskCaseOffset) != $$maskCaseOffset)) {
+ int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
+ mapChar = ch + offset;
+ }
+ return mapChar;
+ }
+
+ int toUpperCase(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskUpperCase) != 0) {
+ if ((val & $$maskCaseOffset) != $$maskCaseOffset) {
+ int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
+ mapChar = ch - offset;
+ } else if (ch == 0x00B5) {
+ mapChar = 0x039C;
+ }
+ }
+ return mapChar;
+ }
+
+ int toTitleCase(int ch) {
+ return toUpperCase(ch);
+ }
+
+ int digit(int ch, int radix) {
+ int value = -1;
+ if (radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX) {
+ int val = getProperties(ch);
+ int kind = val & $$maskType;
+ if (kind == Character.DECIMAL_DIGIT_NUMBER) {
+ value = ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit;
+ }
+ else if ((val & $$maskNumericType) == $$valueJavaSupradecimal) {
+ // Java supradecimal digit
+ value = (ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit) + 10;
+ }
+ }
+ return (value < radix) ? value : -1;
+ }
+
+ int getNumericValue(int ch) {
+ int val = getProperties(ch);
+ int retval = -1;
+
+ switch (val & $$maskNumericType) {
+ default: // cannot occur
+ case ($$valueNotNumeric): // not numeric
+ retval = -1;
+ break;
+ case ($$valueDigit): // simple numeric
+ retval = ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit;
+ break;
+ case ($$valueStrangeNumeric) : // "strange" numeric
+ retval = -2;
+ break;
+ case ($$valueJavaSupradecimal): // Java supradecimal
+ retval = (ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit) + 10;
+ break;
+ }
+ return retval;
+ }
+
+ boolean isWhitespace(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskIdentifierInfo) == $$valueJavaWhitespace);
+ }
+
+ byte getDirectionality(int ch) {
+ int val = getProperties(ch);
+ byte directionality = (byte)((val & $$maskBidi) >> $$shiftBidi);
+
+ if (directionality == 0xF ) {
+ directionality = -1;
+ }
+ return directionality;
+ }
+
+ boolean isMirrored(int ch) {
+ int props = getProperties(ch);
+ return ((props & $$maskMirrored) != 0);
+ }
+
+ int toUpperCaseEx(int ch) {
+ int mapChar = ch;
+ int val = getProperties(ch);
+
+ if ((val & $$maskUpperCase) != 0) {
+ if ((val & $$maskCaseOffset) != $$maskCaseOffset) {
+ int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
+ mapChar = ch - offset;
+ }
+ else {
+ switch(ch) {
+ // map overflow characters
+ case 0x00B5 : mapChar = 0x039C; break;
+ default : mapChar = Character.ERROR; break;
+ }
+ }
+ }
+ return mapChar;
+ }
+
+ static char[] sharpsMap = new char[] {'S', 'S'};
+
+ char[] toUpperCaseCharArray(int ch) {
+ char[] upperMap = {(char)ch};
+ if (ch == 0x00DF) {
+ upperMap = sharpsMap;
+ }
+ return upperMap;
+ }
+
+ static final CharacterDataLatin1 instance = new CharacterDataLatin1();
+ private CharacterDataLatin1() {};
+
+ $$Tables
+
+ static {
+ $$Initializers
+ }
+}
+
diff --git a/jdk/make/tools/GenerateCharacter/CharacterDataPrivateUse.java.template b/jdk/make/tools/GenerateCharacter/CharacterDataPrivateUse.java.template
new file mode 100644
index 0000000..080300c
--- /dev/null
+++ b/jdk/make/tools/GenerateCharacter/CharacterDataPrivateUse.java.template
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.lang;
+
+/** The CharacterData class encapsulates the large tables found in
+ Java.lang.Character. */
+
+class CharacterDataPrivateUse extends CharacterData {
+
+ int getProperties(int ch) {
+ return 0;
+ }
+
+ int getType(int ch) {
+ return (ch & 0xFFFE) == 0xFFFE
+ ? Character.UNASSIGNED
+ : Character.PRIVATE_USE;
+ }
+
+ boolean isJavaIdentifierStart(int ch) {
+ return false;
+ }
+
+ boolean isJavaIdentifierPart(int ch) {
+ return false;
+ }
+
+ boolean isUnicodeIdentifierStart(int ch) {
+ return false;
+ }
+
+ boolean isUnicodeIdentifierPart(int ch) {
+ return false;
+ }
+
+ boolean isIdentifierIgnorable(int ch) {
+ return false;
+ }
+
+ int toLowerCase(int ch) {
+ return ch;
+ }
+
+ int toUpperCase(int ch) {
+ return ch;
+ }
+
+ int toTitleCase(int ch) {
+ return ch;
+ }
+
+ int digit(int ch, int radix) {
+ return -1;
+ }
+
+ int getNumericValue(int ch) {
+ return -1;
+ }
+
+ boolean isWhitespace(int ch) {
+ return false;
+ }
+
+ byte getDirectionality(int ch) {
+ return (ch & 0xFFFE) == 0xFFFE
+ ? Character.DIRECTIONALITY_UNDEFINED
+ : Character.DIRECTIONALITY_LEFT_TO_RIGHT;
+ }
+
+ boolean isMirrored(int ch) {
+ return false;
+ }
+
+ static final CharacterData instance = new CharacterDataPrivateUse();
+ private CharacterDataPrivateUse() {};
+}
+
+
diff --git a/jdk/make/tools/GenerateCharacter/CharacterDataUndefined.java.template b/jdk/make/tools/GenerateCharacter/CharacterDataUndefined.java.template
new file mode 100644
index 0000000..195a198
--- /dev/null
+++ b/jdk/make/tools/GenerateCharacter/CharacterDataUndefined.java.template
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.lang;
+
+/** The CharacterData class encapsulates the large tables found in
+ Java.lang.Character. */
+
+class CharacterDataUndefined extends CharacterData {
+
+ int getProperties(int ch) {
+ return 0;
+ }
+
+ int getType(int ch) {
+ return Character.UNASSIGNED;
+ }
+
+ boolean isJavaIdentifierStart(int ch) {
+ return false;
+ }
+
+ boolean isJavaIdentifierPart(int ch) {
+ return false;
+ }
+
+ boolean isUnicodeIdentifierStart(int ch) {
+ return false;
+ }
+
+ boolean isUnicodeIdentifierPart(int ch) {
+ return false;
+ }
+
+ boolean isIdentifierIgnorable(int ch) {
+ return false;
+ }
+
+ int toLowerCase(int ch) {
+ return ch;
+ }
+
+ int toUpperCase(int ch) {
+ return ch;
+ }
+
+ int toTitleCase(int ch) {
+ return ch;
+ }
+
+ int digit(int ch, int radix) {
+ return -1;
+ }
+
+ int getNumericValue(int ch) {
+ return -1;
+ }
+
+ boolean isWhitespace(int ch) {
+ return false;
+ }
+
+ byte getDirectionality(int ch) {
+ return Character.DIRECTIONALITY_UNDEFINED;
+ }
+
+ boolean isMirrored(int ch) {
+ return false;
+ }
+
+ static final CharacterData instance = new CharacterDataUndefined();
+ private CharacterDataUndefined() {};
+}
diff --git a/jdk/make/tools/GenerateCharacter/Makefile b/jdk/make/tools/GenerateCharacter/Makefile
new file mode 100644
index 0000000..2f3a925
--- /dev/null
+++ b/jdk/make/tools/GenerateCharacter/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the generatecharacter tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.generatecharacter
+PRODUCT = tools
+PROGRAM = generatecharacter
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/GenerateCharacter.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/GenerateCharacter/check_class.c.template b/jdk/make/tools/GenerateCharacter/check_class.c.template
new file mode 100644
index 0000000..d9a880f
--- /dev/null
+++ b/jdk/make/tools/GenerateCharacter/check_class.c.template
@@ -0,0 +1,499 @@
+/*
+ * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* This file was generated AUTOMATICALLY from a template file Wed Jun 17 10:43:47 PDT 1998 */
+
+/*-
+ * code for verifying the date in a ClassClass structure for internal
+ * consistency.
+ */
+
+#include <ctype.h>
+
+#include "oobj.h"
+#include "interpreter.h"
+#include "bool.h"
+#include "utf.h"
+#include "tree.h"
+#include "sys_api.h"
+
+extern bool_t verify_class_codes(ClassClass *cb);
+
+static bool_t verify_constant_pool(ClassClass *cb);
+
+static bool_t is_legal_fieldname(ClassClass *cb, char *name, int type);
+static bool_t is_legal_method_signature(ClassClass *cb, char *name, char *signature);
+static bool_t is_legal_field_signature(ClassClass *cb, char *name, char *signature);
+
+static char *skip_over_fieldname(char *name, bool_t slash_okay);
+static char *skip_over_field_signature(char *name, bool_t void_okay);
+
+static void CCerror (ClassClass *cb, char *format, ...);
+
+
+/* Argument for is_legal_fieldname */
+enum { LegalClass, LegalField, LegalMethod };
+
+
+
+
+bool_t
+VerifyClass(ClassClass *cb)
+{
+ bool_t result = TRUE;
+ struct methodblock *mb;
+ struct fieldblock *fb;
+ int i;
+ if (CCIs(cb, Verified))
+ return TRUE;
+ if (!verify_constant_pool(cb))
+ return FALSE;
+ /* Make sure all the method names and signatures are okay */
+ for (i = cbMethodsCount(cb), mb = cbMethods(cb); --i >= 0; mb++) {
+ char *name = mb->fb.name;
+ char *signature = mb->fb.signature;
+ if (! (is_legal_fieldname(cb, name, LegalMethod) &&
+ is_legal_method_signature(cb, name, signature)))
+ result = FALSE;
+ }
+ /* Make sure all the field names and signatures are okay */
+ for (i = cbFieldsCount(cb), fb = cbFields(cb); --i >= 0; fb++) {
+ if (! (is_legal_fieldname(cb, fb->name, LegalField) &&
+ is_legal_field_signature(cb, fb->name, fb->signature)))
+ result = FALSE;
+ }
+ /* Make sure we are not overriding any final methods or classes*/
+ if (cbIsInterface(cb)) {
+ struct methodblock *mb;
+ if ((cbSuperclass(cb) == NULL) ||
+ (cbSuperclass(cb) != classJavaLangObject)) {
+ CCerror(cb, "Interface %s has bad superclass", cbName(cb));
+ result = FALSE;
+ }
+ for (i = cbMethodsCount(cb), mb = cbMethods(cb); --i >= 0; mb++) {
+ if (mb->fb.access & ACC_STATIC) {
+ if (mb->fb.name[0] != '<') {
+ /* Only internal methods can be static */
+ CCerror(cb, "Illegal static method %s in interface %s",
+ mb->fb.name, cbName(cb));
+ result = FALSE;
+ }
+ }
+ }
+ } else if (cbSuperclass(cb)) {
+ ClassClass *super_cb;
+ unsigned bitvector_size = (unsigned)(cbMethodTableSize(cb) + 31) >> 5;
+ long *bitvector = sysCalloc(bitvector_size, sizeof(long));
+ for (super_cb = cbSuperclass(cb); ; super_cb = cbSuperclass(super_cb)) {
+ if (cbAccess(super_cb) & ACC_FINAL) {
+ CCerror(cb, "Class %s is subclass of final class %s",
+ cbName(cb), cbName(super_cb));
+ result = FALSE;
+ }
+ mb = cbMethods(super_cb);
+ for (i = cbMethodsCount(super_cb); --i >= 0; mb++) {
+ if (mb->fb.access & ACC_FINAL) {
+ unsigned offset = mb->fb.u.offset;
+ bitvector[offset >> 5] |= (1 << (offset & 0x1F));
+ }
+ }
+ if (cbSuperclass(super_cb) == NULL) break;
+ }
+ for (i = cbMethodsCount(cb), mb = cbMethods(cb); --i >= 0; mb++) {
+ unsigned offset = mb->fb.u.offset;
+ if ((offset > 0)
+ && bitvector[offset >> 5] & (1 << (offset & 0x1F))) {
+ CCerror(cb, "Class %s overrides final method %s.%s",
+ cbName(cb), mb->fb.name, mb->fb.signature);
+ result = FALSE;
+ }
+ }
+ sysFree(bitvector);
+ } else if (cb != classJavaLangObject) {
+ CCerror(cb, "Class %s does not have superclass", cbName(cb));
+ result = FALSE;
+ }
+
+ if (result)
+ result = verify_class_codes(cb);
+ if (result)
+ CCSet(cb, Verified);
+ return result;
+}
+
+
+static bool_t
+verify_constant_pool(ClassClass *cb)
+{
+ union cp_item_type *cp = cbConstantPool(cb);
+ long cp_count = cbConstantPoolCount(cb);
+ unsigned char *type_table;
+ int i, type;
+
+ const int utf8_resolved = (CONSTANT_Utf8 | CONSTANT_POOL_ENTRY_RESOLVED);
+
+ if (cp_count == 0) /* Primitive classes */
+ return TRUE;
+ type_table = cp[CONSTANT_POOL_TYPE_TABLE_INDEX].type;
+ /* Let's make two quick passes over the constant pool. The first one
+ * checks that everything is of the right type. */
+ for (i = 1; i < cp_count; i++) {
+ switch(type = type_table[i]) {
+ case CONSTANT_String:
+ case CONSTANT_Class: {
+ int index = cp[i].i;
+ if ( (index < 1)
+ || (index >= cp_count)
+ || (type_table[index] != utf8_resolved)) {
+ CCerror(cb, "Bad index in constant pool #%d", i);
+ return FALSE;
+ }
+ break;
+ }
+
+ case CONSTANT_String | CONSTANT_POOL_ENTRY_RESOLVED:
+ /* This can only happen if a string is the "initial" value of
+ * some final static String. We assume that the checking has
+ * already been done.
+ */
+ break;
+
+ case CONSTANT_Fieldref:
+ case CONSTANT_Methodref:
+ case CONSTANT_InterfaceMethodref:
+ case CONSTANT_NameAndType: {
+ unsigned index = (unsigned)(cp[i].i);
+ int key1 = index >> 16;
+ int key2 = index & 0xFFFF;
+ if (key1 < 1 || key1 >= cp_count
+ || key2 < 1 || key2 >= cp_count) {
+ CCerror(cb, "Bad index in constant pool #%d", i);
+ return FALSE;
+ }
+ if (type == CONSTANT_NameAndType) {
+ if ( (type_table[key1] != utf8_resolved)
+ || (type_table[key2] != utf8_resolved)) {
+ CCerror(cb, "Bad index in constant pool.");
+ return FALSE;
+ }
+ } else {
+ if ( ((type_table[key1] & CONSTANT_POOL_ENTRY_TYPEMASK)
+ != CONSTANT_Class)
+ || ((type_table[key2] != CONSTANT_NameAndType))) {
+ CCerror(cb, "Bad index in constant pool #%d", i);
+ return FALSE;
+ }
+ }
+ break;
+ }
+
+ case CONSTANT_Fieldref | CONSTANT_POOL_ENTRY_RESOLVED:
+ case CONSTANT_Methodref | CONSTANT_POOL_ENTRY_RESOLVED:
+ case CONSTANT_InterfaceMethodref | CONSTANT_POOL_ENTRY_RESOLVED:
+ case CONSTANT_NameAndType | CONSTANT_POOL_ENTRY_RESOLVED:
+ CCerror(cb, "Improperly resolved constant pool #%d", i);
+ return FALSE;
+
+
+ case CONSTANT_Class | CONSTANT_POOL_ENTRY_RESOLVED:
+ case CONSTANT_Utf8 | CONSTANT_POOL_ENTRY_RESOLVED:
+ case CONSTANT_Integer | CONSTANT_POOL_ENTRY_RESOLVED:
+ case CONSTANT_Float | CONSTANT_POOL_ENTRY_RESOLVED:
+ break;
+
+ case CONSTANT_Long | CONSTANT_POOL_ENTRY_RESOLVED:
+ case CONSTANT_Double | CONSTANT_POOL_ENTRY_RESOLVED:
+ if ((i + 1 >= cp_count) ||
+ (type_table[i + 1] != CONSTANT_POOL_ENTRY_RESOLVED)) {
+ CCerror(cb, "Improper constant pool long/double #%d", i);
+ return FALSE;
+ } else {
+ i++;
+ break;
+ }
+
+ case CONSTANT_Integer:
+ case CONSTANT_Float:
+ case CONSTANT_Long:
+ case CONSTANT_Double:
+ case CONSTANT_Utf8:
+ CCerror(cb, "Improperly unresolved constant pool #%d", i);
+ return FALSE;
+
+
+ default:
+ CCerror(cb, "Illegal constant pool type at #%d", i);
+ return FALSE;
+
+
+ }
+ }
+ for (i = 1; i < cp_count; i++) {
+ switch(type = type_table[i]) {
+ case CONSTANT_Class: {
+ int index = cp[i].i;
+ if (!is_legal_fieldname(cb, cp[index].cp, LegalClass))
+ return FALSE;
+ break;
+ }
+
+ case CONSTANT_Fieldref:
+ case CONSTANT_Methodref:
+ case CONSTANT_InterfaceMethodref: {
+ unsigned index = (unsigned)(cp[i].i);
+ int name_type_index = index & 0xFFFF;
+ int name_type_key = cp[name_type_index].i;
+ int name_index = name_type_key >> 16;
+ int signature_index = name_type_key & 0xFFFF;
+ char *name = cp[name_index].cp;
+ char *signature = cp[signature_index].cp;
+
+ if (type == CONSTANT_Fieldref) {
+ if (! (is_legal_fieldname(cb, name, LegalField) &&
+ is_legal_field_signature(cb, name, signature)))
+ return FALSE;
+ } else {
+ if (! (is_legal_fieldname(cb, name, LegalMethod) &&
+ is_legal_method_signature(cb, name, signature)))
+ return FALSE;
+ }
+ break;
+ }
+ }
+ }
+ return TRUE;
+}
+
+
+/* Return true if the entire second argument consists of a legal fieldname
+ * (or classname, if the third argument is LegalClass).
+ */
+
+static bool_t
+is_legal_fieldname(ClassClass *cb, char *name, int type)
+{
+ bool_t result;
+ if (name[0] == '<') {
+ result = (type == LegalMethod) &&
+ ((strcmp(name, "<init>") == 0) ||
+ (strcmp(name, "<clinit>") == 0));
+ } else {
+ char *p;
+ if (type == LegalClass && name[0] == SIGNATURE_ARRAY) {
+ p = skip_over_field_signature(name, FALSE);
+ } else {
+ p = skip_over_fieldname(name, type == LegalClass);
+ }
+ result = (p != 0 && p[0] == '\0');
+ }
+ if (!result) {
+ char *thing = (type == LegalField) ? "Field"
+ : (type == LegalMethod) ? "Method" : "Class";
+
+ CCerror(cb, "Illegal %s name \"%s\"", thing, name);
+ return FALSE;
+ } else {
+ return TRUE;
+
+ }
+}
+
+/* Return true if the entire string consists of a legal field signature */
+static bool_t
+is_legal_field_signature(ClassClass *cb, char *fieldname, char *signature)
+{
+ char *p = skip_over_field_signature(signature, FALSE);
+ if (p != 0 && p[0] == '\0') {
+ return TRUE;
+ } else {
+ CCerror(cb, "Field \"%s\" has illegal signature \"%s\"",
+ fieldname, signature);
+ return FALSE;
+ }
+}
+
+
+static bool_t
+is_legal_method_signature(ClassClass *cb, char *methodname, char *signature)
+{
+ char *p = signature;
+ char *next_p;
+ /* The first character must be a '(' */
+ if (*p++ == SIGNATURE_FUNC) {
+ /* Skip over however many legal field signatures there are */
+ while ((next_p = skip_over_field_signature(p, FALSE)) != 0)
+ p = next_p;
+ /* The first non-signature thing better be a ')' */
+ if (*p++ == SIGNATURE_ENDFUNC) {
+ if (methodname[0] == '<') {
+ /* All internal methods must return void */
+ if ((p[0] == SIGNATURE_VOID) && (p[1] == '\0'))
+ return TRUE;
+ } else {
+ /* Now, we better just have a return value. */
+ next_p = skip_over_field_signature(p, TRUE);
+ if (next_p && next_p[0] == '\0')
+ return TRUE;
+ }
+ }
+ }
+ CCerror(cb, "Method \"%s\" has illegal signature \"%s\"",
+ methodname, signature);
+ return FALSE;
+}
+
+ $$Tables
+
+/*
+ * This code mirrors Character.isJavaIdentifierStart. It determines whether
+ * the specified character is a legal start of a Java identifier as per JLS.
+ *
+ * The parameter ch is the character to be tested; return 1 if the
+ * character is a letter, 0 otherwise.
+ */
+#define isJavaIdentifierStart(ch) ($$Lookup(ch) & $$maskIsJavaIdentifierStart)
+
+/*
+ * This code mirrors Character.isJavaIdentifierPart. It determines whether
+ * the specified character is a legal part of a Java identifier as per JLS.
+ *
+ * The parameter ch is the character to be tested; return 1 if the
+ * character is a digit, 0 otherwise.
+ */
+#define isJavaIdentifierPart(ch) ($$Lookup(ch) & $$maskIsJavaIdentifierPart)
+
+/* Take pointer to a string. Skip over the longest part of the string that
+ * could be taken as a fieldname. Allow '/' if slash_okay is TRUE.
+ *
+ * Return a pointer to just past the fieldname. Return NULL if no fieldname
+ * at all was found, or in the case of slash_okay being true, we saw
+ * consecutive slashes (meaning we were looking for a qualified path but
+ * found something that was badly-formed).
+ */
+static char *
+skip_over_fieldname(char *name, bool_t slash_okay)
+{
+ bool_t first;
+ char *p;
+ unicode last_ch = 0;
+ for (p = name, first = TRUE; ; first = FALSE) {
+ char *old_p = p;
+ unicode ch = next_utf2unicode(&p);
+ if (isJavaIdentifierStart(ch) || (!first && isJavaIdentifierPart(ch))
+ || (slash_okay && ch == '/' && !first)
+ || ch == '_' || ch == '$') {
+ if (ch == '/' && last_ch == '/') {
+ return 0; /* Don't permit consecutive slashes */
+ } else {
+ last_ch = ch;
+ }
+ } else {
+ return first ? 0 : old_p;
+ }
+ }
+}
+
+/* Take pointer to a string. Skip over the longest part of the string that
+ * could be taken as a field signature. Allow "void" if void_okay.
+ *
+ * Return a pointer to just past the signature. Return NULL if no legal
+ * signature is found.
+ */
+
+static char *
+skip_over_field_signature(char *name, bool_t void_okay)
+{
+ for (;;) {
+ switch (name[0]) {
+ case SIGNATURE_VOID:
+ if (!void_okay) return 0;
+ /* FALL THROUGH */
+ case SIGNATURE_BOOLEAN:
+ case SIGNATURE_BYTE:
+ case SIGNATURE_CHAR:
+ case SIGNATURE_SHORT:
+ case SIGNATURE_INT:
+ case SIGNATURE_FLOAT:
+ case SIGNATURE_LONG:
+ case SIGNATURE_DOUBLE:
+ return name + 1;
+
+ case SIGNATURE_CLASS: {
+ /* Skip over the classname, if one is there. */
+ char *p = skip_over_fieldname(name + 1, TRUE);
+ /* The next character better be a semicolon. */
+ if (p && p[0] == ';')
+ return p + 1;
+ return 0;
+ }
+
+ case SIGNATURE_ARRAY:
+ /* The rest of what's there better be a legal signature. */
+ name++;
+ void_okay = FALSE;
+ break;
+
+ default:
+ return 0;
+ }
+ }
+}
+
+
+static void
+CCerror (ClassClass *cb, char *format, ...)
+{
+ if (verbose) {
+ va_list args;
+ jio_fprintf(stderr, "VERIFIER CLASS ERROR %s:\n", cbName(cb));
+ va_start(args, format);
+ jio_vfprintf(stderr, format, args);
+ va_end(args);
+ jio_fprintf(stderr, "\n");
+ }
+}
+
+/* For use from outside the file. Determine if the specified name is legal
+ * UTF name for a classname.
+ *
+ * Note that this routine expects the internal form of qualified classes:
+ * the dots should have been replaced by slashes.
+ */
+bool_t IsLegalClassname(char *name, bool_t allowArrayClass)
+{
+ char *p;
+ if (name[0] == SIGNATURE_ARRAY) {
+ if (!allowArrayClass) {
+ return FALSE;
+ } else {
+ /* Everything that's left better be a field signature */
+ p = skip_over_field_signature(name, FALSE);
+ }
+ } else {
+ /* skip over the fieldname. Slashes are okay */
+ p = skip_over_fieldname(name, TRUE);
+ }
+ return (p != 0 && p[0] == '\0');
+}
diff --git a/jdk/make/tools/Makefile b/jdk/make/tools/Makefile
new file mode 100644
index 0000000..0428e3c
--- /dev/null
+++ b/jdk/make/tools/Makefile
@@ -0,0 +1,61 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Create all the build tools
+#
+
+BUILDDIR = ..
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = \
+ addjsum \
+ auto_multi \
+ buildmetaindex \
+ commentchecker \
+ compile_font_config \
+ compile_properties \
+ dir_diff \
+ dtdbuilder \
+ fontchecker \
+ generate_break_iterator \
+ GenerateCharacter \
+ generatecurrencydata \
+ hasher_classes \
+ jarreorder \
+ jarsplit \
+ javazic \
+ jdwpgen \
+ makeclasslist \
+ strip_properties \
+ winver
+
+all build clean clobber::
+ $(SUBDIRS-loop)
+
+clean clobber::
+ $(RM) -r $(BUILDTOOLCLASSDIR)
+ $(RM) -r $(BUILDTOOLJARDIR)
+
diff --git a/jdk/make/tools/README.txt b/jdk/make/tools/README.txt
new file mode 100644
index 0000000..6377e5d
--- /dev/null
+++ b/jdk/make/tools/README.txt
@@ -0,0 +1,8 @@
+
+The build tools are generally tools written in java that are used to build
+the jdk or provide help in working with the jdk.
+
+They are all built with the BOOTDIR javac and run with the BOOTDIR java.
+
+They need only be built once.
+
diff --git a/jdk/make/tools/UnicodeData/SpecialCasing.txt b/jdk/make/tools/UnicodeData/SpecialCasing.txt
new file mode 100644
index 0000000..34d1c61
--- /dev/null
+++ b/jdk/make/tools/UnicodeData/SpecialCasing.txt
@@ -0,0 +1,256 @@
+# SpecialCasing-4.0.0.txt
+# Date: 2003-03-14, 20:22:04 GMT [MD]
+#
+# Special Casing Properties
+#
+# This file is a supplement to the UnicodeData file.
+# It contains additional information about the casing of Unicode characters.
+# (For compatibility, the UnicodeData.txt file only contains case mappings for
+# characters where they are 1-1, and does not have locale-specific mappings.)
+# For more information, see the discussion of Case Mappings in the Unicode Standard.
+#
+# All code points not listed in this file that do not have a simple case mappings
+# in UnicodeData.txt map to themselves.
+# ================================================================================
+# Format
+# ================================================================================
+# The entries in this file are in the following machine-readable format:
+#
+# <code>; <lower> ; <title> ; <upper> ; (<condition_list> ;)? # <comment>
+#
+# <code>, <lower>, <title>, and <upper> provide character values in hex. If there is more than
+# one character, they are separated by spaces. Other than as used to separate elements,
+# spaces are to be ignored.
+#
+# The <condition_list> is optional. Where present, it consists of one or more locales or contexts,
+# separated by spaces. In these conditions:
+# - A condition list overrides the normal behavior if all of the listed conditions are true.
+# - The context is always the context of the characters in the original string,
+# NOT in the resulting string.
+# - Case distinctions in the condition list are not significant.
+# - Conditions preceded by "Not_" represent the negation of the condition.
+#
+# A locale is defined as:
+# <locale> := <ISO_639_code> ( "_" <ISO_3166_code> ( "_" <variant> )? )?
+# <ISO_3166_code> := 2-letter ISO country code,
+# <ISO_639_code> := 2-letter ISO language code
+#
+# A context is one of the following, as defined in the Unicode Standard:
+# Final_Sigma, After_Soft_Dotted, More_Above, Before_Dot, Not_Before_Dot, After_I
+#
+# Parsers of this file must be prepared to deal with future additions to this format:
+# * Additional contexts
+# * Additional fields
+# ================================================================================
+
+# ================================================================================
+# Unconditional mappings
+# ================================================================================
+
+# The German es-zed is special--the normal mapping is to SS.
+# Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>))
+
+00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S
+
+# Preserve canonical equivalence for I with dot. Turkic is handled below.
+
+0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+# Ligatures
+
+FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF
+FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI
+FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL
+FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI
+FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL
+FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T
+FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST
+
+0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN
+FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW
+FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH
+FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI
+FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW
+FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH
+
+# No corresponding uppercase precomposed character
+
+0149; 0149; 02BC 004E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON
+1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW
+1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS
+1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE
+1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
+1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
+1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI
+1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+
+# IMPORTANT-when capitalizing iota-subscript (0345)
+# It MUST be in normalized form--moved to the end of any sequence of combining marks.
+# This is because logically it represents a following base character!
+# E.g. <iota_subscript> (<Mn> | <Mc> | <Me>)+ => (<Mn> | <Mc> | <Me>)+ <iota_subscript>
+# It should never be the first character in a word, so in titlecasing it can be left as is.
+
+# The following cases are already in the UnicodeData file, so are only commented here.
+
+# 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI
+
+# All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript)
+# have special uppercases.
+# Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase!
+
+1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+
+# Some characters with YPOGEGRAMMENI are also have no corresponding titlecases
+
+1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+
+1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+
+# ================================================================================
+# Conditional mappings
+# ================================================================================
+
+# Special case for final form of sigma
+
+03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA
+
+# Note: the following cases for non-final are already in the UnicodeData file.
+
+# 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA
+# 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA
+
+# Note: the following cases are not included, since they would case-fold in lowercasing
+
+# 03C3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C3; 03A3; 03A3; Not_Final_Sigma; # GREEK SMALL LETTER FINAL SIGMA
+
+# ================================================================================
+# Locale-sensitive mappings
+# ================================================================================
+
+# Lithuanian
+
+# Lithuanian retains the dot in a lowercase i when followed by accents.
+
+# Remove DOT ABOVE after "i" with upper or titlecase
+
+0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE
+
+# Introduce an explicit dot above when lowercasing capital I's and J's
+# whenever there are more accents above.
+# (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek)
+
+0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I
+004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J
+012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK
+00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE
+00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE
+0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE
+
+# ================================================================================
+
+# Turkish and Azeri
+
+# I and i-dotless; I-dot and i are case pairs in Turkish and Azeri
+# The following rules handle those cases.
+
+0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0130; 0069; 0130; 0130; az; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+# When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i.
+# This matches the behavior of the canonically equivalent I-dot_above
+
+0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE
+0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE
+
+# When lowercasing, unless an I is before a dot_above, it turns into a dotless i.
+
+0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I
+0049; 0131; 0049; 0049; az Not_Before_Dot; # LATIN CAPITAL LETTER I
+
+# When uppercasing, i turns into a dotted capital I
+
+0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I
+0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I
+
+# Note: the following case is already in the UnicodeData file.
+
+# 0131; 0131; 0049; 0049; tr; # LATIN SMALL LETTER DOTLESS I
diff --git a/jdk/make/tools/UnicodeData/UnicodeData.txt b/jdk/make/tools/UnicodeData/UnicodeData.txt
new file mode 100644
index 0000000..86ea1cf
--- /dev/null
+++ b/jdk/make/tools/UnicodeData/UnicodeData.txt
@@ -0,0 +1,15100 @@
+0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
+0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
+0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;;
+000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;;
+000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;;
+000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;;
+001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;;
+001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;;
+001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;;
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;BN;;;;;N;;;;;
+0081;<control>;Cc;0;BN;;;;;N;;;;;
+0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
+0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
+0084;<control>;Cc;0;BN;;;;;N;;;;;
+0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;;
+0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
+0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
+0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
+0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
+008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
+008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;;
+008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;;
+008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
+008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
+008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
+0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
+0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
+0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
+0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
+0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
+0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
+0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
+0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
+0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
+0099;<control>;Cc;0;BN;;;;;N;;;;;
+009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
+009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
+009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
+009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
+009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
+009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
+00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Cf;0;ON;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;;
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;01F2
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
+01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
+01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
+01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
+0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
+021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
+021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
+021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
+021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
+021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
+021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
+0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E;
+0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;;
+0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
+0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
+0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
+0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
+0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
+0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
+0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
+0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
+022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
+022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
+022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
+022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
+022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
+022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
+0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
+0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
+0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
+0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
+0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;;
+0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;;
+0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;;
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;;
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;;
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;;
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK ;Ll;0;L;;;;;N;;;;;
+02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
+02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;;
+02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
+02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;;
+02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;;
+02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;;
+02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;;
+02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;;
+02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;;
+02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;;
+02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;;
+02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;;
+02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
+0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
+0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
+034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
+034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
+034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
+034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;;
+0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
+0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
+0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;;
+0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;;
+0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
+035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;;
+035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;;
+035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
+0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
+0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;;
+0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;;
+0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;;
+0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;;
+0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;;
+0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;;
+0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;;
+036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;;
+036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;;
+036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;;
+036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;;
+036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;;
+036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;;
+03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9;
+03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
+03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
+03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
+03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
+03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9
+03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
+03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;
+03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395
+03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;;
+03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8;
+03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7
+03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L;<compat> 03A3;;;;N;;;;03F2;
+03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB;
+03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA
+0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
+0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B;
+048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A
+048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
+048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
+048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
+048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6;
+04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA;
+04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE;
+04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
+04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
+04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501;
+0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500
+0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503;
+0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502
+0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505;
+0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504
+0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507;
+0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506
+0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509;
+0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508
+050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B;
+050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A
+050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D;
+050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C
+050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F;
+050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;;
+0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;;
+05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
+05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+0600;ARABIC NUMBER SIGN;Cf;0;AL;;;;;N;;;;;
+0601;ARABIC SIGN SANAH;Cf;0;AL;;;;;N;;;;;
+0602;ARABIC FOOTNOTE MARKER;Cf;0;AL;;;;;N;;;;;
+0603;ARABIC SIGN SAFHA;Cf;0;AL;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;;
+060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;;
+060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;;
+0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;;
+0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;;
+0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;;
+0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;;
+0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;;
+0615;ARABIC SMALL HIGH TAH ;Mn;230;NSM;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
+0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
+0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
+0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;;
+0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;;
+0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
+066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;;
+066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Cf;0;AL;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
+06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
+06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
+06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
+0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
+0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
+0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
+0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
+070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
+070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
+070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
+070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
+0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
+0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
+0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
+0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
+0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
+0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
+0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
+0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
+0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
+071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
+071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
+071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
+071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
+071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
+0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
+0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
+0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
+0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
+0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
+0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
+0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
+0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
+0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
+0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
+072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
+072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
+072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
+072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;;
+072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;;
+072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;;
+0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
+0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
+073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
+073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
+0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
+0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
+0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
+0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
+074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
+074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;;
+074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;;
+074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;;
+0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
+0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
+0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
+0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
+0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
+0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
+0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
+0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
+078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
+078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
+078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
+078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
+078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
+078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
+0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
+0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
+0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
+0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
+0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
+0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
+0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
+0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
+0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
+079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
+079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
+079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
+079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
+079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
+079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
+07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
+07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
+07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
+07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
+07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
+07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
+07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
+07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
+07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
+07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
+07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
+07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
+07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
+07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
+07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
+07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
+07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
+07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
+0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;Naal;;;
+0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;Maatham;;;
+0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;Varudam;;;
+0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;Patru;;;
+0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;Varavu;;;
+0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;Merpadi;;;
+0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;Rupai;;;
+0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;Enn;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
+0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
+0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
+0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
+0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
+0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
+0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
+0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
+0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
+0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
+0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
+0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
+0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
+0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
+0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
+0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
+0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
+0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
+0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
+0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
+0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
+0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
+0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
+0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
+0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
+0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
+0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
+0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
+0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
+0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
+0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
+0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
+0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
+0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
+0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
+0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
+0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;;
+0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
+0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
+0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
+0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
+0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;;
+0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;;
+0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;;
+0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;;
+0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;;
+0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
+0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
+0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;;
+0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;;
+0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;;
+0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;;
+0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;;
+0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;;
+0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;;
+0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;;
+0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;;
+0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;;
+0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;;
+0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;;
+1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
+1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
+1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
+1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
+1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
+1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
+1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
+1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
+1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
+1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
+100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
+100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
+100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
+100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
+100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
+100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
+1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
+1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
+1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
+1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
+1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
+1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
+1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
+1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
+1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
+1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
+101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
+101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
+101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
+101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
+101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
+101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
+1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
+1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
+1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
+1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
+1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
+1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
+1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
+1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
+102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
+102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
+1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
+104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
+104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
+104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
+104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
+104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
+1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
+1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
+1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;;
+10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;;
+10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
+1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
+120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
+1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
+1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
+1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
+1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
+1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
+1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
+1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
+1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
+1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
+121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
+1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
+1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
+1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
+1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
+1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
+1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
+1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
+1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
+1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
+122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
+1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
+1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
+1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
+123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
+1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
+1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
+1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
+1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
+1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
+124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
+124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
+124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
+124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
+1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
+1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
+1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
+1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
+1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
+1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
+1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
+1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
+125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
+125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
+125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
+125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
+1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
+1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
+1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
+126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
+1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
+1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
+1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
+127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
+1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
+1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
+1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
+1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
+1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
+1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
+128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
+128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
+128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
+128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
+1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
+1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
+1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
+129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
+12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
+12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
+12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
+12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
+12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
+12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
+12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
+12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
+12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
+12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
+12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
+12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
+12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
+12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
+12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
+12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
+12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
+12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
+12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
+12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
+12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
+12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
+12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
+12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
+12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
+12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
+12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
+12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
+12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
+12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
+12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
+12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
+12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
+12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
+12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
+12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
+12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
+12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
+12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
+12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
+12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
+12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
+12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
+12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
+1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
+1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
+1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
+130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
+1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
+1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
+1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
+1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
+1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
+131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
+131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
+1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
+1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
+132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
+132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
+132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
+1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
+1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
+1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
+1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
+1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
+1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
+1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
+1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
+1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
+1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
+133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
+133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
+133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
+133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
+133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
+133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
+1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
+1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
+1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
+1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
+1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
+1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
+1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
+1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
+134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
+1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
+1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
+1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
+1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
+135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
+1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
+1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
+1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
+1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
+1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
+1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
+1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
+1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1369;ETHIOPIC DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
+1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
+1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
+137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
+137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
+13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
+13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
+13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
+13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
+13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
+13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
+13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
+13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
+13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
+13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
+13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
+13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
+13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
+13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
+13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
+13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
+13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
+13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
+13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
+13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
+13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
+13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
+13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
+13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
+13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
+13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
+13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
+13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
+13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
+13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
+13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
+13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
+13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
+13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
+13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
+13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
+13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
+13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
+13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
+13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
+13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
+13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
+13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
+13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
+13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
+13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
+13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
+13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
+13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
+13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
+13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
+13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
+13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
+13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
+13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
+13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
+13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
+13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
+13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
+13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
+13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
+13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
+13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
+13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
+13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
+13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
+13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
+13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
+13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
+13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
+13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
+13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
+13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
+13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
+13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
+13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
+13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
+13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
+13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
+13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
+13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
+13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
+13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
+13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
+1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
+1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
+1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
+1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
+1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
+1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
+1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
+1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
+1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
+140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
+140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
+140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
+140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
+140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
+140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
+1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
+1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
+1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
+1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
+1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
+1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
+1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
+1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
+1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
+1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
+141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
+141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
+141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
+141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
+141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
+1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
+1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
+1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
+1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
+1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
+1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
+1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
+1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
+1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
+1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
+142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
+142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
+142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
+142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
+142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
+142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
+1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
+1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
+1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
+1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
+1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
+1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
+1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
+1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
+1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
+1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
+143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
+143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
+143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
+143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
+143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
+143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
+1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
+1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
+1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
+1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
+1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
+1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
+1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
+1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
+144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
+144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
+144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
+144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
+144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
+144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
+1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
+1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
+1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
+1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
+1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
+1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
+1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
+1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
+1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
+1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
+145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
+145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
+145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
+145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
+145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
+145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
+1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
+1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
+1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
+1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
+1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
+1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
+1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
+1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
+1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
+1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
+146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
+146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
+146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
+146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
+146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
+146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
+1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
+1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
+1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
+1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
+1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
+1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
+1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
+1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
+1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
+1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
+147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
+147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
+147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
+147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
+147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
+147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
+1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
+1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
+1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
+1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
+1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
+1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
+1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
+1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
+1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
+1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
+148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
+148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
+148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
+148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
+148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
+148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
+1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
+1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
+1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
+1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
+1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
+1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
+1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
+1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
+1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
+1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
+149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
+149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
+149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
+149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
+149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
+149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
+14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
+14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
+14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
+14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
+14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
+14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
+14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
+14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
+14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
+14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
+14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
+14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
+14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
+14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
+14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
+14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
+14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
+14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
+14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
+14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
+14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
+14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
+14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
+14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
+14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
+14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
+14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
+14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
+14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
+14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
+14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
+14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
+14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
+14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
+14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
+14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
+14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
+14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
+14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
+14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
+14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
+14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
+14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
+14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
+14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
+14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
+14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
+14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
+14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
+14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
+14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
+14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
+14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
+14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
+14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
+14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
+14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
+14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
+14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
+14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
+14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
+14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
+14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
+14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
+14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
+14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
+14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
+14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
+14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
+14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
+14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
+14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
+14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
+14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
+14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
+14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
+14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
+14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
+14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
+14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
+14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
+14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
+14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
+14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
+14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
+14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
+14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
+14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
+14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
+14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
+14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
+14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
+14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
+14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
+14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
+14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
+1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
+1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
+1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
+1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
+1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
+1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
+1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
+1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
+1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
+1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
+150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
+150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
+150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
+150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
+150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
+150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
+1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
+1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
+1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
+1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
+1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
+1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
+1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
+1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
+1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
+1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
+151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
+151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
+151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
+151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
+151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
+151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
+1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
+1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
+1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
+1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
+1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
+1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
+1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
+1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
+1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
+1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
+152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
+152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
+152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
+152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
+152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
+152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
+1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
+1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
+1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
+1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
+1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
+1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
+1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
+1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
+1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
+1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
+153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
+153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
+153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
+153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
+153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
+153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
+1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
+1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
+1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
+1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
+1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
+1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
+1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
+1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
+1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
+1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
+154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
+154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
+154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
+154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
+154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
+154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
+1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
+1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
+1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
+1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
+1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
+1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
+1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
+1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
+1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
+1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
+155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
+155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
+155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
+155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
+155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
+155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
+1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
+1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
+1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
+1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
+1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
+1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
+1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
+1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
+1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
+1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
+156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
+156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
+156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
+156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
+156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
+156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
+1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
+1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
+1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
+1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
+1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
+1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
+1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
+1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
+1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
+1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
+157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
+157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
+157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
+157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
+157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
+157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
+1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
+1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
+1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
+1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
+1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
+1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
+1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
+1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
+1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
+1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
+158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
+158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
+158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
+158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
+158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
+158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
+1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
+1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
+1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
+1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
+1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
+1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
+1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
+1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
+1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
+1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
+159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
+159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
+159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
+159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
+159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
+159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
+15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
+15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
+15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
+15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
+15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
+15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
+15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
+15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
+15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
+15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
+15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
+15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
+15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
+15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
+15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
+15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
+15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
+15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
+15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
+15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
+15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
+15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
+15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
+15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
+15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
+15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
+15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
+15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
+15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
+15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
+15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
+15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
+15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
+15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
+15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
+15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
+15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
+15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
+15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
+15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
+15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
+15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
+15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
+15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
+15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
+15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
+15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
+15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
+15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
+15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
+15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
+15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
+15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
+15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
+15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
+15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
+15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
+15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
+15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
+15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
+15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
+15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
+15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
+15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
+15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
+15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
+15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
+15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
+15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
+15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
+15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
+15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
+15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
+15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
+15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
+15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
+15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
+15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
+15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
+15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
+15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
+15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
+15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
+15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
+15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
+15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
+15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
+15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
+15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
+15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
+15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
+15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
+15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
+15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
+15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
+15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
+1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
+1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
+1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
+1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
+1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
+1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
+1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
+1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
+1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
+1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
+160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
+160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
+160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
+160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
+160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
+160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
+1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
+1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
+1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
+1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
+1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
+1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
+1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
+1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
+1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
+1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
+161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
+161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
+161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
+161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
+161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
+161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
+1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
+1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
+1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
+1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
+1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
+1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
+1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
+1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
+1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
+1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
+162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
+162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
+162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
+162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
+162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
+162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
+1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
+1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
+1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
+1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
+1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
+1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
+1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
+1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
+1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
+1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
+163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
+163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
+163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
+163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
+163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
+163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
+1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
+1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
+1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
+1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
+1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
+1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
+1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
+1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
+1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
+1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
+164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
+164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
+164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
+164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
+164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
+164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
+1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
+1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
+1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
+1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
+1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
+1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
+1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
+1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
+1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
+1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
+165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
+165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
+165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
+165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
+165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
+165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
+1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
+1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
+1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
+1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
+1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
+1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
+1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
+1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
+1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
+1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
+166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
+166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
+166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
+166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
+166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
+166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
+1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
+1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
+1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
+1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
+1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
+1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
+1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
+1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
+1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
+1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
+1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
+1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
+1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
+1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
+1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
+1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
+1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
+168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
+168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
+168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
+168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
+168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
+168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
+1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
+1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
+1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
+1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
+1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
+1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
+1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
+1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
+1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
+1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
+169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
+169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;;
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;;
+16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
+16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
+16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
+16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
+16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
+16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
+16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
+16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
+16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
+16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
+16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
+16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
+16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
+16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
+16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
+16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
+16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
+16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
+16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
+16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
+16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
+16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
+16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
+16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
+16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
+16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
+16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
+16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
+16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
+16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
+16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
+16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
+16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
+16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
+16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
+16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
+16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
+16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
+16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
+16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
+16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
+16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
+16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
+16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
+16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
+16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
+16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
+16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
+16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
+16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
+16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
+16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
+16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
+16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
+16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
+16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
+16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
+16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
+16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
+16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
+16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
+16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
+16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
+16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
+16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
+16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
+16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
+16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
+16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
+16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
+16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
+16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;;
+16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;;
+16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;;
+1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;;
+1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;;
+1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;;
+1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;;
+1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;;
+1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;;
+1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;;
+1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;;
+1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;;
+1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;;
+170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;;
+170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;;
+170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;;
+170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;;
+170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;;
+1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;;
+1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;;
+1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;;
+1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;;
+1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;;
+1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;;
+1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;;
+1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;;
+1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;;
+1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;;
+1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;;
+1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;;
+172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;;
+172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;;
+172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;;
+172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;;
+172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;;
+172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;;
+1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;;
+1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;;
+1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;;
+1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;;
+1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;;
+1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;;
+1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;;
+1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;;
+1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;;
+1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;;
+1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;;
+1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;;
+1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;;
+174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;;
+174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;;
+174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;;
+174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;;
+174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;;
+174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;;
+1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;;
+1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;;
+1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;;
+1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;;
+1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;;
+1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;;
+1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;;
+1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;;
+1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;;
+1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;;
+1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;;
+1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;;
+176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;;
+176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;;
+176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;;
+176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;;
+176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;;
+1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;;
+1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
+1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
+1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
+1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
+1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
+1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
+1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
+1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
+1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
+1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
+178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
+178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
+178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
+178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
+178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
+178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
+1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
+1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
+1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
+1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
+1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
+1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
+1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
+1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
+1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
+1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
+179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
+179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
+179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
+179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
+179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
+179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
+17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
+17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
+17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
+17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;*;;;
+17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;*;;;
+17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
+17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
+17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
+17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
+17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
+17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
+17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
+17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
+17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
+17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
+17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
+17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
+17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
+17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
+17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
+17B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;*;;;
+17B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;*;;;
+17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
+17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
+17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
+17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
+17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
+17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
+17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
+17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
+17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
+17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
+17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
+17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
+17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
+17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
+17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
+17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
+17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
+17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;*;;;
+17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
+17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
+17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
+17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;;
+17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;*;;;
+17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
+17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
+17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
+17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;;
+17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;;
+17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;;
+17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;;
+17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;;
+17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;;
+17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;;
+17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;;
+17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;;
+17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;;
+17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;;
+17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;;
+1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
+1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
+1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
+1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
+1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
+1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
+1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
+1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
+180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
+180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;;
+180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;;
+180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;;
+180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;;
+1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
+1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
+1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
+1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
+1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
+1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
+1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
+1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
+1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
+1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
+182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
+182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
+182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
+182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
+182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
+182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
+1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
+1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
+1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
+1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
+1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
+1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
+1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
+1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
+183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
+183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
+183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
+1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
+1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
+1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
+1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
+1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
+1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
+1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
+1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
+1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
+1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
+184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
+184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
+184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
+184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
+184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
+184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
+1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
+1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
+1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
+1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
+1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
+1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
+1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
+1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
+1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
+1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
+185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
+185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
+185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
+185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
+185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
+185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
+1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
+1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
+1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
+1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
+1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
+1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
+1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
+1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
+1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
+1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
+186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
+186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
+186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
+186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
+186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
+186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
+1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
+1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
+1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
+1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
+1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
+1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
+1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
+1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
+1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
+1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
+1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
+1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
+1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
+1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
+1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
+1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
+1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
+1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
+188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
+188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
+188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
+188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
+1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
+1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
+1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
+1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
+1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
+189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
+189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
+189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
+18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
+18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
+18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
+18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
+18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
+18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
+18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
+1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;;
+1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;;
+1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;;
+1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;;
+1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;;
+1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;;
+1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;;
+1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;;
+1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;;
+1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;;
+190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;;
+190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;;
+190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;;
+190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;;
+190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;;
+190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;;
+1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;;
+1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;;
+1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;;
+1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;;
+1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;;
+1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;;
+1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;;
+1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;;
+1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;;
+1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;;
+191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;;
+191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;;
+191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;;
+1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;;
+1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+1929;LIMBU SUBJOINED LETTER YA;Mc;0;NSM;;;;;N;;;;;
+192A;LIMBU SUBJOINED LETTER RA;Mc;0;NSM;;;;;N;;;;;
+192B;LIMBU SUBJOINED LETTER WA;Mc;0;NSM;;;;;N;;;;;
+1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;;
+1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;;
+1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;;
+1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;;
+1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;;
+1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;;
+1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;;
+1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;;
+1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;;
+193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;;
+193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;;
+1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;;
+1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;;
+1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;;
+1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;;
+1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;;
+1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;;
+1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;;
+1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;;
+1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;;
+1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;;
+1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;;
+195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;;
+195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;;
+195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;;
+195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;;
+195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;;
+195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;;
+1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;;
+1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;;
+1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;;
+1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;;
+1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;;
+1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;;
+1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;;
+1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;;
+1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;;
+1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;;
+196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;;
+196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;;
+196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;;
+196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;;
+1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;;
+1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;;
+1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;;
+1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;;
+1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;;
+19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;;
+19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;;
+19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;;
+19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;;
+19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;;
+19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;;
+19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;;
+19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;;
+19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;;
+19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;;
+19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;;
+19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;;
+19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;;
+19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;;
+19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;;
+19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;;
+19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;;
+19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;;
+19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;;
+19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;;
+19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;;
+19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;;
+19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;;
+19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;;
+19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;;
+19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;;
+19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;;
+19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;;
+19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;;
+19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;;
+19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;;
+19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;;
+1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;;
+1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;;
+1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;;
+1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;;
+1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;;
+1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;;
+1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;;
+1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;;
+1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;;
+1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;;
+1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;;
+1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;;
+1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;;
+1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;;
+1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;;
+1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;;
+1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;;
+1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;;
+1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;;
+1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;;
+1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;;
+1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;;
+1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;;
+1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;;
+1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;;
+1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;;
+1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;;
+1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;;
+1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;;
+1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;;
+1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;;
+1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;;
+1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;;
+1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;;
+1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;;
+1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;;
+1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;;
+1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;;
+1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;;
+1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;;
+1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;;
+1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;;
+1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;;
+1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;;
+1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;;
+1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;;
+1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;;
+1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;;
+1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;;
+1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;;
+1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;;
+1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;;
+1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;;
+1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;;
+1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;;
+1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;;
+1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;;
+1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;;
+1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;;
+1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;;
+1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;;
+1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;;
+1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;;
+1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;;
+1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;;
+1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;;
+1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;;
+1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;;
+1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;;
+1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;;
+1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;;
+1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;;
+1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;;
+1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;;
+1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
+1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;;
+1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;;
+1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;;
+1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;;
+1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;;
+1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;;
+1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;;
+1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;;
+1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;;
+1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;;
+1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;;
+1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;;
+1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;;
+1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;;
+1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;;
+1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;;
+1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;;
+1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;;
+1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;;
+1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;;
+1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;;
+1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L;<sub> 0069;;;;N;;;;;
+1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L;<sub> 0072;;;;N;;;;;
+1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L;<sub> 0075;;;;N;;;;;
+1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L;<sub> 0076;;;;N;;;;;
+1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L;<sub> 03B2;;;;N;;;;;
+1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L;<sub> 03B3;;;;N;;;;;
+1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L;<sub> 03C1;;;;N;;;;;
+1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L;<sub> 03C6;;;;N;;;;;
+1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L;<sub> 03C7;;;;N;;;;;
+1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Zs;0;BN;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
+202F;NARROW NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;;
+2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
+2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
+204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
+204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
+204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;;
+204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;;
+2050;CLOSE UP;Po;0;ON;;;;;N;;;;;
+2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;;
+2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;;
+2053;SWUNG DASH;Po;0;ON;;;;;N;;;;;
+2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;;
+2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;;
+205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2060;WORD JOINER;Cf;0;BN;;;;;N;;;;;
+2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;;
+2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;;
+2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L;<super> 0069;;;;N;;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
+20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
+20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
+20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;;
+20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
+20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
+20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;;
+20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;;
+20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;;
+20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;;
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
+213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
+213B;FACSIMILE SIGN;So;0;ON;<compat> 0046 0041 0058;;;;N;;;;;
+213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;;
+2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;;
+2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
+2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
+2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;;
+2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+214A;PROPERTY LINE;So;0;ON;;;;;N;;;;;
+214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Nl;0;L;;;;;N;;;;;
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
+21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
+21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
+21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
+21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
+21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;;
+22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
+237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;;
+237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
+237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
+237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
+2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
+2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
+2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
+2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
+2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
+2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
+2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;;
+238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;;
+238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;;
+238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
+238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
+238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
+238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
+2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
+2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
+2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
+2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
+2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
+239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
+23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
+23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
+23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
+23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
+23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
+23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;;
+23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;;
+23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
+23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
+23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;;
+23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;;
+23B4;TOP SQUARE BRACKET;Ps;0;ON;;;;;N;;;;;
+23B5;BOTTOM SQUARE BRACKET;Pe;0;ON;;;;;N;;;;;
+23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;Po;0;ON;;;;;N;;;;;
+23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;;
+23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
+23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
+23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;;
+23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;;
+23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;;
+23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;;
+23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;;
+23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
+23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;;
+23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
+23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
+23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;;
+23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;;
+23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;;
+23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;;
+23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;;
+23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;;
+23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;;
+23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
+2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;;
+24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;;
+24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;;
+24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;;
+24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;;
+24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;;
+24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;;
+24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;;
+24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;;
+24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;;
+24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;;
+24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;;
+24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;;
+24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;;
+24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;;
+24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;;
+24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;;
+24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;;
+24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;;
+24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;;
+24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;;
+24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;;
+2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;;
+2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;;
+2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;;
+259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
+25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
+25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
+25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
+25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;;
+2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;;
+2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;
+2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;
+2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
+2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
+2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;;
+2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;;
+2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;;
+2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;;
+2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;;
+2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;;
+2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;;
+267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;;
+267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
+267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
+267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
+2680;DIE FACE-1;So;0;ON;;;;;N;;;;;
+2681;DIE FACE-2;So;0;ON;;;;;N;;;;;
+2682;DIE FACE-3;So;0;ON;;;;;N;;;;;
+2683;DIE FACE-4;So;0;ON;;;;;N;;;;;
+2684;DIE FACE-5;So;0;ON;;;;;N;;;;;
+2685;DIE FACE-6;So;0;ON;;;;;N;;;;;
+2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;;
+2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;;
+2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;;
+2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;;
+268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;;
+268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;;
+268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;;
+268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;;
+268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;;
+268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;;
+2690;WHITE FLAG;So;0;ON;;;;;N;;;;;
+2691;BLACK FLAG;So;0;ON;;;;;N;;;;;
+26A0;WARNING SIGN;So;0;ON;;;;;N;;;;;
+26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;;
+27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;;
+27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;;
+27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
+27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
+27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
+27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
+27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;;
+27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;;
+27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;;
+27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;;
+27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;;
+27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;;
+27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;;
+27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
+2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;;
+2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;;
+2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;;
+2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;;
+2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;;
+2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;;
+2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;;
+2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;;
+2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;;
+2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;;
+280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;;
+280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;;
+280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;;
+280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;;
+280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;;
+280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;;
+2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;;
+2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;;
+2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;;
+2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;;
+2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;;
+2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;;
+2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;;
+2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;;
+2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;;
+2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;;
+281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;;
+281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;;
+281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;;
+281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;;
+281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;;
+281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;;
+2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;;
+2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;;
+2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;;
+2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;;
+2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;;
+2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;;
+2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;;
+2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;;
+2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;;
+2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;;
+282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;;
+282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;;
+282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;;
+282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;;
+282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;;
+282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;;
+2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;;
+2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;;
+2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;;
+2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;;
+2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;;
+2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;;
+2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;;
+2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;;
+2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;;
+2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;;
+283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;;
+283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;;
+283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;;
+283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;;
+283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;;
+283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;;
+2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;;
+2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;;
+2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;;
+2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;;
+2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;;
+2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;;
+2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;;
+2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;;
+2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;;
+2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;;
+284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;;
+284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;;
+284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;;
+284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;;
+284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;;
+284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;;
+2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;;
+2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;;
+2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;;
+2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;;
+2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;;
+2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;;
+2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;;
+2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;;
+2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;;
+2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;;
+285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;;
+285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;;
+285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;;
+285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;;
+285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;;
+285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;;
+2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;;
+2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;;
+2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;;
+2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;;
+2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;;
+2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;;
+2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;;
+2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;;
+2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;;
+2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;;
+286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;;
+286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;;
+286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;;
+286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;;
+286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;;
+286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;;
+2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;;
+2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;;
+2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;;
+2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;;
+2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;;
+2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;;
+2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;;
+2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;;
+2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;;
+2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;;
+287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;;
+287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;;
+287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;;
+287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;;
+287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;;
+287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;;
+2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;;
+2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;;
+2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;;
+2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;;
+2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;;
+2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;;
+2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;;
+2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;;
+2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;;
+2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;;
+288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;;
+288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;;
+288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;;
+288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;;
+288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;;
+288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;;
+2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;;
+2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;;
+2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;;
+2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;;
+2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;;
+2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;;
+2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;;
+2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;;
+2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;;
+2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;;
+289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;;
+289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;;
+289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;;
+289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;;
+289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;;
+289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;;
+28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;;
+28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;;
+28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;;
+28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;;
+28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;;
+28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;;
+28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;;
+28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;;
+28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;;
+28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;;
+28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;;
+28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;;
+28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;;
+28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;;
+28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;;
+28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;;
+28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;;
+28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;;
+28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;;
+28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;;
+28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;;
+28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;;
+28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;;
+28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;;
+28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;;
+28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;;
+28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;;
+28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;;
+28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;;
+28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;;
+28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;;
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;;
+28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;;
+28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;;
+28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;;
+28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;;
+28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;;
+28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;;
+28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;;
+28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;;
+28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;;
+28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;;
+28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;;
+28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;;
+28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;;
+28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;;
+28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;;
+28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;;
+28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;;
+28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;;
+28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;;
+28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;;
+28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;;
+28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;;
+28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;;
+28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;;
+28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;;
+28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;;
+28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;;
+28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;;
+28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;;
+28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;;
+28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;;
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;;
+28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;;
+28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;;
+28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;;
+28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;;
+28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;;
+28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;;
+28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;;
+28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;;
+28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;;
+28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;;
+28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;;
+28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;;
+28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;;
+28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;;
+28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;;
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;;
+28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;;
+28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;;
+28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;;
+28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;;
+28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;;
+28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;;
+28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;;
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;;
+28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;;
+28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;;
+28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;;
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;;
+28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;;
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;;
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;;
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;;
+2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
+290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
+290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
+2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
+2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
+2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
+2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;;
+292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;;
+292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;;
+2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;;
+2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
+2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;;
+2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;;
+2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;;
+293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;;
+293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
+2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
+2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
+2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
+294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
+294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
+294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
+294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
+294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
+2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
+2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
+2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
+2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
+2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
+2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
+2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
+2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
+2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
+2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
+295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
+295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
+295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
+295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
+295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
+295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
+2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
+2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
+2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
+2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
+2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
+296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
+296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
+296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
+296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;;
+2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;;
+297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;;
+2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;;
+2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;;
+2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;;
+2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;;
+2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;;
+2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;;
+2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;;
+2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;;
+298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;;
+298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;;
+298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;;
+298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;;
+298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;;
+298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;;
+2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;;
+2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;;
+2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;;
+2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
+2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
+2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
+2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
+2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
+2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
+2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;;
+299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;;
+299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
+299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;;
+299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;;
+299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;;
+299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
+29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;;
+29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;;
+29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;;
+29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;;
+29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;;
+29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;;
+29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;;
+29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;;
+29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;;
+29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;;
+29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
+29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
+29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;;
+29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;;
+29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
+29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;;
+29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;;
+29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;;
+29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;;
+29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
+29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
+29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
+29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
+29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;;
+29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;;
+29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;;
+29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;;
+29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;;
+29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;;
+29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;;
+29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;;
+29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
+29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
+29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
+29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
+29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;;
+29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;;
+29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;;
+29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;;
+29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;;
+29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;;
+29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
+29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
+29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
+29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;;
+29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;;
+29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;;
+29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;;
+29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;;
+29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;;
+29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;;
+29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;;
+29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;;
+29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
+29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;;
+29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;;
+29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+29FE;TINY;Sm;0;ON;;;;;N;;;;;
+29FF;MINY;Sm;0;ON;;;;;N;;;;;
+2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;;
+2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;;
+2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;;
+2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;;
+2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;;
+2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;;
+2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;;
+2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;;
+2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
+2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
+2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;;
+2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;;
+2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;;
+2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;;
+2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;;
+2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+2A1D;JOIN;Sm;0;ON;;;;;N;;;;;
+2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;;
+2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;;
+2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;;
+2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;;
+2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;;
+2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;;
+2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;;
+2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;;
+2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;;
+2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;;
+2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;;
+2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;;
+2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;;
+2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;;
+2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
+2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
+2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;;
+2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;;
+2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;;
+2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
+2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
+2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
+2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
+2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
+2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
+2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;;
+2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;;
+2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;;
+2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;;
+2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;;
+2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;;
+2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;;
+2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;;
+2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;;
+2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;;
+2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;;
+2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
+2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
+2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;;
+2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;;
+2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;;
+2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;;
+2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
+2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
+2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;;
+2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;;
+2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
+2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;;
+2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;;
+2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;;
+2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;;
+2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;;
+2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;;
+2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;;
+2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
+2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
+2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;;
+2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
+2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
+2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;;
+2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;;
+2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;;
+2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;;
+2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
+2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
+2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
+2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
+2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
+2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
+2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
+2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
+2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
+2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
+2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
+2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
+2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
+2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
+2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
+2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
+2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
+2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
+2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
+2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
+2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
+2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
+2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
+2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
+2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
+2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
+2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
+2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
+2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
+2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
+2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
+2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
+2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
+2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
+2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
+2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
+2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
+2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
+2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
+2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
+2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
+2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
+2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
+2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
+2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
+2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
+2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
+2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
+2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
+2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
+2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
+2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
+2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
+2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
+2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
+2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
+2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
+2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
+2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
+2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
+2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
+2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
+2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
+2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
+2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
+2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
+2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
+2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
+2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
+2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
+2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
+2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
+2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
+2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
+2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
+2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
+2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
+2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
+2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
+2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
+2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
+2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
+2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
+2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
+2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
+2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
+2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
+2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
+2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
+2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
+2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
+2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
+2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
+2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
+2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
+2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
+2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
+2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
+2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
+2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
+2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
+2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
+2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
+2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
+2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
+2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
+2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
+2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
+2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
+2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
+2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
+2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
+2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
+2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
+2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
+2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
+2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
+2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
+2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
+2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
+2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
+2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
+2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
+2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
+2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
+2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
+2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
+2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
+2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
+2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
+2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
+2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
+2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
+2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
+2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
+2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
+2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
+2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
+2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
+2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
+2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
+2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
+2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
+2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
+2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
+2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
+2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
+2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
+2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
+2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
+2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
+2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
+2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
+2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
+2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
+2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
+2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
+2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
+2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
+2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
+2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
+2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
+2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
+2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
+2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
+2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
+2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
+2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
+2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
+2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
+2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
+2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
+2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
+2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
+2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
+2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
+2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
+2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
+2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
+2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
+2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
+2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
+2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
+2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
+2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
+2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
+2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
+2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
+2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
+2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
+2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
+2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
+2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
+2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
+2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
+2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
+2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
+2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
+2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
+2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
+2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
+2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
+2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
+2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
+2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
+2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
+2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
+2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
+2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
+2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
+2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
+2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
+2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
+2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
+2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
+2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
+2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
+2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
+2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
+2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
+2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
+2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
+2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
+2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
+2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
+2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
+2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
+2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
+2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
+2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
+2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
+2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
+2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
+2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
+2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
+2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
+2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
+2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
+2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
+2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
+2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
+2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
+2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
+2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
+2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
+2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
+2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
+2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
+2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
+2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
+2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
+2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
+2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
+2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
+2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
+2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
+2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
+2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
+2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
+2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
+2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
+2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
+2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
+2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
+2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
+2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
+2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
+2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
+2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
+2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
+2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
+2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
+2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
+2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
+2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
+2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
+2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
+2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
+2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
+2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
+2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
+2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
+2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
+2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
+2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
+2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
+2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
+2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
+2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
+2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
+2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
+2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
+2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
+2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
+2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
+2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
+2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
+2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
+2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
+2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
+2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
+2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
+2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
+2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
+2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
+2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
+2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
+2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
+2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
+2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
+2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
+2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
+2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
+2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
+2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
+2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
+2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
+2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
+2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
+2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
+2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
+2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
+2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
+2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
+2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
+2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
+2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
+2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
+2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
+2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
+2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
+2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
+2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
+2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
+2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
+3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
+303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
+303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+303C;MASU MARK;Lo;0;L;;;;;N;;;;;
+303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;;
+303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;;
+30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Pc;0;ON;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
+31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
+31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
+31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
+31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
+31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
+31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
+31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
+31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
+31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
+31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
+31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
+31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
+31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
+31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
+31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
+31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
+31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
+31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
+31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
+31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
+31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
+31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
+31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
+31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;
+31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;
+31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;;
+31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;;
+31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;;
+31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;;
+31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;;
+31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;;
+31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;;
+31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;;
+31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;;
+31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;;
+31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;;
+31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;;
+31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;;
+31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON;<compat> 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;;
+321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON;<compat> 0028 110B 1169 1112 116E 0029;;;;N;;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3250;PARTNERSHIP SIGN;So;0;ON;<square> 0050 0054 0045;;;;N;;;;;
+3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;;
+3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;;
+3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;;
+3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;;
+3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;;
+3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;;
+3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;;
+3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;;
+3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;;
+325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;;
+325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;;
+325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;;
+325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;;
+325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;;
+325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON;<circle> 110E 1161 11B7 1100 1169;;;;N;;;;;
+327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON;<circle> 110C 116E 110B 1174;;;;N;;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;;
+32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;;
+32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;;
+32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;;
+32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;;
+32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;;
+32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;;
+32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;;
+32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;;
+32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;;
+32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;;
+32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;;
+32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;;
+32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;;
+32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32CC;SQUARE HG;So;0;ON;<square> 0048 0067;;;;N;;;;;
+32CD;SQUARE ERG;So;0;ON;<square> 0065 0072 0067;;;;N;;;;;
+32CE;SQUARE EV;So;0;ON;<square> 0065 0056;;;;N;;;;;
+32CF;LIMITED LIABILITY SIGN;So;0;ON;<square> 004C 0054 0044;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+3377;SQUARE DM;So;0;ON;<square> 0064 006D;;;;N;;;;;
+3378;SQUARE DM SQUARED;So;0;ON;<square> 0064 006D 00B2;;;;N;;;;;
+3379;SQUARE DM CUBED;So;0;ON;<square> 0064 006D 00B3;;;;N;;;;;
+337A;SQUARE IU;So;0;ON;<square> 0049 0055;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33DE;SQUARE V OVER M;So;0;ON;<square> 0056 2215 006D;;;;N;;;;;
+33DF;SQUARE A OVER M;So;0;ON;<square> 0041 2215 006D;;;;N;;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;;
+3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
+4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;;
+4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;;
+4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;;
+4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;;
+4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
+4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;;
+4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;;
+4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;;
+4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;;
+4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;;
+4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;;
+4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;;
+4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;;
+4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;;
+4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;;
+4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;;
+4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
+4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;;
+4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;;
+4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;;
+4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;;
+4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;;
+4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;;
+4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;;
+4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;;
+4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;;
+4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;;
+4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;;
+4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;;
+4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;;
+4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;;
+4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;;
+4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;;
+4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;;
+4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;;
+4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;;
+4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;;
+4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
+4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;;
+4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;;
+4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;;
+4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
+4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;;
+4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;;
+4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;;
+4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;;
+4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;;
+4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;;
+4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;;
+4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;;
+4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;;
+4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;;
+4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;;
+4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;;
+4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;;
+4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;;
+4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;;
+4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;;
+4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;;
+4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;;
+4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;;
+4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;;
+4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
+4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
+A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
+A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
+A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
+A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
+A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
+A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
+A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
+A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
+A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
+A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
+A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
+A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
+A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
+A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
+A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
+A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
+A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A015;YI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
+A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
+A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
+A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
+A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
+A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
+A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
+A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
+A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
+A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
+A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
+A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
+A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
+A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
+A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
+A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
+A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
+A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
+A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
+A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
+A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
+A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
+A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
+A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
+A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
+A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
+A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
+A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
+A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
+A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
+A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
+A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
+A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
+A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
+A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
+A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
+A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
+A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
+A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
+A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
+A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
+A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
+A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
+A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
+A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
+A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
+A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
+A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
+A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
+A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
+A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
+A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
+A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
+A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
+A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
+A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
+A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
+A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
+A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
+A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
+A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
+A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
+A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
+A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
+A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
+A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
+A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
+A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
+A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
+A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
+A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
+A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
+A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
+A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
+A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
+A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
+A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
+A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
+A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
+A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
+A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
+A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
+A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
+A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
+A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
+A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
+A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
+A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
+A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
+A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
+A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
+A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
+A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
+A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
+A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
+A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
+A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
+A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
+A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
+A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
+A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
+A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
+A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
+A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
+A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
+A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
+A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
+A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
+A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
+A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
+A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
+A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
+A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
+A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
+A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
+A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
+A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
+A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
+A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
+A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
+A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
+A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
+A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
+A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
+A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
+A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
+A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
+A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
+A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
+A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
+A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
+A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
+A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
+A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
+A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
+A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
+A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
+A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
+A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
+A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
+A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
+A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
+A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
+A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
+A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
+A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
+A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
+A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
+A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
+A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
+A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
+A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
+A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
+A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
+A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
+A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
+A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
+A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
+A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
+A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
+A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
+A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
+A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
+A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
+A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
+A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
+A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
+A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
+A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
+A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
+A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
+A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
+A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
+A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
+A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
+A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
+A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
+A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
+A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
+A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
+A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
+A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
+A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
+A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
+A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
+A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
+A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
+A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
+A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
+A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
+A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
+A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
+A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
+A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
+A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
+A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
+A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
+A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
+A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
+A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
+A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
+A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
+A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
+A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
+A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
+A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
+A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
+A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
+A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
+A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
+A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
+A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
+A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
+A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
+A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
+A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
+A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
+A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
+A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
+A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
+A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
+A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
+A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
+A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
+A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
+A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
+A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
+A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
+A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
+A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
+A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
+A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
+A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
+A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
+A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
+A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
+A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
+A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
+A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
+A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
+A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
+A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
+A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
+A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
+A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
+A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
+A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
+A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
+A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
+A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
+A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
+A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
+A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
+A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
+A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
+A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
+A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
+A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
+A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
+A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
+A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
+A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
+A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
+A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
+A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
+A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
+A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
+A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
+A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
+A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
+A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
+A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
+A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
+A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
+A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
+A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
+A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
+A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
+A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
+A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
+A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
+A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
+A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
+A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
+A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
+A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
+A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
+A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
+A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
+A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
+A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
+A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
+A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
+A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
+A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
+A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
+A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
+A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
+A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
+A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
+A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
+A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
+A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
+A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
+A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
+A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
+A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
+A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
+A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
+A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
+A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
+A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
+A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
+A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
+A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
+A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
+A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
+A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
+A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
+A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
+A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
+A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
+A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
+A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
+A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
+A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
+A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
+A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
+A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
+A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
+A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
+A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
+A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
+A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
+A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
+A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
+A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
+A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
+A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
+A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
+A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
+A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
+A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
+A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
+A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
+A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
+A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
+A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
+A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
+A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
+A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
+A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
+A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
+A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
+A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
+A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
+A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
+A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
+A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
+A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
+A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
+A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
+A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
+A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
+A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
+A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
+A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
+A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
+A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
+A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
+A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
+A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
+A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
+A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
+A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
+A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
+A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
+A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
+A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
+A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
+A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
+A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
+A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
+A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
+A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
+A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
+A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
+A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
+A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
+A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
+A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
+A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
+A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
+A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
+A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
+A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
+A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
+A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
+A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
+A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
+A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
+A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
+A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
+A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
+A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
+A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
+A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
+A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
+A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
+A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
+A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
+A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
+A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
+A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
+A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
+A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
+A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
+A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
+A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
+A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
+A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
+A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
+A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
+A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
+A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
+A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
+A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
+A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
+A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
+A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
+A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
+A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
+A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
+A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
+A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
+A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
+A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
+A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
+A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
+A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
+A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
+A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
+A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
+A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
+A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
+A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
+A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
+A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
+A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
+A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
+A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
+A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
+A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
+A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
+A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
+A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
+A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
+A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
+A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
+A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
+A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
+A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
+A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
+A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
+A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
+A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
+A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
+A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
+A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
+A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
+A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
+A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
+A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
+A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
+A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
+A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
+A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
+A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
+A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
+A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
+A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
+A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
+A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
+A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
+A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
+A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
+A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
+A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
+A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
+A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
+A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
+A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
+A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
+A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
+A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
+A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
+A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
+A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
+A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
+A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
+A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
+A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
+A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
+A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
+A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
+A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
+A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
+A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
+A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
+A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
+A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
+A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
+A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
+A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
+A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
+A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
+A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
+A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
+A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
+A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
+A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
+A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
+A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
+A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
+A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
+A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
+A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
+A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
+A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
+A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
+A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
+A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
+A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
+A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
+A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
+A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
+A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
+A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
+A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
+A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
+A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
+A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
+A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
+A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
+A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
+A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
+A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
+A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
+A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
+A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
+A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
+A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
+A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
+A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
+A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
+A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
+A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
+A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
+A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
+A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
+A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
+A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
+A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
+A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
+A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
+A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
+A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
+A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
+A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
+A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
+A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
+A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
+A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
+A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
+A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
+A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
+A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
+A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
+A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
+A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
+A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
+A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
+A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
+A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
+A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
+A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
+A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
+A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
+A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
+A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
+A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
+A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
+A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
+A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
+A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
+A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
+A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
+A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
+A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
+A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
+A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
+A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
+A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
+A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
+A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
+A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
+A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
+A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
+A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
+A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
+A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
+A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
+A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
+A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
+A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
+A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
+A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
+A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
+A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
+A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
+A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
+A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
+A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
+A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
+A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
+A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
+A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
+A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
+A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
+A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
+A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
+A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
+A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
+A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
+A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
+A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
+A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
+A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
+A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
+A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
+A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
+A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
+A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
+A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
+A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
+A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
+A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
+A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
+A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
+A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
+A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
+A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
+A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
+A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
+A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
+A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
+A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
+A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
+A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
+A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
+A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
+A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
+A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
+A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
+A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
+A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
+A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
+A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
+A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
+A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
+A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
+A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
+A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
+A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
+A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
+A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
+A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
+A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
+A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
+A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
+A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
+A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
+A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
+A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
+A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
+A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
+A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
+A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
+A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
+A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
+A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
+A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
+A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
+A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
+A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
+A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
+A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
+A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
+A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
+A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
+A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
+A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
+A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
+A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
+A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
+A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
+A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
+A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
+A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
+A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
+A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
+A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
+A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
+A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
+A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
+A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
+A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
+A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
+A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
+A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
+A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
+A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
+A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
+A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
+A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
+A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
+A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
+A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
+A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
+A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
+A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
+A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
+A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
+A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
+A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
+A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
+A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
+A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
+A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
+A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
+A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
+A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
+A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
+A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
+A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
+A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
+A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
+A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
+A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
+A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
+A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
+A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
+A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
+A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
+A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
+A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
+A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
+A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
+A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
+A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
+A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
+A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
+A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
+A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
+A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
+A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
+A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
+A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
+A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
+A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
+A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
+A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
+A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
+A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
+A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
+A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
+A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
+A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
+A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
+A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
+A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
+A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
+A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
+A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
+A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
+A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
+A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
+A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
+A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
+A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
+A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
+A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
+A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
+A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
+A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
+A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
+A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
+A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
+A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
+A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
+A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
+A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
+A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
+A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
+A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
+A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
+A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
+A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
+A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
+A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
+A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
+A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
+A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
+A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
+A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
+A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
+A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
+A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
+A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
+A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
+A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
+A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
+A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
+A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
+A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
+A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
+A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
+A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
+A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
+A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
+A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
+A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
+A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
+A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
+A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
+A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
+A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
+A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
+A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
+A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
+A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
+A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
+A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
+A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
+A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
+A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
+A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
+A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
+A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
+A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
+A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
+A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
+A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
+A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
+A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
+A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
+A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
+A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
+A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
+A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
+A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
+A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
+A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
+A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
+A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
+A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
+A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
+A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
+A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
+A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
+A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
+A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
+A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
+A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
+A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
+A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
+A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
+A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
+A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
+A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
+A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
+A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
+A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
+A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
+A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
+A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
+A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
+A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
+A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
+A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
+A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
+A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
+A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
+A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
+A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
+A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
+A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
+A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
+A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
+A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
+A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
+A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
+A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
+A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
+A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
+A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
+A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
+A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
+A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
+A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
+A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
+A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
+A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
+A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
+A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
+A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
+A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
+A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
+A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
+A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
+A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
+A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
+A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
+A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
+A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
+A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
+A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
+A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
+A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
+A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
+A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
+A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
+A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
+A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
+A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
+A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
+A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
+A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
+A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
+A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
+A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
+A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
+A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
+A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
+A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
+A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
+A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
+A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
+A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
+A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
+A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
+A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
+A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
+A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
+A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
+A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
+A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
+A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
+A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
+A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
+A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
+A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
+A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
+A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
+A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
+A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
+A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
+A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
+A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
+A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
+A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
+A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
+A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
+A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
+A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
+A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
+A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
+A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
+A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
+A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
+A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
+A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
+A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
+A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
+A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
+A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
+A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
+A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
+A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
+A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
+A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
+A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
+A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
+A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
+A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
+A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
+A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
+A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
+A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
+A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
+A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
+A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
+A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
+A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
+A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
+A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
+A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
+A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
+A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
+A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
+A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
+A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
+A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
+A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
+A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
+A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
+A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
+A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
+A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
+A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
+A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
+A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
+A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
+A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
+A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
+A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
+A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
+A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
+A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
+A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
+A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;;
+A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;;
+A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
+A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
+A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
+A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
+A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
+A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
+A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
+A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
+A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
+A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
+A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
+A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
+A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
+A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
+A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
+A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
+A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;;
+A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
+A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
+A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
+A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
+A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
+A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
+A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
+A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
+A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
+A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
+A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
+A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
+A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;;
+A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
+A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
+A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
+A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;;
+A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;;
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;;
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;;
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
+FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;;
+FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;;
+FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;;
+FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;;
+FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;;
+FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;;
+FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;;
+FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;;
+FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;;
+FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;;
+FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;;
+FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;;
+FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;;
+FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;;
+FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;;
+FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;;
+FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;;
+FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;;
+FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;;
+FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;;
+FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;;
+FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;;
+FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;;
+FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;;
+FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;;
+FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;;
+FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;;
+FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;;
+FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;;
+FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;;
+FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;;
+FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;;
+FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;;
+FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;;
+FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;;
+FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;;
+FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;;
+FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;;
+FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;;
+FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;;
+FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;;
+FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;;
+FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;;
+FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;;
+FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;;
+FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;;
+FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;;
+FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;;
+FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;;
+FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;;
+FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;;
+FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;;
+FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;;
+FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;;
+FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;;
+FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;;
+FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;;
+FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;;
+FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;;
+FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;;
+FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;;
+FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;;
+FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;;
+FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;;
+FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;;
+FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;;
+FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;;
+FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;;
+FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;;
+FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;;
+FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;;
+FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;;
+FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;;
+FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;;
+FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;;
+FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE45;SESAME DOT;Po;0;ON;;;;;N;;;;;
+FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;;
+FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON;<vertical> 005B;;;;N;;;;;
+FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON;<vertical> 005D;;;;N;;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;*;;;
+FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;*;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;ON;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;BN;;;;;N;;;;;
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;;
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;;
+10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;;
+10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;;
+10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;;
+10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;;
+10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;;
+10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;;
+10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;;
+10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;;
+10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;;
+1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;;
+1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;;
+1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;;
+1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;;
+1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;;
+10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;;
+10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;;
+10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;;
+10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;;
+10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;;
+10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;;
+10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;;
+10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;;
+10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;;
+10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;;
+1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;;
+1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;;
+1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;;
+1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;;
+1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;;
+1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;;
+10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;;
+10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;;
+10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;;
+10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;;
+10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;;
+10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;;
+10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;;
+10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;;
+10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;;
+1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;;
+1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;;
+1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;;
+1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;;
+1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;;
+1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;;
+10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;;
+10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;;
+10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;;
+10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;;
+10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;;
+10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;;
+10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;;
+10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;;
+10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;;
+10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;;
+1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;;
+1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;;
+1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;;
+1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;;
+10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;;
+10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;;
+10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;;
+10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;;
+10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;;
+10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;;
+10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;;
+10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;;
+10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;;
+10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;;
+1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;;
+1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;;
+1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;;
+1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;;
+10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;;
+10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;;
+10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;;
+10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;;
+10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;;
+10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;;
+10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;;
+10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;;
+10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;;
+10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;;
+1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;;
+1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;;
+1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;;
+1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;;
+10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;;
+10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;;
+10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;;
+10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;;
+10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;;
+10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;;
+10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;;
+10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;;
+10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;;
+10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;;
+1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;;
+1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;;
+1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;;
+1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;;
+1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;;
+1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;;
+10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;;
+10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;;
+10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;;
+10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;;
+10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;;
+10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;;
+10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;;
+10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;;
+10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;;
+10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;;
+1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;;
+1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;;
+1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;;
+1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;;
+1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;;
+1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;;
+100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;;
+100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;;
+100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;;
+100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;;
+100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;;
+100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;;
+100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;;
+100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;;
+100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;;
+100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;;
+100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;;
+100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;;
+100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;;
+100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;;
+100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;;
+100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;;
+100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;;
+100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;;
+100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;;
+100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;;
+100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;;
+100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;;
+100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;;
+100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;;
+100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;;
+100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;;
+100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;;
+100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;;
+100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;;
+100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;;
+100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;;
+100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;;
+100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;;
+100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;;
+100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;;
+100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;;
+100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;;
+100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;;
+100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;;
+100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;;
+100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;;
+100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;pug;;;
+100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;;
+100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;gup;;;
+100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;;
+100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;;
+100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;;
+100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;;
+100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;;
+100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;;
+100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;;
+100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;;
+100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;;
+100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;;
+100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;;
+100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;;
+100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;;
+100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;;
+100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;;
+100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;;
+100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;;
+100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;;
+100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;;
+100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;;
+100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;;
+100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;;
+100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;;
+100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;;
+100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;;
+100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;;
+100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;;
+100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;;
+100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;;
+100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;;
+100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;;
+100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;;
+100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;;
+100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;;
+100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;;
+100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;;
+100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;;
+100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;;
+100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;;
+100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;;
+100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;;
+100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;;
+100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;;
+100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;;
+100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;;
+100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;;
+100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;;
+10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;;
+10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;;
+10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;;
+10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;;
+10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;;
+10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;;
+1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;;
+1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;;
+1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;;
+1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;;
+1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;;
+1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;;
+10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;;
+10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;;
+10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;;
+10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;;
+1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;;
+1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;;
+1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;;
+1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;;
+1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;;
+10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;;
+10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;;
+10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;;
+10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;;
+10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;;
+10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;;
+10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;;
+10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;;
+10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;;
+1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;;
+1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;;
+1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;;
+1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;;
+1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;;
+10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;;
+10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;;
+10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;;
+10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;;
+10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;;
+10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;;
+1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;;
+1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;;
+1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;;
+1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;;
+10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;;
+10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;;
+10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;;
+10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;;
+10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;;
+10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;;
+10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;;
+10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;;
+10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;;
+10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;;
+1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;;
+1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;;
+1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;;
+1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;;
+1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;;
+1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;;
+10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;;
+10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;;
+10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;;
+10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;;
+10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;;
+10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;;
+10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;;
+10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;;
+10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;;
+10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;;
+1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;;
+1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;;
+1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;;
+1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;;
+1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;;
+10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;;
+10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;;
+10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;;
+10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;;
+10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;;
+10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;;
+10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;;
+10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;;
+10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;;
+10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;;
+10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;;
+10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;;
+10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;;
+10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;;
+1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;;
+1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;;
+1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;;
+1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;;
+1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;;
+1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;;
+10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;;
+10341;GOTHIC LETTER NINETY;Lo;0;L;;;;;N;;;;;
+10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;;
+10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;;
+10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;;
+10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;;
+10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;;
+10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;;
+10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;;
+10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;;
+1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;;N;;;;;
+10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;;
+10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;;
+10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;;
+10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;;
+10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;;
+10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;;
+10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;;
+10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;;
+10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;;
+10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;;
+1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;;
+1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;;
+1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;;
+1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;;
+1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;;
+1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;;
+10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;;
+10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;;
+10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;;
+10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;;
+10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;;
+10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;;
+10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;;
+10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;;
+10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;;
+10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;;
+1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;;
+1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;;
+1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;;
+1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;;
+1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;;
+10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428;
+10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429;
+10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A;
+10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B;
+10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C;
+10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D;
+10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E;
+10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F;
+10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430;
+10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431;
+1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432;
+1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433;
+1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434;
+1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435;
+1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436;
+1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437;
+10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438;
+10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439;
+10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A;
+10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B;
+10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C;
+10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D;
+10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E;
+10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F;
+10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440;
+10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441;
+1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442;
+1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443;
+1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444;
+1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445;
+1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446;
+1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447;
+10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448;
+10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449;
+10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A;
+10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B;
+10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C;
+10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D;
+10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E;
+10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F;
+10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400
+10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401
+1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402
+1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403
+1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404
+1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405
+1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406
+1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407
+10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408
+10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409
+10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A
+10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B
+10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C
+10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D
+10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E
+10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F
+10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410
+10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411
+1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412
+1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413
+1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414
+1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415
+1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416
+1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417
+10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418
+10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419
+10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A
+10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B
+10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C
+10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D
+10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E
+10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F
+10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420
+10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421
+1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422
+1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423
+1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424
+1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425
+1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426
+1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427
+10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;;
+10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;;
+10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;;
+10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;;
+10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;;
+10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;;
+10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;;
+10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;;
+10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;;
+10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;;
+1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;;
+1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;;
+1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;;
+1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;;
+1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;;
+1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;;
+10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;;
+10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;;
+10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;;
+10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;;
+10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;;
+10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;;
+10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;;
+10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;;
+10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;;
+10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;;
+1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;;
+1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;;
+1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;;
+1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;;
+1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;;
+1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;;
+10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;;
+10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;;
+10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;;
+10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;;
+10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;;
+10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;;
+10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;;
+10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;;
+10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;;
+10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;;
+1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;;
+1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;;
+1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;;
+1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;;
+1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;;
+1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;;
+10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;;
+10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;;
+10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;;
+10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;;
+10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;;
+10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;;
+10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;;
+10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;;
+10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;;
+1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;;
+1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;;
+1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;;
+1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;;
+1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;;
+10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;;
+10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;;
+10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;;
+10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;;
+10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;;
+10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;;
+10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;;
+10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;;
+10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;;
+10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;;
+1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;;
+1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;;
+1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;;
+1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;;
+104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;;
+10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;;
+10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;;
+10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;;
+10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;;
+10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;;
+10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;;
+1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;;
+1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;;
+1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;;
+1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;;
+1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;;
+1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;;
+10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;;
+10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;;
+10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;;
+10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;;
+10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;;
+10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;;
+10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;;
+10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;;
+10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;;
+10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;;
+1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;;
+1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;;
+1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;;
+1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;;
+1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;;
+1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;;
+10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;;
+10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;;
+10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;;
+10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;;
+10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;;
+10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;;
+10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;;
+10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;;
+10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;;
+10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;;
+1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;;
+1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;;
+1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;;
+1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;;
+1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;;
+1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;;
+10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;;
+10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;;
+10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;;
+10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;;
+10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;;
+10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;;
+10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;;
+10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;;
+1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;;
+1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;;
+1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;;
+1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;;
+1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;;
+1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;;
+1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;;
+1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;;
+1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;;
+1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;;
+1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;;
+1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;;
+1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;;
+1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;;
+1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;;
+1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;;
+1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;;
+1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;;
+1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;;
+1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;;
+1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;;
+1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;;
+1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;;
+1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;;
+1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;;
+1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;;
+1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;;
+1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;;
+1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;;
+1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;;
+1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;;
+1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;;
+1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;;
+1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;;
+1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;;
+1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;;
+1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;;
+1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;;
+1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;;
+1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;;
+1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;;
+1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;;
+1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;;
+1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;;
+1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;;
+1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;;
+1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;;
+1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;;
+1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;;
+1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;;
+1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;;
+1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;;
+1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;;
+1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;;
+1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;;
+1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;;
+1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;;
+1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;;
+1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;;
+1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;;
+1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;;
+1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;;
+1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;;
+1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;;
+1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;;
+1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;;
+1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;;
+1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;;
+1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;;
+1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;;
+1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;;
+1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;;
+1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;;
+1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;;
+1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;;
+1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;;
+1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;;
+1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;;
+1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;;
+1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;;
+1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;;
+1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;;
+1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;;
+1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;;
+1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;;
+1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;;
+1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;;
+1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;;
+1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;;
+1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;;
+1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;;
+1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;;
+1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;;
+1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;;
+1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;;
+1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;;
+1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;;
+1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;;
+1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;;
+1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;;
+1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;;
+1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;;
+1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;;
+1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;;
+1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;;
+1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;;
+1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;;
+1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;;
+1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;;
+1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;;
+1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;;
+1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;;
+1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;;
+1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;;
+1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;;
+1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;;
+1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;;
+1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;;
+1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;;
+1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;;
+1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;;
+1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;;
+1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;;
+1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;;
+1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;;
+1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;;
+1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;;
+1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;;
+1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;;
+1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;;
+1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;;
+1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;;
+1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;;
+1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;;
+1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;;
+1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;;
+1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;;
+1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;;
+1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;;
+1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;;
+1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;;
+1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;;
+1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;;
+1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;;
+1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;;
+1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;;
+1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;;
+1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;;
+1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;;
+1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;;
+1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;;
+1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;;
+1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;;
+1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;;
+1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;;
+1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;;
+1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;;
+1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;;
+1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;;
+1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;;
+1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;;
+1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;;
+1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;;
+1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;;
+1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;;
+1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;;
+1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;;
+1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;;
+1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;;
+1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;;
+1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;;
+1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;;
+1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;;
+1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;;
+1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;;
+1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;;
+1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;;
+1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;;
+1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;;
+1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;;
+1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;;
+1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;;
+1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;;
+1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;;
+1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;;
+1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;;
+1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;;
+1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;;
+1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;;
+1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;;
+1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;;
+1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;;
+1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;;
+1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;;
+1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;;
+1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;;
+1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;;
+1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;;
+1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;;
+1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;;
+1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;;
+1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;;
+1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;;
+1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;;
+1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;;
+1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;;
+1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;;
+1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;;
+1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;;
+1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;;
+1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;;
+1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;;
+1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;;
+1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;;
+1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;;
+1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;;
+1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;;
+1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;;
+1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;;
+1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;;
+1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;;
+1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;;
+1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;;
+1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;;
+1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;;
+1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;;
+1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;;
+1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;;
+1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;;
+1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;;
+1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;;
+1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;;
+1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;;
+1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;;
+1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;;
+1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;;
+1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;;
+1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;;
+1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;;
+1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;;
+1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;;
+1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;;
+1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;;
+1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;;
+1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;;
+1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;;
+1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;;
+1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;;
+1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;;
+1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;;
+1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;;
+1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;;
+1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;;
+1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;;
+1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;;
+1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;;
+1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;;
+1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;;
+1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;;
+1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;;
+1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;;
+1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;;
+1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;;
+1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;;
+1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;;
+1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;;
+1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;;
+1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;;
+1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;;
+1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;;
+1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;;
+1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;;
+1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;;
+1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;;
+1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;;
+1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;;
+1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;;
+1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;;
+1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;;
+1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;;
+1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;;
+1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;;
+1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;;
+1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;;
+1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;;
+1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;;
+1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;;
+1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;;
+1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;;
+1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;;
+1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;;
+1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;;
+1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;;
+1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;;
+1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;;
+1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;;
+1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;;
+1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;;
+1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;;
+1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;;
+1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;;
+1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;;
+1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;;
+1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;;
+1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;;
+1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;;
+1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;;
+1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;;
+1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;;
+1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;;
+1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;;
+1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;;
+1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;;
+1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;;
+1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;;
+1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;;
+1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;;
+1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;;
+1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;;
+1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;;
+1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;;
+1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;;
+1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;;
+1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;;
+1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;;
+1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;;
+1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;;
+1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;;
+1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;;
+1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;;
+1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;;
+1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;;
+1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;;
+1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;;
+1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;;
+1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;;
+1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;;
+1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;;
+1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;;
+1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;;
+1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;;
+1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;;
+1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;;
+1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;;
+1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;;
+1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;;
+1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;;
+1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;;
+1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;;
+1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;;;;
+1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;;;;
+1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;;;;
+1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;;;;
+1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;;
+1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;;
+1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;;
+1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;;
+1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;;
+1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;;
+1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;;
+1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
+1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;;
+1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;;
+1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;;
+1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;;
+1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
+1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;;
+1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;;
+1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;;
+1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;;
+1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
+1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
+1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;;
+1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;;
+1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;;
+1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;;
+1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;;
+1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;;
+1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;;
+1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;;
+1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;;
+1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;;
+1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;;
+1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;;
+1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;;
+1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;;
+1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;;
+1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;;
+1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;;
+1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;;
+1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;;
+1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;;
+1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;;
+1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;;
+1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;;
+1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;;
+1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;;
+1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;;
+1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;;
+1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;;
+1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;;
+1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;;
+1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;;
+1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;;
+1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;;
+1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;;
+1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;;
+1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;;
+1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;;
+1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;;
+1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;;
+1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;;
+1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;;
+1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;;
+1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;;
+1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;;
+1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;;
+1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;;
+1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;;
+1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;;
+1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;;
+1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;;
+1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;;
+1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;;
+1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;;
+1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;;
+1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;;
+1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;;
+1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;;
+1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;;
+1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;;
+1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;;
+1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;;
+1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
+2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
+2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;;
+2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;;
+2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;;
+2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;;
+2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;;
+2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;;
+2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;;
+2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;;
+2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;;
+2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;;
+2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;;
+2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;;
+2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;;
+2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;;
+2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;;
+2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;;
+2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;;
+2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;;
+2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;;
+2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;;
+2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;;
+2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;;
+2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;;
+2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;;
+2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;;
+2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;;
+2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;;
+2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;;
+2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;;
+2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;;
+2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;;
+2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;;
+2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;;
+2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;;
+2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;;
+2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;;
+2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;;
+2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;;
+2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;;
+2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;;
+2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;;
+2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;;
+2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;;
+2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;;
+2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;;
+2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;;
+2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;;
+2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;;
+2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;;
+2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;;
+2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;;
+2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;;
+2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;;
+2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;;
+2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;;
+2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;;
+2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;;
+2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;;
+2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;;
+2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;;
+2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;;
+2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;;
+2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;;
+2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;;
+2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;;
+2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;;
+2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;;
+2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;;
+2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;;
+2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;;
+2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;;
+2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;;
+2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;;
+2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;;
+2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;;
+2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;;
+2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;;
+2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;;
+2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;;
+2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;;
+2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;;
+2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;;
+2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;;
+2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;;
+2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;;
+2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;;
+2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;;
+2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;;
+2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;;
+2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;;
+2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;;
+2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;;
+2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;;
+2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;;
+2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;;
+2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;;
+2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;;
+2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;;
+2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;;
+2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;;
+2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;;
+2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;;
+2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;;
+2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;;
+2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;;
+2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;;
+2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;;
+2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;;
+2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;;
+2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;;
+2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;;
+2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;;
+2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;;
+2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;;
+2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;;
+2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;;
+2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;;
+2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;;
+2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;;
+2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;;
+2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;;
+2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;;
+2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;;
+2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;;
+2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;;
+2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;;
+2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;;
+2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;;
+2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;;
+2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;;
+2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;;
+2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;;
+2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;;
+2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;;
+2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;;
+2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;;
+2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;;
+2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;;
+2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;;
+2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;;
+2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;;
+2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;;
+2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;;
+2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;;
+2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;;N;;;;;
+2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;;
+2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;;
+2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;;
+2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;;
+2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;;
+2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;;
+2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;;
+2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;;
+2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;;
+2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;;
+2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;;
+2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;;
+2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;;
+2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;;
+2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;;
+2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;;
+2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;;
+2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;;
+2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;;
+2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;;
+2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;;
+2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;;
+2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;;
+2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;;
+2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;;
+2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;;
+2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;;
+2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;;
+2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;;
+2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;;
+2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;;
+2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;;
+2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;;
+2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;;
+2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;;
+2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;;
+2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;;
+2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;;
+2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;;
+2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;;
+2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;;
+2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;;
+2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;;
+2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;;
+2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;;
+2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;;
+2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;;
+2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;;
+2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;;
+2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;;
+2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;;
+2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;;
+2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;;
+2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;;
+2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;;
+2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;;
+2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;;
+2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;;
+2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;;
+2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;;
+2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;;
+2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;;
+2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;;
+2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;;
+2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;;
+2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;;
+2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;;
+2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;;
+2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;;
+2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;;
+2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;;
+2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;;
+2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;;
+2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;;
+2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;;
+2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;;
+2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;;
+2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;;
+2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;;
+2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;;
+2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;;
+2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;;
+2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;;
+2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;;
+2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;;
+2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;;
+2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;;
+2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;;
+2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;;
+2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;;
+2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;;
+2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;;
+2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;;
+2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;;
+2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;;
+2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;;
+2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;;
+2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;;
+2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;;
+2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;;
+2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;;
+2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;;
+2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;;
+2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;;
+2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;;
+2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;;
+2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;;
+2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;;
+2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;;
+2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;;
+2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;;
+2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;;
+2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;;
+2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;;
+2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;;
+2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;;
+2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;;
+2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;;
+2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;;
+2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;;
+2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;;
+2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;;
+2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;;
+2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;;
+2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;;
+2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;;
+2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;;
+2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;;
+2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;;
+2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;;
+2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;;
+2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;;
+2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;;
+2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;;
+2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;;
+2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;;
+2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;;
+2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;;
+2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;;
+2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;;
+2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;;
+2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;;
+2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;;
+2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;;
+2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;;
+2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;;
+2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;;
+2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;;
+2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;;
+2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;;
+2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;;
+2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;;
+2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;;
+2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;;
+2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;;
+2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;;
+2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;;
+2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;;
+2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;;
+2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;;
+2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;;
+2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;;
+2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;;
+2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;;
+2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;;
+2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;;
+2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;;
+2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;;
+2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;;
+2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;;
+2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;;
+2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;;
+2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;;
+2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;;
+2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;;
+2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;;
+2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;;
+2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;;
+2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;;
+2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;;
+2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;;
+2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;;
+2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;;
+2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;;
+2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;;
+2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;;
+2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;;
+2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;;
+2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;;
+2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;;
+2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;;
+2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;;
+2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;;
+2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;;
+2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;;
+2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;;
+2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;;
+2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;;
+2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;;
+2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;;
+2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;;
+2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;;
+2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;;
+2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;;
+2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;;
+2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;;
+2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;;
+2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;;
+2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;;
+2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;;
+2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;;
+2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;;
+2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;;
+2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;;
+2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;;
+2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;;
+2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;;
+2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;;
+2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;;
+2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;;
+2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;;
+2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;;
+2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;;
+2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;;
+2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;;
+2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;;
+2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;;
+2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;;
+2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;;
+2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;;
+2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;;
+2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;;
+2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;;
+2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;;
+2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;;
+2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;;
+2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;;
+2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;;
+2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;;
+2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;;
+2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;;
+2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;;
+2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;;
+2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;;
+2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;;
+2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;;
+2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;;
+2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;;
+2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;;
+2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;;
+2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;;
+2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;;
+2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;;
+2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;;
+2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;;
+2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;;
+2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;;
+2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;;
+2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;;
+2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;;
+2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;;
+2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;;
+2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;;
+2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;;
+2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;;
+2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;;
+2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;;
+2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;;
+2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;;
+2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;;
+2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;;
+2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;;
+2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;;
+2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;;
+2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;;
+2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;;
+2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;;
+2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;;
+2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;;
+2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;;
+2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;;
+2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;;
+2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;;
+2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;;
+2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;;
+2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;;
+2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;;
+2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;;
+2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;;
+2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;;
+2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;;
+2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;;
+2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;;
+2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;;
+2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;;
+2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;;
+2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;;
+2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;;
+2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;;
+2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;;
+2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;;
+2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;;
+2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;;
+2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;;
+2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;;
+2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;;
+2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;;
+2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;;
+2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;;
+2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;;
+2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;;
+2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;;
+2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;;
+2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;;
+2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;;
+2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;;
+2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;;
+2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;;
+2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;;
+2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;;
+2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;;
+2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;;
+2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;;
+2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;;
+2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;;
+2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;;
+2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;;
+2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;;
+2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;;
+2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;;
+2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;;
+2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;;
+2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;;
+2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;;
+2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;;
+2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;;
+2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;;
+2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;;
+2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;;
+2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;;
+2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;;
+2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;;
+2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;;
+2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;;
+2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;;
+2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;;
+2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;;
+2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;;
+2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;;
+2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;;
+2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;;
+2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;;
+2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;;
+2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;;
+2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;;
+2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;;
+2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;;
+2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;;
+2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;;
+2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;;
+2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;;
+2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;;
+2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;;
+2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;;
+2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;;
+2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;;
+2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;;
+2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;;
+2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;;
+2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;;
+2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;;
+2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;;
+2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;;
+2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;;
+2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;;
+2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;;
+2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;;
+2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;;
+2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;;
+2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;;
+2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;;
+2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;;
+2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;;
+2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;;
+2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;;
+2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;;
+2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;;
+2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;;
+2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;;
+2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;;
+2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;;
+2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;;
+2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;;
+2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;;
+2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;;
+2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;;
+2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;
+E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;;
+E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;;
+E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;;
+E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;;
+E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;;
+E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;;
+E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;;
+E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;;
+E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;;
+E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;;
+E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;;
+E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;;
+E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;;
+E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;;
+E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;;
+E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;;
+E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;;
+E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;;
+E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;;
+E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;;
+E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;;
+E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;;
+E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;;
+E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;;
+E003A;TAG COLON;Cf;0;BN;;;;;N;;;;;
+E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;;
+E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;;
+E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;;
+E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;;
+E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;;
+E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;;
+E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;;
+E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;;
+E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;;
+E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;;
+E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;;
+E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;;
+E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;;
+E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;;
+E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;;
+E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;;
+E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;;
+E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;;
+E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;;
+E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;;
+E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;;
+E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;;
+E0100;VARIATION SELECTOR-17;Mn;0;NSM;;;;;N;;;;;
+E0101;VARIATION SELECTOR-18;Mn;0;NSM;;;;;N;;;;;
+E0102;VARIATION SELECTOR-19;Mn;0;NSM;;;;;N;;;;;
+E0103;VARIATION SELECTOR-20;Mn;0;NSM;;;;;N;;;;;
+E0104;VARIATION SELECTOR-21;Mn;0;NSM;;;;;N;;;;;
+E0105;VARIATION SELECTOR-22;Mn;0;NSM;;;;;N;;;;;
+E0106;VARIATION SELECTOR-23;Mn;0;NSM;;;;;N;;;;;
+E0107;VARIATION SELECTOR-24;Mn;0;NSM;;;;;N;;;;;
+E0108;VARIATION SELECTOR-25;Mn;0;NSM;;;;;N;;;;;
+E0109;VARIATION SELECTOR-26;Mn;0;NSM;;;;;N;;;;;
+E010A;VARIATION SELECTOR-27;Mn;0;NSM;;;;;N;;;;;
+E010B;VARIATION SELECTOR-28;Mn;0;NSM;;;;;N;;;;;
+E010C;VARIATION SELECTOR-29;Mn;0;NSM;;;;;N;;;;;
+E010D;VARIATION SELECTOR-30;Mn;0;NSM;;;;;N;;;;;
+E010E;VARIATION SELECTOR-31;Mn;0;NSM;;;;;N;;;;;
+E010F;VARIATION SELECTOR-32;Mn;0;NSM;;;;;N;;;;;
+E0110;VARIATION SELECTOR-33;Mn;0;NSM;;;;;N;;;;;
+E0111;VARIATION SELECTOR-34;Mn;0;NSM;;;;;N;;;;;
+E0112;VARIATION SELECTOR-35;Mn;0;NSM;;;;;N;;;;;
+E0113;VARIATION SELECTOR-36;Mn;0;NSM;;;;;N;;;;;
+E0114;VARIATION SELECTOR-37;Mn;0;NSM;;;;;N;;;;;
+E0115;VARIATION SELECTOR-38;Mn;0;NSM;;;;;N;;;;;
+E0116;VARIATION SELECTOR-39;Mn;0;NSM;;;;;N;;;;;
+E0117;VARIATION SELECTOR-40;Mn;0;NSM;;;;;N;;;;;
+E0118;VARIATION SELECTOR-41;Mn;0;NSM;;;;;N;;;;;
+E0119;VARIATION SELECTOR-42;Mn;0;NSM;;;;;N;;;;;
+E011A;VARIATION SELECTOR-43;Mn;0;NSM;;;;;N;;;;;
+E011B;VARIATION SELECTOR-44;Mn;0;NSM;;;;;N;;;;;
+E011C;VARIATION SELECTOR-45;Mn;0;NSM;;;;;N;;;;;
+E011D;VARIATION SELECTOR-46;Mn;0;NSM;;;;;N;;;;;
+E011E;VARIATION SELECTOR-47;Mn;0;NSM;;;;;N;;;;;
+E011F;VARIATION SELECTOR-48;Mn;0;NSM;;;;;N;;;;;
+E0120;VARIATION SELECTOR-49;Mn;0;NSM;;;;;N;;;;;
+E0121;VARIATION SELECTOR-50;Mn;0;NSM;;;;;N;;;;;
+E0122;VARIATION SELECTOR-51;Mn;0;NSM;;;;;N;;;;;
+E0123;VARIATION SELECTOR-52;Mn;0;NSM;;;;;N;;;;;
+E0124;VARIATION SELECTOR-53;Mn;0;NSM;;;;;N;;;;;
+E0125;VARIATION SELECTOR-54;Mn;0;NSM;;;;;N;;;;;
+E0126;VARIATION SELECTOR-55;Mn;0;NSM;;;;;N;;;;;
+E0127;VARIATION SELECTOR-56;Mn;0;NSM;;;;;N;;;;;
+E0128;VARIATION SELECTOR-57;Mn;0;NSM;;;;;N;;;;;
+E0129;VARIATION SELECTOR-58;Mn;0;NSM;;;;;N;;;;;
+E012A;VARIATION SELECTOR-59;Mn;0;NSM;;;;;N;;;;;
+E012B;VARIATION SELECTOR-60;Mn;0;NSM;;;;;N;;;;;
+E012C;VARIATION SELECTOR-61;Mn;0;NSM;;;;;N;;;;;
+E012D;VARIATION SELECTOR-62;Mn;0;NSM;;;;;N;;;;;
+E012E;VARIATION SELECTOR-63;Mn;0;NSM;;;;;N;;;;;
+E012F;VARIATION SELECTOR-64;Mn;0;NSM;;;;;N;;;;;
+E0130;VARIATION SELECTOR-65;Mn;0;NSM;;;;;N;;;;;
+E0131;VARIATION SELECTOR-66;Mn;0;NSM;;;;;N;;;;;
+E0132;VARIATION SELECTOR-67;Mn;0;NSM;;;;;N;;;;;
+E0133;VARIATION SELECTOR-68;Mn;0;NSM;;;;;N;;;;;
+E0134;VARIATION SELECTOR-69;Mn;0;NSM;;;;;N;;;;;
+E0135;VARIATION SELECTOR-70;Mn;0;NSM;;;;;N;;;;;
+E0136;VARIATION SELECTOR-71;Mn;0;NSM;;;;;N;;;;;
+E0137;VARIATION SELECTOR-72;Mn;0;NSM;;;;;N;;;;;
+E0138;VARIATION SELECTOR-73;Mn;0;NSM;;;;;N;;;;;
+E0139;VARIATION SELECTOR-74;Mn;0;NSM;;;;;N;;;;;
+E013A;VARIATION SELECTOR-75;Mn;0;NSM;;;;;N;;;;;
+E013B;VARIATION SELECTOR-76;Mn;0;NSM;;;;;N;;;;;
+E013C;VARIATION SELECTOR-77;Mn;0;NSM;;;;;N;;;;;
+E013D;VARIATION SELECTOR-78;Mn;0;NSM;;;;;N;;;;;
+E013E;VARIATION SELECTOR-79;Mn;0;NSM;;;;;N;;;;;
+E013F;VARIATION SELECTOR-80;Mn;0;NSM;;;;;N;;;;;
+E0140;VARIATION SELECTOR-81;Mn;0;NSM;;;;;N;;;;;
+E0141;VARIATION SELECTOR-82;Mn;0;NSM;;;;;N;;;;;
+E0142;VARIATION SELECTOR-83;Mn;0;NSM;;;;;N;;;;;
+E0143;VARIATION SELECTOR-84;Mn;0;NSM;;;;;N;;;;;
+E0144;VARIATION SELECTOR-85;Mn;0;NSM;;;;;N;;;;;
+E0145;VARIATION SELECTOR-86;Mn;0;NSM;;;;;N;;;;;
+E0146;VARIATION SELECTOR-87;Mn;0;NSM;;;;;N;;;;;
+E0147;VARIATION SELECTOR-88;Mn;0;NSM;;;;;N;;;;;
+E0148;VARIATION SELECTOR-89;Mn;0;NSM;;;;;N;;;;;
+E0149;VARIATION SELECTOR-90;Mn;0;NSM;;;;;N;;;;;
+E014A;VARIATION SELECTOR-91;Mn;0;NSM;;;;;N;;;;;
+E014B;VARIATION SELECTOR-92;Mn;0;NSM;;;;;N;;;;;
+E014C;VARIATION SELECTOR-93;Mn;0;NSM;;;;;N;;;;;
+E014D;VARIATION SELECTOR-94;Mn;0;NSM;;;;;N;;;;;
+E014E;VARIATION SELECTOR-95;Mn;0;NSM;;;;;N;;;;;
+E014F;VARIATION SELECTOR-96;Mn;0;NSM;;;;;N;;;;;
+E0150;VARIATION SELECTOR-97;Mn;0;NSM;;;;;N;;;;;
+E0151;VARIATION SELECTOR-98;Mn;0;NSM;;;;;N;;;;;
+E0152;VARIATION SELECTOR-99;Mn;0;NSM;;;;;N;;;;;
+E0153;VARIATION SELECTOR-100;Mn;0;NSM;;;;;N;;;;;
+E0154;VARIATION SELECTOR-101;Mn;0;NSM;;;;;N;;;;;
+E0155;VARIATION SELECTOR-102;Mn;0;NSM;;;;;N;;;;;
+E0156;VARIATION SELECTOR-103;Mn;0;NSM;;;;;N;;;;;
+E0157;VARIATION SELECTOR-104;Mn;0;NSM;;;;;N;;;;;
+E0158;VARIATION SELECTOR-105;Mn;0;NSM;;;;;N;;;;;
+E0159;VARIATION SELECTOR-106;Mn;0;NSM;;;;;N;;;;;
+E015A;VARIATION SELECTOR-107;Mn;0;NSM;;;;;N;;;;;
+E015B;VARIATION SELECTOR-108;Mn;0;NSM;;;;;N;;;;;
+E015C;VARIATION SELECTOR-109;Mn;0;NSM;;;;;N;;;;;
+E015D;VARIATION SELECTOR-110;Mn;0;NSM;;;;;N;;;;;
+E015E;VARIATION SELECTOR-111;Mn;0;NSM;;;;;N;;;;;
+E015F;VARIATION SELECTOR-112;Mn;0;NSM;;;;;N;;;;;
+E0160;VARIATION SELECTOR-113;Mn;0;NSM;;;;;N;;;;;
+E0161;VARIATION SELECTOR-114;Mn;0;NSM;;;;;N;;;;;
+E0162;VARIATION SELECTOR-115;Mn;0;NSM;;;;;N;;;;;
+E0163;VARIATION SELECTOR-116;Mn;0;NSM;;;;;N;;;;;
+E0164;VARIATION SELECTOR-117;Mn;0;NSM;;;;;N;;;;;
+E0165;VARIATION SELECTOR-118;Mn;0;NSM;;;;;N;;;;;
+E0166;VARIATION SELECTOR-119;Mn;0;NSM;;;;;N;;;;;
+E0167;VARIATION SELECTOR-120;Mn;0;NSM;;;;;N;;;;;
+E0168;VARIATION SELECTOR-121;Mn;0;NSM;;;;;N;;;;;
+E0169;VARIATION SELECTOR-122;Mn;0;NSM;;;;;N;;;;;
+E016A;VARIATION SELECTOR-123;Mn;0;NSM;;;;;N;;;;;
+E016B;VARIATION SELECTOR-124;Mn;0;NSM;;;;;N;;;;;
+E016C;VARIATION SELECTOR-125;Mn;0;NSM;;;;;N;;;;;
+E016D;VARIATION SELECTOR-126;Mn;0;NSM;;;;;N;;;;;
+E016E;VARIATION SELECTOR-127;Mn;0;NSM;;;;;N;;;;;
+E016F;VARIATION SELECTOR-128;Mn;0;NSM;;;;;N;;;;;
+E0170;VARIATION SELECTOR-129;Mn;0;NSM;;;;;N;;;;;
+E0171;VARIATION SELECTOR-130;Mn;0;NSM;;;;;N;;;;;
+E0172;VARIATION SELECTOR-131;Mn;0;NSM;;;;;N;;;;;
+E0173;VARIATION SELECTOR-132;Mn;0;NSM;;;;;N;;;;;
+E0174;VARIATION SELECTOR-133;Mn;0;NSM;;;;;N;;;;;
+E0175;VARIATION SELECTOR-134;Mn;0;NSM;;;;;N;;;;;
+E0176;VARIATION SELECTOR-135;Mn;0;NSM;;;;;N;;;;;
+E0177;VARIATION SELECTOR-136;Mn;0;NSM;;;;;N;;;;;
+E0178;VARIATION SELECTOR-137;Mn;0;NSM;;;;;N;;;;;
+E0179;VARIATION SELECTOR-138;Mn;0;NSM;;;;;N;;;;;
+E017A;VARIATION SELECTOR-139;Mn;0;NSM;;;;;N;;;;;
+E017B;VARIATION SELECTOR-140;Mn;0;NSM;;;;;N;;;;;
+E017C;VARIATION SELECTOR-141;Mn;0;NSM;;;;;N;;;;;
+E017D;VARIATION SELECTOR-142;Mn;0;NSM;;;;;N;;;;;
+E017E;VARIATION SELECTOR-143;Mn;0;NSM;;;;;N;;;;;
+E017F;VARIATION SELECTOR-144;Mn;0;NSM;;;;;N;;;;;
+E0180;VARIATION SELECTOR-145;Mn;0;NSM;;;;;N;;;;;
+E0181;VARIATION SELECTOR-146;Mn;0;NSM;;;;;N;;;;;
+E0182;VARIATION SELECTOR-147;Mn;0;NSM;;;;;N;;;;;
+E0183;VARIATION SELECTOR-148;Mn;0;NSM;;;;;N;;;;;
+E0184;VARIATION SELECTOR-149;Mn;0;NSM;;;;;N;;;;;
+E0185;VARIATION SELECTOR-150;Mn;0;NSM;;;;;N;;;;;
+E0186;VARIATION SELECTOR-151;Mn;0;NSM;;;;;N;;;;;
+E0187;VARIATION SELECTOR-152;Mn;0;NSM;;;;;N;;;;;
+E0188;VARIATION SELECTOR-153;Mn;0;NSM;;;;;N;;;;;
+E0189;VARIATION SELECTOR-154;Mn;0;NSM;;;;;N;;;;;
+E018A;VARIATION SELECTOR-155;Mn;0;NSM;;;;;N;;;;;
+E018B;VARIATION SELECTOR-156;Mn;0;NSM;;;;;N;;;;;
+E018C;VARIATION SELECTOR-157;Mn;0;NSM;;;;;N;;;;;
+E018D;VARIATION SELECTOR-158;Mn;0;NSM;;;;;N;;;;;
+E018E;VARIATION SELECTOR-159;Mn;0;NSM;;;;;N;;;;;
+E018F;VARIATION SELECTOR-160;Mn;0;NSM;;;;;N;;;;;
+E0190;VARIATION SELECTOR-161;Mn;0;NSM;;;;;N;;;;;
+E0191;VARIATION SELECTOR-162;Mn;0;NSM;;;;;N;;;;;
+E0192;VARIATION SELECTOR-163;Mn;0;NSM;;;;;N;;;;;
+E0193;VARIATION SELECTOR-164;Mn;0;NSM;;;;;N;;;;;
+E0194;VARIATION SELECTOR-165;Mn;0;NSM;;;;;N;;;;;
+E0195;VARIATION SELECTOR-166;Mn;0;NSM;;;;;N;;;;;
+E0196;VARIATION SELECTOR-167;Mn;0;NSM;;;;;N;;;;;
+E0197;VARIATION SELECTOR-168;Mn;0;NSM;;;;;N;;;;;
+E0198;VARIATION SELECTOR-169;Mn;0;NSM;;;;;N;;;;;
+E0199;VARIATION SELECTOR-170;Mn;0;NSM;;;;;N;;;;;
+E019A;VARIATION SELECTOR-171;Mn;0;NSM;;;;;N;;;;;
+E019B;VARIATION SELECTOR-172;Mn;0;NSM;;;;;N;;;;;
+E019C;VARIATION SELECTOR-173;Mn;0;NSM;;;;;N;;;;;
+E019D;VARIATION SELECTOR-174;Mn;0;NSM;;;;;N;;;;;
+E019E;VARIATION SELECTOR-175;Mn;0;NSM;;;;;N;;;;;
+E019F;VARIATION SELECTOR-176;Mn;0;NSM;;;;;N;;;;;
+E01A0;VARIATION SELECTOR-177;Mn;0;NSM;;;;;N;;;;;
+E01A1;VARIATION SELECTOR-178;Mn;0;NSM;;;;;N;;;;;
+E01A2;VARIATION SELECTOR-179;Mn;0;NSM;;;;;N;;;;;
+E01A3;VARIATION SELECTOR-180;Mn;0;NSM;;;;;N;;;;;
+E01A4;VARIATION SELECTOR-181;Mn;0;NSM;;;;;N;;;;;
+E01A5;VARIATION SELECTOR-182;Mn;0;NSM;;;;;N;;;;;
+E01A6;VARIATION SELECTOR-183;Mn;0;NSM;;;;;N;;;;;
+E01A7;VARIATION SELECTOR-184;Mn;0;NSM;;;;;N;;;;;
+E01A8;VARIATION SELECTOR-185;Mn;0;NSM;;;;;N;;;;;
+E01A9;VARIATION SELECTOR-186;Mn;0;NSM;;;;;N;;;;;
+E01AA;VARIATION SELECTOR-187;Mn;0;NSM;;;;;N;;;;;
+E01AB;VARIATION SELECTOR-188;Mn;0;NSM;;;;;N;;;;;
+E01AC;VARIATION SELECTOR-189;Mn;0;NSM;;;;;N;;;;;
+E01AD;VARIATION SELECTOR-190;Mn;0;NSM;;;;;N;;;;;
+E01AE;VARIATION SELECTOR-191;Mn;0;NSM;;;;;N;;;;;
+E01AF;VARIATION SELECTOR-192;Mn;0;NSM;;;;;N;;;;;
+E01B0;VARIATION SELECTOR-193;Mn;0;NSM;;;;;N;;;;;
+E01B1;VARIATION SELECTOR-194;Mn;0;NSM;;;;;N;;;;;
+E01B2;VARIATION SELECTOR-195;Mn;0;NSM;;;;;N;;;;;
+E01B3;VARIATION SELECTOR-196;Mn;0;NSM;;;;;N;;;;;
+E01B4;VARIATION SELECTOR-197;Mn;0;NSM;;;;;N;;;;;
+E01B5;VARIATION SELECTOR-198;Mn;0;NSM;;;;;N;;;;;
+E01B6;VARIATION SELECTOR-199;Mn;0;NSM;;;;;N;;;;;
+E01B7;VARIATION SELECTOR-200;Mn;0;NSM;;;;;N;;;;;
+E01B8;VARIATION SELECTOR-201;Mn;0;NSM;;;;;N;;;;;
+E01B9;VARIATION SELECTOR-202;Mn;0;NSM;;;;;N;;;;;
+E01BA;VARIATION SELECTOR-203;Mn;0;NSM;;;;;N;;;;;
+E01BB;VARIATION SELECTOR-204;Mn;0;NSM;;;;;N;;;;;
+E01BC;VARIATION SELECTOR-205;Mn;0;NSM;;;;;N;;;;;
+E01BD;VARIATION SELECTOR-206;Mn;0;NSM;;;;;N;;;;;
+E01BE;VARIATION SELECTOR-207;Mn;0;NSM;;;;;N;;;;;
+E01BF;VARIATION SELECTOR-208;Mn;0;NSM;;;;;N;;;;;
+E01C0;VARIATION SELECTOR-209;Mn;0;NSM;;;;;N;;;;;
+E01C1;VARIATION SELECTOR-210;Mn;0;NSM;;;;;N;;;;;
+E01C2;VARIATION SELECTOR-211;Mn;0;NSM;;;;;N;;;;;
+E01C3;VARIATION SELECTOR-212;Mn;0;NSM;;;;;N;;;;;
+E01C4;VARIATION SELECTOR-213;Mn;0;NSM;;;;;N;;;;;
+E01C5;VARIATION SELECTOR-214;Mn;0;NSM;;;;;N;;;;;
+E01C6;VARIATION SELECTOR-215;Mn;0;NSM;;;;;N;;;;;
+E01C7;VARIATION SELECTOR-216;Mn;0;NSM;;;;;N;;;;;
+E01C8;VARIATION SELECTOR-217;Mn;0;NSM;;;;;N;;;;;
+E01C9;VARIATION SELECTOR-218;Mn;0;NSM;;;;;N;;;;;
+E01CA;VARIATION SELECTOR-219;Mn;0;NSM;;;;;N;;;;;
+E01CB;VARIATION SELECTOR-220;Mn;0;NSM;;;;;N;;;;;
+E01CC;VARIATION SELECTOR-221;Mn;0;NSM;;;;;N;;;;;
+E01CD;VARIATION SELECTOR-222;Mn;0;NSM;;;;;N;;;;;
+E01CE;VARIATION SELECTOR-223;Mn;0;NSM;;;;;N;;;;;
+E01CF;VARIATION SELECTOR-224;Mn;0;NSM;;;;;N;;;;;
+E01D0;VARIATION SELECTOR-225;Mn;0;NSM;;;;;N;;;;;
+E01D1;VARIATION SELECTOR-226;Mn;0;NSM;;;;;N;;;;;
+E01D2;VARIATION SELECTOR-227;Mn;0;NSM;;;;;N;;;;;
+E01D3;VARIATION SELECTOR-228;Mn;0;NSM;;;;;N;;;;;
+E01D4;VARIATION SELECTOR-229;Mn;0;NSM;;;;;N;;;;;
+E01D5;VARIATION SELECTOR-230;Mn;0;NSM;;;;;N;;;;;
+E01D6;VARIATION SELECTOR-231;Mn;0;NSM;;;;;N;;;;;
+E01D7;VARIATION SELECTOR-232;Mn;0;NSM;;;;;N;;;;;
+E01D8;VARIATION SELECTOR-233;Mn;0;NSM;;;;;N;;;;;
+E01D9;VARIATION SELECTOR-234;Mn;0;NSM;;;;;N;;;;;
+E01DA;VARIATION SELECTOR-235;Mn;0;NSM;;;;;N;;;;;
+E01DB;VARIATION SELECTOR-236;Mn;0;NSM;;;;;N;;;;;
+E01DC;VARIATION SELECTOR-237;Mn;0;NSM;;;;;N;;;;;
+E01DD;VARIATION SELECTOR-238;Mn;0;NSM;;;;;N;;;;;
+E01DE;VARIATION SELECTOR-239;Mn;0;NSM;;;;;N;;;;;
+E01DF;VARIATION SELECTOR-240;Mn;0;NSM;;;;;N;;;;;
+E01E0;VARIATION SELECTOR-241;Mn;0;NSM;;;;;N;;;;;
+E01E1;VARIATION SELECTOR-242;Mn;0;NSM;;;;;N;;;;;
+E01E2;VARIATION SELECTOR-243;Mn;0;NSM;;;;;N;;;;;
+E01E3;VARIATION SELECTOR-244;Mn;0;NSM;;;;;N;;;;;
+E01E4;VARIATION SELECTOR-245;Mn;0;NSM;;;;;N;;;;;
+E01E5;VARIATION SELECTOR-246;Mn;0;NSM;;;;;N;;;;;
+E01E6;VARIATION SELECTOR-247;Mn;0;NSM;;;;;N;;;;;
+E01E7;VARIATION SELECTOR-248;Mn;0;NSM;;;;;N;;;;;
+E01E8;VARIATION SELECTOR-249;Mn;0;NSM;;;;;N;;;;;
+E01E9;VARIATION SELECTOR-250;Mn;0;NSM;;;;;N;;;;;
+E01EA;VARIATION SELECTOR-251;Mn;0;NSM;;;;;N;;;;;
+E01EB;VARIATION SELECTOR-252;Mn;0;NSM;;;;;N;;;;;
+E01EC;VARIATION SELECTOR-253;Mn;0;NSM;;;;;N;;;;;
+E01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;;
+E01EE;VARIATION SELECTOR-255;Mn;0;NSM;;;;;N;;;;;
+E01EF;VARIATION SELECTOR-256;Mn;0;NSM;;;;;N;;;;;
+F0000;<Plane 15 Private Use, First>;Co;0;L;;;;;N;;;;;
+FFFFD;<Plane 15 Private Use, Last>;Co;0;L;;;;;N;;;;;
+100000;<Plane 16 Private Use, First>;Co;0;L;;;;;N;;;;;
+10FFFD;<Plane 16 Private Use, Last>;Co;0;L;;;;;N;;;;;
diff --git a/jdk/make/tools/addjsum/Makefile b/jdk/make/tools/addjsum/Makefile
new file mode 100644
index 0000000..99e636a
--- /dev/null
+++ b/jdk/make/tools/addjsum/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the addjsum tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.addjsum
+PRODUCT = tools
+PROGRAM = addjsum
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/AddJsum.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/auto_multi/Makefile b/jdk/make/tools/auto_multi/Makefile
new file mode 100644
index 0000000..f5db350
--- /dev/null
+++ b/jdk/make/tools/auto_multi/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the automulti tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.automulti
+PRODUCT = tools
+PROGRAM = automulti
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/AutoMulti.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/buildmetaindex/Makefile b/jdk/make/tools/buildmetaindex/Makefile
new file mode 100644
index 0000000..9a363dd
--- /dev/null
+++ b/jdk/make/tools/buildmetaindex/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the buildmetaindex tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.buildmetaindex
+PRODUCT = tools
+PROGRAM = buildmetaindex
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/BuildMetaIndex.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/commentchecker/Makefile b/jdk/make/tools/commentchecker/Makefile
new file mode 100644
index 0000000..c0d5813
--- /dev/null
+++ b/jdk/make/tools/commentchecker/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the commentchecker tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.commentchecker
+PRODUCT = tools
+PROGRAM = commentchecker
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/CommentChecker.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/compile_font_config/Makefile b/jdk/make/tools/compile_font_config/Makefile
new file mode 100644
index 0000000..bfb5fd5
--- /dev/null
+++ b/jdk/make/tools/compile_font_config/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the compilefontconfig tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.compilefontconfig
+PRODUCT = tools
+PROGRAM = compilefontconfig
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/CompileFontConfig.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/compile_properties/Makefile b/jdk/make/tools/compile_properties/Makefile
new file mode 100644
index 0000000..9feb413
--- /dev/null
+++ b/jdk/make/tools/compile_properties/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the compileproperties tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.compileproperties
+PRODUCT = tools
+PROGRAM = compileproperties
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/CompileProperties.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/dir_diff/Makefile b/jdk/make/tools/dir_diff/Makefile
new file mode 100644
index 0000000..cb03905
--- /dev/null
+++ b/jdk/make/tools/dir_diff/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the dirdiff tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.dirdiff
+PRODUCT = tools
+PROGRAM = dirdiff
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/DirDiff.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/dtdbuilder/Makefile b/jdk/make/tools/dtdbuilder/Makefile
new file mode 100644
index 0000000..f885faa
--- /dev/null
+++ b/jdk/make/tools/dtdbuilder/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the dtdbuilder tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.dtdbuilder
+PRODUCT = tools
+PROGRAM = dtdbuilder
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/DTDBuilder.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/dtdbuilder/dtds/HTMLlat1.sgml b/jdk/make/tools/dtdbuilder/dtds/HTMLlat1.sgml
new file mode 100644
index 0000000..1591dad
--- /dev/null
+++ b/jdk/make/tools/dtdbuilder/dtds/HTMLlat1.sgml
@@ -0,0 +1,194 @@
+<!-- Portions ¿ International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1//EN//HTML">
+ %HTMLlat1;
+-->
+
+<!ENTITY nbsp CDATA " " -- no-break space = non-breaking space,
+ U+00A0 ISOnum -->
+<!ENTITY iexcl CDATA "¡" -- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent CDATA "¢" -- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound CDATA "£" -- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren CDATA "¤" -- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen CDATA "¥" -- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar CDATA "¦" -- broken bar = broken vertical bar,
+ U+00A6 ISOnum -->
+<!ENTITY sect CDATA "§" -- section sign, U+00A7 ISOnum -->
+<!ENTITY uml CDATA "¨" -- diaeresis = spacing diaeresis,
+ U+00A8 ISOdia -->
+<!ENTITY copy CDATA "©" -- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf CDATA "ª" -- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo CDATA "«" -- left-pointing double angle quotation mark
+ = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not CDATA "¬" -- not sign, U+00AC ISOnum -->
+<!ENTITY shy CDATA "­" -- soft hyphen = discretionary hyphen,
+ U+00AD ISOnum -->
+<!ENTITY reg CDATA "®" -- registered sign = registered trade mark sign,
+ U+00AE ISOnum -->
+<!ENTITY macr CDATA "¯" -- macron = spacing macron = overline
+ = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg CDATA "°" -- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn CDATA "±" -- plus-minus sign = plus-or-minus sign,
+ U+00B1 ISOnum -->
+<!ENTITY sup2 CDATA "²" -- superscript two = superscript digit two
+ = squared, U+00B2 ISOnum -->
+<!ENTITY sup3 CDATA "³" -- superscript three = superscript digit three
+ = cubed, U+00B3 ISOnum -->
+<!ENTITY acute CDATA "´" -- acute accent = spacing acute,
+ U+00B4 ISOdia -->
+<!ENTITY micro CDATA "µ" -- micro sign, U+00B5 ISOnum -->
+<!ENTITY para CDATA "¶" -- pilcrow sign = paragraph sign,
+ U+00B6 ISOnum -->
+<!ENTITY middot CDATA "·" -- middle dot = Georgian comma
+ = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil CDATA "¸" -- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1 CDATA "¹" -- superscript one = superscript digit one,
+ U+00B9 ISOnum -->
+<!ENTITY ordm CDATA "º" -- masculine ordinal indicator,
+ U+00BA ISOnum -->
+<!ENTITY raquo CDATA "»" -- right-pointing double angle quotation mark
+ = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 CDATA "¼" -- vulgar fraction one quarter
+ = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 CDATA "½" -- vulgar fraction one half
+ = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 CDATA "¾" -- vulgar fraction three quarters
+ = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest CDATA "¿" -- inverted question mark
+ = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave CDATA "À" -- latin capital letter A with grave
+ = latin capital letter A grave,
+ U+00C0 ISOlat1 -->
+<!ENTITY Aacute CDATA "Á" -- latin capital letter A with acute,
+ U+00C1 ISOlat1 -->
+<!ENTITY Acirc CDATA "Â" -- latin capital letter A with circumflex,
+ U+00C2 ISOlat1 -->
+<!ENTITY Atilde CDATA "Ã" -- latin capital letter A with tilde,
+ U+00C3 ISOlat1 -->
+<!ENTITY Auml CDATA "Ä" -- latin capital letter A with diaeresis,
+ U+00C4 ISOlat1 -->
+<!ENTITY Aring CDATA "Å" -- latin capital letter A with ring above
+ = latin capital letter A ring,
+ U+00C5 ISOlat1 -->
+<!ENTITY AElig CDATA "Æ" -- latin capital letter AE
+ = latin capital ligature AE,
+ U+00C6 ISOlat1 -->
+<!ENTITY Ccedil CDATA "Ç" -- latin capital letter C with cedilla,
+ U+00C7 ISOlat1 -->
+<!ENTITY Egrave CDATA "È" -- latin capital letter E with grave,
+ U+00C8 ISOlat1 -->
+<!ENTITY Eacute CDATA "É" -- latin capital letter E with acute,
+ U+00C9 ISOlat1 -->
+<!ENTITY Ecirc CDATA "Ê" -- latin capital letter E with circumflex,
+ U+00CA ISOlat1 -->
+<!ENTITY Euml CDATA "Ë" -- latin capital letter E with diaeresis,
+ U+00CB ISOlat1 -->
+<!ENTITY Igrave CDATA "Ì" -- latin capital letter I with grave,
+ U+00CC ISOlat1 -->
+<!ENTITY Iacute CDATA "Í" -- latin capital letter I with acute,
+ U+00CD ISOlat1 -->
+<!ENTITY Icirc CDATA "Î" -- latin capital letter I with circumflex,
+ U+00CE ISOlat1 -->
+<!ENTITY Iuml CDATA "Ï" -- latin capital letter I with diaeresis,
+ U+00CF ISOlat1 -->
+<!ENTITY ETH CDATA "Ð" -- latin capital letter ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde CDATA "Ñ" -- latin capital letter N with tilde,
+ U+00D1 ISOlat1 -->
+<!ENTITY Ograve CDATA "Ò" -- latin capital letter O with grave,
+ U+00D2 ISOlat1 -->
+<!ENTITY Oacute CDATA "Ó" -- latin capital letter O with acute,
+ U+00D3 ISOlat1 -->
+<!ENTITY Ocirc CDATA "Ô" -- latin capital letter O with circumflex,
+ U+00D4 ISOlat1 -->
+<!ENTITY Otilde CDATA "Õ" -- latin capital letter O with tilde,
+ U+00D5 ISOlat1 -->
+<!ENTITY Ouml CDATA "Ö" -- latin capital letter O with diaeresis,
+ U+00D6 ISOlat1 -->
+<!ENTITY times CDATA "×" -- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash CDATA "Ø" -- latin capital letter O with stroke
+ = latin capital letter O slash,
+ U+00D8 ISOlat1 -->
+<!ENTITY Ugrave CDATA "Ù" -- latin capital letter U with grave,
+ U+00D9 ISOlat1 -->
+<!ENTITY Uacute CDATA "Ú" -- latin capital letter U with acute,
+ U+00DA ISOlat1 -->
+<!ENTITY Ucirc CDATA "Û" -- latin capital letter U with circumflex,
+ U+00DB ISOlat1 -->
+<!ENTITY Uuml CDATA "Ü" -- latin capital letter U with diaeresis,
+ U+00DC ISOlat1 -->
+<!ENTITY Yacute CDATA "Ý" -- latin capital letter Y with acute,
+ U+00DD ISOlat1 -->
+<!ENTITY THORN CDATA "Þ" -- latin capital letter THORN,
+ U+00DE ISOlat1 -->
+<!ENTITY szlig CDATA "ß" -- latin small letter sharp s = ess-zed,
+ U+00DF ISOlat1 -->
+<!ENTITY agrave CDATA "à" -- latin small letter a with grave
+ = latin small letter a grave,
+ U+00E0 ISOlat1 -->
+<!ENTITY aacute CDATA "á" -- latin small letter a with acute,
+ U+00E1 ISOlat1 -->
+<!ENTITY acirc CDATA "â" -- latin small letter a with circumflex,
+ U+00E2 ISOlat1 -->
+<!ENTITY atilde CDATA "ã" -- latin small letter a with tilde,
+ U+00E3 ISOlat1 -->
+<!ENTITY auml CDATA "ä" -- latin small letter a with diaeresis,
+ U+00E4 ISOlat1 -->
+<!ENTITY aring CDATA "å" -- latin small letter a with ring above
+ = latin small letter a ring,
+ U+00E5 ISOlat1 -->
+<!ENTITY aelig CDATA "æ" -- latin small letter ae
+ = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil CDATA "ç" -- latin small letter c with cedilla,
+ U+00E7 ISOlat1 -->
+<!ENTITY egrave CDATA "è" -- latin small letter e with grave,
+ U+00E8 ISOlat1 -->
+<!ENTITY eacute CDATA "é" -- latin small letter e with acute,
+ U+00E9 ISOlat1 -->
+<!ENTITY ecirc CDATA "ê" -- latin small letter e with circumflex,
+ U+00EA ISOlat1 -->
+<!ENTITY euml CDATA "ë" -- latin small letter e with diaeresis,
+ U+00EB ISOlat1 -->
+<!ENTITY igrave CDATA "ì" -- latin small letter i with grave,
+ U+00EC ISOlat1 -->
+<!ENTITY iacute CDATA "í" -- latin small letter i with acute,
+ U+00ED ISOlat1 -->
+<!ENTITY icirc CDATA "î" -- latin small letter i with circumflex,
+ U+00EE ISOlat1 -->
+<!ENTITY iuml CDATA "ï" -- latin small letter i with diaeresis,
+ U+00EF ISOlat1 -->
+<!ENTITY eth CDATA "ð" -- latin small letter eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde CDATA "ñ" -- latin small letter n with tilde,
+ U+00F1 ISOlat1 -->
+<!ENTITY ograve CDATA "ò" -- latin small letter o with grave,
+ U+00F2 ISOlat1 -->
+<!ENTITY oacute CDATA "ó" -- latin small letter o with acute,
+ U+00F3 ISOlat1 -->
+<!ENTITY ocirc CDATA "ô" -- latin small letter o with circumflex,
+ U+00F4 ISOlat1 -->
+<!ENTITY otilde CDATA "õ" -- latin small letter o with tilde,
+ U+00F5 ISOlat1 -->
+<!ENTITY ouml CDATA "ö" -- latin small letter o with diaeresis,
+ U+00F6 ISOlat1 -->
+<!ENTITY divide CDATA "÷" -- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash CDATA "ø" -- latin small letter o with stroke,
+ = latin small letter o slash,
+ U+00F8 ISOlat1 -->
+<!ENTITY ugrave CDATA "ù" -- latin small letter u with grave,
+ U+00F9 ISOlat1 -->
+<!ENTITY uacute CDATA "ú" -- latin small letter u with acute,
+ U+00FA ISOlat1 -->
+<!ENTITY ucirc CDATA "û" -- latin small letter u with circumflex,
+ U+00FB ISOlat1 -->
+<!ENTITY uuml CDATA "ü" -- latin small letter u with diaeresis,
+ U+00FC ISOlat1 -->
+<!ENTITY yacute CDATA "ý" -- latin small letter y with acute,
+ U+00FD ISOlat1 -->
+<!ENTITY thorn CDATA "þ" -- latin small letter thorn,
+ U+00FE ISOlat1 -->
+<!ENTITY yuml CDATA "ÿ" -- latin small letter y with diaeresis,
+ U+00FF ISOlat1 -->
diff --git a/jdk/make/tools/dtdbuilder/dtds/HTMLspecial.sgml b/jdk/make/tools/dtdbuilder/dtds/HTMLspecial.sgml
new file mode 100644
index 0000000..2fec295
--- /dev/null
+++ b/jdk/make/tools/dtdbuilder/dtds/HTMLspecial.sgml
@@ -0,0 +1,77 @@
+<!-- Special characters for HTML -->
+
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special//EN//HTML">
+ %HTMLspecial; -->
+
+<!-- Portions ¿ International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ existing ISO 8879 entity names. ISO 10646 character numbers
+ are given for each character, in hex. CDATA values are decimal
+ conversions of the ISO 10646 values and refer to the document
+ character set. Names are ISO 10646 names.
+
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot CDATA """ -- quotation mark = APL quote,
+ U+0022 ISOnum -->
+<!ENTITY amp CDATA "&" -- ampersand, U+0026 ISOnum -->
+<!ENTITY lt CDATA "<" -- less-than sign, U+003C ISOnum -->
+<!ENTITY gt CDATA ">" -- greater-than sign, U+003E ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig CDATA "Œ" -- latin capital ligature OE,
+ U+0152 ISOlat2 -->
+<!ENTITY oelig CDATA "œ" -- latin small ligature oe, U+0153 ISOlat2 -->
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron CDATA "Š" -- latin capital letter S with caron,
+ U+0160 ISOlat2 -->
+<!ENTITY scaron CDATA "š" -- latin small letter s with caron,
+ U+0161 ISOlat2 -->
+<!ENTITY Yuml CDATA "Ÿ" -- latin capital letter Y with diaeresis,
+ U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ CDATA "ˆ" -- modifier letter circumflex accent,
+ U+02C6 ISOpub -->
+<!ENTITY tilde CDATA "˜" -- small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp CDATA " " -- en space, U+2002 ISOpub -->
+<!ENTITY emsp CDATA " " -- em space, U+2003 ISOpub -->
+<!ENTITY thinsp CDATA " " -- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj CDATA "‌" -- zero width non-joiner,
+ U+200C NEW RFC 2070 -->
+<!ENTITY zwj CDATA "‍" -- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm CDATA "‎" -- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm CDATA "‏" -- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash CDATA "–" -- en dash, U+2013 ISOpub -->
+<!ENTITY mdash CDATA "—" -- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo CDATA "‘" -- left single quotation mark,
+ U+2018 ISOnum -->
+<!ENTITY rsquo CDATA "’" -- right single quotation mark,
+ U+2019 ISOnum -->
+<!ENTITY sbquo CDATA "‚" -- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo CDATA "“" -- left double quotation mark,
+ U+201C ISOnum -->
+<!ENTITY rdquo CDATA "”" -- right double quotation mark,
+ U+201D ISOnum -->
+<!ENTITY bdquo CDATA "„" -- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger CDATA "†" -- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger CDATA "‡" -- double dagger, U+2021 ISOpub -->
+<!ENTITY permil CDATA "‰" -- per mille sign, U+2030 ISOtech -->
+<!ENTITY lsaquo CDATA "‹" -- single left-pointing angle quotation mark,
+ U+2039 ISO proposed -->
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo CDATA "›" -- single right-pointing angle quotation mark,
+ U+203A ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+<!ENTITY euro CDATA "€" -- euro sign, U+20AC NEW -->
diff --git a/jdk/make/tools/dtdbuilder/dtds/HTMLsymbol.sgml b/jdk/make/tools/dtdbuilder/dtds/HTMLsymbol.sgml
new file mode 100644
index 0000000..7cbceef
--- /dev/null
+++ b/jdk/make/tools/dtdbuilder/dtds/HTMLsymbol.sgml
@@ -0,0 +1,241 @@
+<!-- Mathematical, Greek and Symbolic characters for HTML -->
+
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols//EN//HTML">
+ %HTMLsymbol; -->
+
+<!-- Portions ¿ International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ existing ISO 8879 entity names. ISO 10646 character numbers
+ are given for each character, in hex. CDATA values are decimal
+ conversions of the ISO 10646 values and refer to the document
+ character set. Names are ISO 10646 names.
+
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof CDATA "ƒ" -- latin small f with hook = function
+ = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha CDATA "Α" -- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta CDATA "Β" -- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma CDATA "Γ" -- greek capital letter gamma,
+ U+0393 ISOgrk3 -->
+<!ENTITY Delta CDATA "Δ" -- greek capital letter delta,
+ U+0394 ISOgrk3 -->
+<!ENTITY Epsilon CDATA "Ε" -- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta CDATA "Ζ" -- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta CDATA "Η" -- greek capital letter eta, U+0397 -->
+<!ENTITY Theta CDATA "Θ" -- greek capital letter theta,
+ U+0398 ISOgrk3 -->
+<!ENTITY Iota CDATA "Ι" -- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa CDATA "Κ" -- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda CDATA "Λ" -- greek capital letter lambda,
+ U+039B ISOgrk3 -->
+<!ENTITY Mu CDATA "Μ" -- greek capital letter mu, U+039C -->
+<!ENTITY Nu CDATA "Ν" -- greek capital letter nu, U+039D -->
+<!ENTITY Xi CDATA "Ξ" -- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron CDATA "Ο" -- greek capital letter omicron, U+039F -->
+<!ENTITY Pi CDATA "Π" -- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho CDATA "Ρ" -- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma CDATA "Σ" -- greek capital letter sigma,
+ U+03A3 ISOgrk3 -->
+<!ENTITY Tau CDATA "Τ" -- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon CDATA "Υ" -- greek capital letter upsilon,
+ U+03A5 ISOgrk3 -->
+<!ENTITY Phi CDATA "Φ" -- greek capital letter phi,
+ U+03A6 ISOgrk3 -->
+<!ENTITY Chi CDATA "Χ" -- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi CDATA "Ψ" -- greek capital letter psi,
+ U+03A8 ISOgrk3 -->
+<!ENTITY Omega CDATA "Ω" -- greek capital letter omega,
+ U+03A9 ISOgrk3 -->
+
+<!ENTITY alpha CDATA "α" -- greek small letter alpha,
+ U+03B1 ISOgrk3 -->
+<!ENTITY beta CDATA "β" -- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma CDATA "γ" -- greek small letter gamma,
+ U+03B3 ISOgrk3 -->
+<!ENTITY delta CDATA "δ" -- greek small letter delta,
+ U+03B4 ISOgrk3 -->
+<!ENTITY epsilon CDATA "ε" -- greek small letter epsilon,
+ U+03B5 ISOgrk3 -->
+<!ENTITY zeta CDATA "ζ" -- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta CDATA "η" -- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta CDATA "θ" -- greek small letter theta,
+ U+03B8 ISOgrk3 -->
+<!ENTITY iota CDATA "ι" -- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa CDATA "κ" -- greek small letter kappa,
+ U+03BA ISOgrk3 -->
+<!ENTITY lambda CDATA "λ" -- greek small letter lambda,
+ U+03BB ISOgrk3 -->
+<!ENTITY mu CDATA "μ" -- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu CDATA "ν" -- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi CDATA "ξ" -- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron CDATA "ο" -- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi CDATA "π" -- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho CDATA "ρ" -- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf CDATA "ς" -- greek small letter final sigma,
+ U+03C2 ISOgrk3 -->
+<!ENTITY sigma CDATA "σ" -- greek small letter sigma,
+ U+03C3 ISOgrk3 -->
+<!ENTITY tau CDATA "τ" -- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon CDATA "υ" -- greek small letter upsilon,
+ U+03C5 ISOgrk3 -->
+<!ENTITY phi CDATA "φ" -- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi CDATA "χ" -- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi CDATA "ψ" -- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega CDATA "ω" -- greek small letter omega,
+ U+03C9 ISOgrk3 -->
+<!ENTITY thetasym CDATA "ϑ" -- greek small letter theta symbol,
+ U+03D1 NEW -->
+<!ENTITY upsih CDATA "ϒ" -- greek upsilon with hook symbol,
+ U+03D2 NEW -->
+<!ENTITY piv CDATA "ϖ" -- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull CDATA "•" -- bullet = black small circle,
+ U+2022 ISOpub -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip CDATA "…" -- horizontal ellipsis = three dot leader,
+ U+2026 ISOpub -->
+<!ENTITY prime CDATA "′" -- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime CDATA "″" -- double prime = seconds = inches,
+ U+2033 ISOtech -->
+<!ENTITY oline CDATA "‾" -- overline = spacing overscore,
+ U+203E NEW -->
+<!ENTITY frasl CDATA "⁄" -- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp CDATA "℘" -- script capital P = power set
+ = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image CDATA "ℑ" -- blackletter capital I = imaginary part,
+ U+2111 ISOamso -->
+<!ENTITY real CDATA "ℜ" -- blackletter capital R = real part symbol,
+ U+211C ISOamso -->
+<!ENTITY trade CDATA "™" -- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym CDATA "ℵ" -- alef symbol = first transfinite cardinal,
+ U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef,
+ U+05D0 although the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr CDATA "←" -- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr CDATA "↑" -- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr CDATA "→" -- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr CDATA "↓" -- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr CDATA "↔" -- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr CDATA "↵" -- downwards arrow with corner leftwards
+ = carriage return, U+21B5 NEW -->
+<!ENTITY lArr CDATA "⇐" -- leftwards double arrow, U+21D0 ISOtech -->
+<!-- ISO 10646 does not say that lArr is the same as the 'is implied by' arrow
+ but also does not have any other character for that function. So ? lArr can
+ be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr CDATA "⇑" -- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr CDATA "⇒" -- rightwards double arrow,
+ U+21D2 ISOtech -->
+<!-- ISO 10646 does not say this is the 'implies' character but does not have
+ another character with this function so ?
+ rArr can be used for 'implies' as ISOtech suggests -->
+<!ENTITY dArr CDATA "⇓" -- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr CDATA "⇔" -- left right double arrow,
+ U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall CDATA "∀" -- for all, U+2200 ISOtech -->
+<!ENTITY part CDATA "∂" -- partial differential, U+2202 ISOtech -->
+<!ENTITY exist CDATA "∃" -- there exists, U+2203 ISOtech -->
+<!ENTITY empty CDATA "∅" -- empty set = null set = diameter,
+ U+2205 ISOamso -->
+<!ENTITY nabla CDATA "∇" -- nabla = backward difference,
+ U+2207 ISOtech -->
+<!ENTITY isin CDATA "∈" -- element of, U+2208 ISOtech -->
+<!ENTITY notin CDATA "∉" -- not an element of, U+2209 ISOtech -->
+<!ENTITY ni CDATA "∋" -- contains as member, U+220B ISOtech -->
+<!-- should there be a more memorable name than 'ni'? -->
+<!ENTITY prod CDATA "∏" -- n-ary product = product sign,
+ U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+ the same glyph might be used for both -->
+<!ENTITY sum CDATA "∑" -- n-ary sumation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+ though the same glyph might be used for both -->
+<!ENTITY minus CDATA "−" -- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast CDATA "∗" -- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic CDATA "√" -- square root = radical sign,
+ U+221A ISOtech -->
+<!ENTITY prop CDATA "∝" -- proportional to, U+221D ISOtech -->
+<!ENTITY infin CDATA "∞" -- infinity, U+221E ISOtech -->
+<!ENTITY ang CDATA "∠" -- angle, U+2220 ISOamso -->
+<!ENTITY and CDATA "∧" -- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or CDATA "∨" -- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap CDATA "∩" -- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup CDATA "∪" -- union = cup, U+222A ISOtech -->
+<!ENTITY int CDATA "∫" -- integral, U+222B ISOtech -->
+<!ENTITY there4 CDATA "∴" -- therefore, U+2234 ISOtech -->
+<!ENTITY sim CDATA "∼" -- tilde operator = varies with = similar to,
+ U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+ although the same glyph might be used to represent both -->
+<!ENTITY cong CDATA "≅" -- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp CDATA "≈" -- almost equal to = asymptotic to,
+ U+2248 ISOamsr -->
+<!ENTITY ne CDATA "≠" -- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv CDATA "≡" -- identical to, U+2261 ISOtech -->
+<!ENTITY le CDATA "≤" -- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge CDATA "≥" -- greater-than or equal to,
+ U+2265 ISOtech -->
+<!ENTITY sub CDATA "⊂" -- subset of, U+2282 ISOtech -->
+<!ENTITY sup CDATA "⊃" -- superset of, U+2283 ISOtech -->
+<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol
+ font encoding and is not included. Should it be, for symmetry?
+ It is in ISOamsn -->
+<!ENTITY nsub CDATA "⊄" -- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube CDATA "⊆" -- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe CDATA "⊇" -- superset of or equal to,
+ U+2287 ISOtech -->
+<!ENTITY oplus CDATA "⊕" -- circled plus = direct sum,
+ U+2295 ISOamsb -->
+<!ENTITY otimes CDATA "⊗" -- circled times = vector product,
+ U+2297 ISOamsb -->
+<!ENTITY perp CDATA "⊥" -- up tack = orthogonal to = perpendicular,
+ U+22A5 ISOtech -->
+<!ENTITY sdot CDATA "⋅" -- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil CDATA "⌈" -- left ceiling = apl upstile,
+ U+2308 ISOamsc -->
+<!ENTITY rceil CDATA "⌉" -- right ceiling, U+2309 ISOamsc -->
+<!ENTITY lfloor CDATA "⌊" -- left floor = apl downstile,
+ U+230A ISOamsc -->
+<!ENTITY rfloor CDATA "⌋" -- right floor, U+230B ISOamsc -->
+<!ENTITY lang CDATA "〈" -- left-pointing angle bracket = bra,
+ U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than'
+ or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang CDATA "〉" -- right-pointing angle bracket = ket,
+ U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than'
+ or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz CDATA "◊" -- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades CDATA "♠" -- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs CDATA "♣" -- black club suit = shamrock,
+ U+2663 ISOpub -->
+<!ENTITY hearts CDATA "♥" -- black heart suit = valentine,
+ U+2665 ISOpub -->
+<!ENTITY diams CDATA "♦" -- black diamond suit, U+2666 ISOpub -->
diff --git a/jdk/make/tools/dtdbuilder/dtds/html32.dtd b/jdk/make/tools/dtdbuilder/dtds/html32.dtd
new file mode 100644
index 0000000..0a27e37
--- /dev/null
+++ b/jdk/make/tools/dtdbuilder/dtds/html32.dtd
@@ -0,0 +1,1092 @@
+<!--
+ Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation. Sun designates this
+ particular file as subject to the "Classpath" exception as provided
+ by Sun in the LICENSE file that accompanied this code.
+
+ This code 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
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ CA 95054 USA or visit www.sun.com if you need additional information or
+ have any questions.
+-->
+
+<!--
+ W3C Document Type Definition for the HyperText Markup Language
+ This version is code named Wilbur, and also as "HTML 3.2".
+
+ Draft: Tuesday August 21st 1996
+
+ Author: Dave Raggett <dsr@w3.org>
+
+ This is subject to change, pending final approval by the W3C
+ member companies.
+
+ HTML 3.2 aims to capture recommended practice as of early '96
+ and as such to be used as a replacement for HTML 2.0 (RFC 1866).
+ Widely deployed rendering attributes are included where they
+ have been shown to be interoperable. SCRIPT and STYLE are
+ included to smooth the introduction of client-side scripts
+ and style sheets. Browsers must avoid showing the contents
+ of these element Otherwise support for them is not required.
+ ID, CLASS and STYLE attributes are not included in this version
+ of HTML.
+
+ The next version of HTML after Wilbur is code named Cougar and
+ will add support for <OBJECT>, client-side scripting, style
+ sheets, and extensions to fill-out forms.
+-->
+
+<!-- HotJava modifications by Steve Byrne, 9/13/1996 -->
+
+<!ENTITY % HTML.Version
+ "-//HotJava//DTD HotJava 1.0 HTML 3.2 Draft 19960821//EN"
+
+ -- Typical usage:
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Draft 19960821//EN">
+ <html>
+ ...
+ </html>
+ --
+ >
+
+<!--================== Deprecated Features Switch =========================-->
+
+<!ENTITY % HTML.Deprecated "INCLUDE">
+
+<!--================== Feature Test Entities ==============================-->
+
+<!ENTITY % HTML.Recommended "IGNORE"
+ -- Certain features of the language are necessary for compatibility
+ with widespread usage, but they may compromise the structural
+ integrity of a document. This feature test entity enables
+ a more prescriptive document type definition that eliminates
+ the above features.
+ -->
+
+<!ENTITY % HTML.HotJava "INCLUDE"
+ -- HotJava specific extensions to the default HTML 3.2 DTD -->
+
+<!-- Currently we are using the the HTML.3.2.Conflict entity to work around
+ a bug in the DTD parser where the first declaration of an ENTITY/ELEMENT
+ or ATTLIST is not taking precedence over subsequent declarations of the same
+ item. Therefore we need to explicitly "IGNORE" subsequent declarations
+ in order for HotJava specific extensions to take effect.
+ -->
+<!ENTITY % HTML.3.2.Conflict "IGNORE"
+ -- 3.2 features to be ignored -->
+
+
+<!--================== Imported Names =====================================-->
+
+<!ENTITY % Content-Type "CDATA"
+ -- meaning a MIME content type, as per RFC1521
+ -->
+
+<!ENTITY % HTTP-Method "GET | POST"
+ -- as per HTTP specification
+ -->
+
+<!ENTITY % URL "CDATA"
+ -- The term URL means a CDATA attribute
+ whose value is a Uniform Resource Locator,
+ See RFC1808 (June 95) and RFC1738 (Dec 94).
+ -->
+
+<!-- Parameter Entities -->
+
+<!ENTITY % head.misc "NOSCRIPT|SCRIPT|STYLE|META|LINK" -- repeatable head elements -->
+
+<!ENTITY % heading "H1|H2|H3|H4|H5|H6">
+
+<!ENTITY % list "UL | OL | DIR | MENU">
+
+<![ %HTML.Deprecated [
+ <!ENTITY % preformatted "PRE | XMP | LISTING | PLAINTEXT">
+]]>
+
+<!ENTITY % preformatted "PRE">
+
+<!--================ Character mnemonic entities ==========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1//EN//HTML">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols//EN//HTML">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special//EN//HTML">
+%HTMLspecial;
+
+
+<!--=================== Text Markup =======================================-->
+
+<!ENTITY % font "TT | I | B | U | STRIKE | S | BIG | SMALL | SUB | SUP">
+
+<!ENTITY % phrase "EM | STRONG | DFN | CODE | SAMP | KBD | VAR | CITE">
+
+<![ %HTML.HotJava [
+ <!ENTITY % special "A | IMG | APPLET | OBJECT | FONT | BASEFONT | BR | SCRIPT | MAP
+ | NOBR | WBR | BLINK | SPAN">
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ENTITY % special "A | IMG | APPLET | FONT | BASEFONT | BR | SCRIPT | MAP">
+]]>
+
+<!ENTITY % form "INPUT | SELECT | TEXTAREA">
+
+<!ENTITY % text "#PCDATA | %font | %phrase | %special | %form">
+
+<![ %HTML.HotJava [
+ <!ELEMENT (%font|%phrase) - - (%text | CENTER | P | DL | UL | OL)*>
+]]>
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT (%font|%phrase) - - (%text)*>
+]]>
+
+
+<!-- there are also 16 widely known color names although
+ the resulting colors are implementation dependent:
+
+ aqua, black, blue, fuchsia, gray, green, lime, maroon,
+ navy, olive, purple, red, silver, teal, white, and yellow
+
+ These colors were originally picked as being the standard
+ 16 colors supported with the Windows VGA palette.
+ -->
+
+<![ %HTML.HotJava [
+ <!ELEMENT FONT - - (%text | CENTER | P | DL | UL | OL)* -- local change to font -->
+]]>
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT FONT - - (%text)* -- local change to font -->
+]]>
+<!ATTLIST FONT
+ size CDATA #IMPLIED -- [+]nn e.g. size="+1", size=4 --
+ color CDATA #IMPLIED -- #RRGGBB in hex, e.g. red: color="#FF0000" --
+ >
+
+<!ELEMENT BASEFONT - O EMPTY -- base font size (1 to 7)-->
+<!ATTLIST BASEFONT
+ size CDATA #IMPLIED -- e.g. size=3 --
+ >
+
+<!ELEMENT BR - O EMPTY -- forced line break -->
+<!ATTLIST BR
+ clear (left|all|right|none) none -- control of text flow --
+ >
+
+
+<!--================== HTML content models ================================-->
+<!--
+ HTML has three basic content models:
+
+ %text character level elements and text strings
+ %flow block-like elements e.g. paragraphs and lists
+ %bodytext as (b) plus headers and ADDRESS
+-->
+
+<!ENTITY % block
+ "P | %list | %preformatted | DL | DIV | CENTER | NOSCRIPT |
+ BLOCKQUOTE | FORM | ISINDEX | HR | TABLE | OBJECT">
+
+<!-- %flow is used for DD and LI -->
+
+<!ENTITY % flow "(%block | %text)*">
+
+<!--=================== Document Body =====================================-->
+
+
+<![ %HTML.HotJava [
+ <!ENTITY % body.content "(%heading | %block | %text | ADDRESS | FRAMESET |
+ NOFRAMES | NOHOTJAVA | ANIMATE)*">
+
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ENTITY % body.content "(%heading | %text | %block | ADDRESS)*">
+]]>
+
+<!ENTITY % color "CDATA" -- a color specification: #HHHHHH @@ details? -->
+
+<!ENTITY % body-color-attrs "
+ bgcolor %color #IMPLIED
+ text %color #IMPLIED
+ link %color #IMPLIED
+ vlink %color #IMPLIED
+ alink %color #IMPLIED
+ ">
+
+<!ELEMENT BODY O O %body.content>
+<![ %HTML.HotJava [
+ <!ATTLIST BODY
+ background %URL #IMPLIED -- texture tile for document background --
+ %body-color-attrs; -- bgcolor, text, link, vlink, alink --
+ width NUTOKEN #IMPLIED
+ height NUTOKEN #IMPLIED
+ >
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ATTLIST BODY
+ background %URL #IMPLIED -- texture tile for document background --
+ %body-color-attrs; -- bgcolor, text, link, vlink, alink --
+ >
+]]>
+
+
+<!ENTITY % address.content "((%text;) | P)*">
+
+<!ELEMENT ADDRESS - - %address.content>
+
+<!ELEMENT DIV - - %body.content>
+<![ %HTML.HotJava [
+ <!ATTLIST DIV
+ align (left|center|right) left -- alignment of following text --
+ >
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ATTLIST DIV
+ align (left|center|right) #IMPLIED -- alignment of following text --
+ >
+]]>
+
+<!-- CENTER is a shorthand for DIV with ALIGN=CENTER -->
+<!ELEMENT center - - %body.content>
+
+<!--================== The Anchor Element =================================-->
+
+<!ENTITY % SHAPE "(rect|circle|poly|default)">
+<!ENTITY % COORDS "CDATA" -- comma separated list of numbers -->
+
+<![ %HTML.HotJava [
+ <!ELEMENT A - - (%text|%heading|PRE)* -(A)>
+ <!ATTLIST A
+ name CDATA #IMPLIED -- named link end --
+ href %URL #IMPLIED -- URL for linked resource --
+ rel CDATA #IMPLIED -- forward link types --
+ rev CDATA #IMPLIED -- reverse link types --
+ title CDATA #IMPLIED -- advisory title string --
+ target CDATA #IMPLIED
+ shape %SHAPE #IMPLIED -- (OBJECT tag specific) --
+ coords %COORDS #IMPLIED -- always needed except for shape=default (OBJECT tag specific)--
+ ismap (ismap) #IMPLIED -- (OBJECT tag specific) --
+ >
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT A - - (%text)* -(A)>
+ <!ATTLIST A
+ name CDATA #IMPLIED -- named link end --
+ href %URL #IMPLIED -- URL for linked resource --
+ rel CDATA #IMPLIED -- forward link types --
+ rev CDATA #IMPLIED -- reverse link types --
+ title CDATA #IMPLIED -- advisory title string --
+ >
+]]>
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+ separate document although this isn't yet widely supported -->
+
+
+<![ %HTML.HotJava [
+<!ELEMENT MAP - - (BASE|AREA)*>
+]]>
+
+<![ %HTML.3.2.Conflict [
+<!ELEMENT MAP - - (AREA)*>
+]]>
+
+<!ATTLIST MAP
+ name CDATA #IMPLIED
+ >
+
+<!ELEMENT AREA - O EMPTY>
+
+<![ %HTML.HotJava [
+ <!ATTLIST AREA
+ shape %SHAPE rect
+ coords %COORDS #IMPLIED -- always needed except for shape=default --
+ href %URL #IMPLIED -- this region acts as hypertext link --
+ nohref (nohref) #IMPLIED -- this region has no action --
+ alt CDATA #IMPLIED -- make HotJava more forgiving --
+ target CDATA #IMPLIED
+ >
+]]>
+
+
+<![ %HTML.3.2.Conflict [
+ <!ATTLIST AREA
+ shape %SHAPE rect
+ coords %COORDS #IMPLIED -- always needed except for shape=default --
+ href %URL #IMPLIED -- this region acts as hypertext link --
+ nohref (nohref) #IMPLIED -- this region has no action --
+ alt CDATA #REQUIRED
+ >
+]]>
+
+<!--================== The LINK Element ==================================-->
+
+<!ENTITY % Types "CDATA"
+ -- See Internet Draft: draft-ietf-html-relrev-00.txt
+ LINK has been part of HTML since the early days
+ although few browsers as yet take advantage of it.
+
+ Relationship values can be used in principle:
+
+ a) for document specific toolbars/menus when used
+ with the LINK element in document head:
+ b) to link to a separate style sheet (rel=stylesheet)
+ c) to make a link to a script (rel=script)
+ d) by stylesheets to control how collections of
+ html nodes are rendered into printed documents
+ e) to make a link to a printable version of this document
+ e.g. a postscript or pdf version (rel=print)
+-->
+
+<!ELEMENT LINK - O EMPTY>
+<!ATTLIST LINK
+ id ID #IMPLIED -- SGML ID attribute --
+ href %URL #IMPLIED -- URL for linked resource --
+ rel %Types #IMPLIED -- forward link types --
+ rev %Types #IMPLIED -- reverse link types --
+ title CDATA #IMPLIED -- advisory title string --
+ >
+
+<!--=================== Images ============================================-->
+
+<!ENTITY % Length "CDATA" -- nn for pixels or nn% for percentage length -->
+<!ENTITY % Pixels "CDATA" -- integer representing length in pixels -->
+
+<!-- Suggested widths are used for negotiating image size
+ with the module responsible for painting the image.
+ align=left or right cause image to float to margin
+ and for subsequent text to wrap around image -->
+
+<![ %HTML.HotJava [
+ <!ENTITY % IAlign "top|middle|bottom|left|right
+ |texttop|absmiddle|baseline|absbottom">
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ENTITY % IAlign "top|middle|bottom|left|right">
+]]>
+
+<!ENTITY % ImgAlign "( %IAlign | center)">
+
+<!ELEMENT IMG - O EMPTY -- Embedded image -->
+<![ %HTML.HotJava [
+ <!ATTLIST IMG
+ src %URL #REQUIRED -- URL of image to embed --
+ alt CDATA #IMPLIED -- for display in place of image --
+ align %ImgAlign baseline -- vertical or horizontal alignment --
+ height %Pixels #IMPLIED -- suggested height in pixels --
+ width %Pixels #IMPLIED -- suggested width in pixels --
+ border %Pixels #IMPLIED -- suggested link border width --
+ hspace %Pixels #IMPLIED -- suggested horizontal gutter --
+ vspace %Pixels #IMPLIED -- suggested vertical gutter --
+ usemap %URL #IMPLIED -- use client-side image map --
+ ismap (ismap) #IMPLIED -- use server image map --
+ lowsrc %URL #IMPLIED
+ >
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ATTLIST IMG
+ src %URL #REQUIRED -- URL of image to embed --
+ alt CDATA #IMPLIED -- for display in place of image --
+ align (%IAlign) #IMPLIED -- vertical or horizontal alignment --
+ height %Pixels #IMPLIED -- suggested height in pixels --
+ width %Pixels #IMPLIED -- suggested width in pixels --
+ border %Pixels #IMPLIED -- suggested link border width --
+ hspace %Pixels #IMPLIED -- suggested horizontal gutter --
+ vspace %Pixels #IMPLIED -- suggested vertical gutter --
+ usemap %URL #IMPLIED -- use client-side image map --
+ ismap (ismap) #IMPLIED -- use server image map --
+ >
+]]>
+
+<!-- USEMAP points to a MAP element which may be in this document
+ or an external document, although the latter is not widely supported -->
+
+<!--=================== Java APPLET tag ===================================-->
+<!--
+ This tag is supported by all java enabled browsers. Applet resources
+ (including their classes) are normally loaded relative to the document
+ URL (or <BASE> element if it is defined). The CODEBASE attribute is used
+ to change this default behavior. If the CODEBASE attribute is defined then
+ it specifies a different location to find applet resources. The value
+ can be an absolute URL or a relative URL. The absolute URL is used as is
+ without modification and is not effected by the documents <BASE> element.
+ When the codebase attribute is relative, then it is relative to the
+ document URL (or <BASE> tag if defined).
+-->
+<![ %HTML.HotJava [
+ <!ELEMENT APPLET - - (%flow|%heading|%form|TR|TD)* +(PARAM)>
+ <!ATTLIST APPLET
+ codebase %URL #IMPLIED -- code base --
+ code CDATA #IMPLIED -- class file --
+ alt CDATA #IMPLIED -- for display in place of applet --
+ name CDATA #IMPLIED -- applet name --
+ archive CDATA #IMPLIED -- archive attribute for jar files --
+ width %Pixels #REQUIRED -- suggested width in pixels --
+ height %Pixels #REQUIRED -- suggested height in pixels --
+ align (%IAlign) baseline -- vertical or horizontal alignment --
+ hspace %Pixels #IMPLIED -- suggested horizontal gutter --
+ vspace %Pixels #IMPLIED -- suggested vertical gutter --
+ >
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT APPLET - - (%text)* +(PARAM)>
+ <!ATTLIST APPLET
+ codebase %URL #IMPLIED -- code base --
+ code CDATA #REQUIRED -- class file --
+ alt CDATA #IMPLIED -- for display in place of applet --
+ name CDATA #IMPLIED -- applet name --
+ width %Pixels #REQUIRED -- suggested width in pixels --
+ height %Pixels #REQUIRED -- suggested height in pixels --
+ align (%IAlign) #IMPLIED -- vertical or horizontal alignment --
+ hspace %Pixels #IMPLIED -- suggested horizontal gutter --
+ vspace %Pixels #IMPLIED -- suggested vertical gutter --
+ >
+]]>
+
+
+<!-- This tag is used by both the APPLET tag and the OBJECT tag. -->
+<!ELEMENT PARAM - O EMPTY>
+<!ATTLIST PARAM
+ name NAME #REQUIRED -- The name of the parameter --
+ value CDATA #IMPLIED -- The value of the parameter --
+ valuetype (DATA|REF|OBJECT) DATA -- How to interpret value (OBJECT tag specific) --
+ type CDATA #IMPLIED -- Internet media type (OBJECT tag specific) --
+ >
+
+<!--
+Here is an example:
+
+ <applet codebase="applets/NervousText"
+ code=NervousText.class
+ width=300
+ height=50>
+ <param name=text value="Java is Cool!">
+ <img src=sorry.gif alt="This looks better with Java support">
+ </applet>
+-->
+<!--=================== Object Tag ===================================-->
+
+<!--
+ The OBJECT element is used to insert an object into an HTML document.
+ It requires both start and end tags. The OBJECT element has the same
+ content model as the HTML BODY element, except that one or more optional
+ PARAM elements can be placed immediately after the OBJECT start tag and
+ used to initialize the inserted object. The content of the OBJECT
+ element is rendered if the object specified by the CLASSID, CODEBASE and
+ DATA attributes can't be rendered (user agents may choose to display the
+ content of the OBJECT element if displaying the actual element will take
+ a long time to render). This provides for backwards compatibility with
+ existing browsers, and allows authors to specify alternative media via
+ nested OBJECT elements.
+-->
+
+<!-- This is identical to the HMTL3.2 body.content entity.
+ It differs from the HotJava body.content in that it doesnt
+ have FRAMESET and NOFRAMES elements.
+-->
+<!ENTITY % bodytext "(%heading | %flow | ADDRESS)*">
+
+<!-- OBJECT is a character-like element for inserting objects -->
+
+<![ %HTML.3.2.Conflict [
+<!ELEMENT OBJECT - - (param | %bodytext)*>
+]]>
+
+<![ %HTML.HotJava [
+<!ELEMENT OBJECT - - (param | %bodytext | %form)*>
+]]>
+
+
+<!ATTLIST OBJECT
+ id ID #IMPLIED -- document wide unique id --
+ class CDATA #IMPLIED -- comma list of class values --
+ style CDATA #IMPLIED -- associated style info --
+ lang NAME #IMPLIED -- RFC 1766 language value --
+ dir (ltr|rtl) #IMPLIED -- default directionality --
+ declare (declare) #IMPLIED -- declare but don't instantiate flag --
+ classid %URL #IMPLIED -- identifies an implementation --
+ codebase %URL #IMPLIED -- some systems need an additional URL --
+ data %URL #IMPLIED -- reference to object's data --
+ type CDATA #IMPLIED -- Internet media type for data --
+ codetype CDATA #IMPLIED -- Internet media type for code --
+ standby CDATA #IMPLIED -- message to show while loading --
+ align (%IAlign) #IMPLIED -- positioning inside document --
+ height %Length #IMPLIED -- suggested height --
+ width %Length #IMPLIED -- suggested width --
+ border %Length #IMPLIED -- suggested link border width --
+ hspace %Length #IMPLIED -- suggested horizontal gutter --
+ vspace %Length #IMPLIED -- suggested vertical gutter --
+ usemap %URL #IMPLIED -- reference to image map --
+ shapes (shapes) #IMPLIED -- object has shaped hypertext links --
+ name %URL #IMPLIED -- submit as part of form --
+ >
+
+
+<!--=================== Horizontal Rule ===================================-->
+
+<!ELEMENT HR - O EMPTY>
+<!ATTLIST HR
+ align (left|right|center) #IMPLIED
+ noshade (noshade) #IMPLIED
+ size %Pixels #IMPLIED
+ width %Length #IMPLIED
+ >
+<!--=================== Paragraphs=========================================-->
+
+<!ELEMENT P - O (%text)*>
+<!ATTLIST P
+ align (left|center|right) #IMPLIED
+ >
+
+<!--=================== Headings ==========================================-->
+
+<!--
+ There are six levels of headers from H1 (the most important)
+ to H6 (the least important).
+-->
+
+<![ %HTML.HotJava [
+ <!ELEMENT ( %heading ) - - (IMG|br|hr|center|%text;)*>
+]]>
+
+
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT ( %heading ) - - (%text;)*>
+]]>
+
+<!ATTLIST ( %heading )
+ align (left|center|right) #IMPLIED
+ >
+
+<!--=================== Preformatted Text =================================-->
+
+<!-- excludes images and changes in font size -->
+
+<![ %HTML.HotJava [
+ <!ENTITY % pre.exclusions "BIG|SMALL|SUB|SUP">
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ENTITY % pre.exclusions "IMG|BIG|SMALL|SUB|SUP|FONT">
+]]>
+
+<![ %HTML.HotJava [
+ <!ELEMENT PRE - - (%text)* +(HR|P)>
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT PRE - - (%text)* -(%pre.exclusion)>
+]]>
+
+<!ATTLIST PRE
+ width NUMBER #implied -- is this widely supported? --
+ >
+
+<![ %HTML.Deprecated [
+
+<!ENTITY % literal "CDATA"
+ -- historical, non-conforming parsing mode where
+ the only markup signal is the end tag
+ in full
+ -->
+
+<!ELEMENT (XMP|LISTING) - - %literal>
+<!ELEMENT PLAINTEXT - O %literal>
+
+]]>
+
+<!--=================== Block-like Quotes =================================-->
+
+<!ELEMENT BLOCKQUOTE - - %body.content>
+
+<!--=================== Lists =============================================-->
+
+<!--
+ HTML 3.2 allows you to control the sequence number for ordered lists.
+ You can set the sequence number with the START and VALUE attributes.
+ The TYPE attribute may be used to specify the rendering of ordered
+ and unordered lists.
+-->
+
+<!-- definition lists - DT for term, DD for its definition -->
+
+
+<!--
+ Changed to enable hotjava to read netscape bookmarks.
+-->
+<![ %HTML.HotJava [
+ <!ELEMENT DL - - (P|DL|DT|DD)*>
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT DL - - (DT|DD)*>
+]]>
+
+<!ATTLIST DL
+ compact (compact) #IMPLIED -- more compact style --
+ >
+<!--
+ Changed to enable hotjava to read netscape bookmarks.
+ Also hotjava's hotlist uses the same format to save its
+ bookmarks.
+-->
+<![ %HTML.HotJava [
+ <!ELEMENT DT - O (%heading|%text)*>
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT DT - O (%text)*>
+]]>
+
+<!ELEMENT DD - O %flow;>
+
+<!-- Ordered lists OL, and unordered lists UL -->
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT (OL|UL) - - (LI)*>
+]]>
+
+<!-- Ordered lists OL, and unordered lists UL -->
+<![ %HTML.HotJava [
+ <!ELEMENT (OL|UL) - - (P|BR|%text|OL|UL|LI)*>
+]]>
+
+<!--
+ Numbering style
+ 1 arablic numbers 1, 2, 3, ...
+ a lower alpha a, b, c, ...
+ A upper alpha A, B, C, ...
+ i lower roman i, ii, iii, ...
+ I upper roman I, II, III, ...
+
+ The style is applied to the sequence number which by default
+ is reset to 1 for the first list item in an ordered list.
+
+ This can't be expressed directly in SGML due to case folding.
+-->
+
+<!ENTITY % OLStyle "CDATA" -- constrained to: [1|a|A|i|I] -->
+
+<![ %HTML.HotJava [
+ <!ATTLIST OL -- ordered lists --
+ type %OLStyle "1" -- numbering style --
+ start NUMBER #IMPLIED -- starting sequence number --
+ compact (compact) #IMPLIED -- reduced interitem spacing --
+ >
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ATTLIST OL -- ordered lists --
+ type %OLStyle #IMPLIED -- numbering style --
+ start NUMBER #IMPLIED -- starting sequence number --
+ compact (compact) #IMPLIED -- reduced interitem spacing --
+ >
+]]>
+
+<!-- bullet styles -->
+
+<!ENTITY % ULStyle "disc|square|circle">
+
+<!ATTLIST UL -- unordered lists --
+ type (%ULStyle) #IMPLIED -- bullet style --
+ compact (compact) #IMPLIED -- reduced interitem spacing --
+ >
+
+<![ %HTML.HotJava [
+ <!ELEMENT (DIR|MENU) - - (%list|%text|LI)* -(%preformatted | DL | DIV | CENTER |
+ BLOCKQUOTE | FORM | ISINDEX | HR | TABLE | OBJECT) +(P)>
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT (DIR|MENU) - - (LI)* -(%block)>
+]]>
+
+<!ATTLIST DIR
+ compact (compact) #IMPLIED
+ >
+<!ATTLIST MENU
+ compact (compact) #IMPLIED
+ >
+
+<!-- <DIR> Directory list -->
+<!-- <DIR COMPACT> Compact list style -->
+<!-- <MENU> Menu list -->
+<!-- <MENU COMPACT> Compact list style -->
+
+<!-- The type attribute can be used to change the bullet style
+ in unordered lists and the numbering style in ordered lists -->
+
+<!ENTITY % LIStyle "CDATA" -- constrained to: "(%ULStyle|%OLStyle)" -->
+
+<![ %HTML.HotJava [
+ <!ELEMENT LI - O (%flow|%heading)* -- list item -->
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT LI - O %flow -- list item -->
+]]>
+
+<!ATTLIST LI
+ type %LIStyle #IMPLIED -- list item style --
+ value NUMBER #IMPLIED -- reset sequence number --
+ >
+
+<!--================ Forms ===============================================-->
+
+<!ELEMENT FORM - - %body.content -(FORM)>
+<!ATTLIST FORM
+ action %URL #IMPLIED -- server-side form handler --
+ method (%HTTP-Method) GET -- see HTTP specification --
+ enctype %Content-Type; "application/x-www-form-urlencoded"
+ >
+
+<!ENTITY % InputType
+ "(TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT
+ | RESET | FILE | HIDDEN | IMAGE)">
+
+<!ELEMENT INPUT - O EMPTY>
+
+<![ %HTML.HotJava [
+ <!ATTLIST INPUT
+ type %InputType TEXT -- what kind of widget is needed --
+ name CDATA #IMPLIED -- required for all but submit and reset --
+ value CDATA #IMPLIED -- required for radio and checkboxes --
+ border %Pixels #IMPLIED -- suggested image border width --
+ checked (checked) #IMPLIED -- for radio buttons and check boxes --
+ size CDATA #IMPLIED -- specific to each type of field --
+ maxlength NUMBER #IMPLIED
+ src %URL #IMPLIED -- for fields with background images --
+ align (top|middle|bottom|left|right) top -- image alignment --
+ >
+]]>
+
+
+<![ %HTML.3.2.Conflict [
+ <!ATTLIST INPUT
+ type %InputType TEXT -- what kind of widget is needed --
+ name CDATA #IMPLIED -- required for all but submit and reset --
+ value CDATA #IMPLIED -- required for radio and checkboxes --
+ checked (checked) #IMPLIED -- for radio buttons and check boxes --
+ size CDATA #IMPLIED -- specific to each type of field --
+ maxlength NUMBER #IMPLIED
+ src %URL #IMPLIED -- for fields with background images --
+ align (top|middle|bottom|left|right) top -- image alignment --
+ >
+]]>
+
+
+<!ELEMENT SELECT - - (OPTION+)>
+<!ATTLIST SELECT
+ name CDATA #REQUIRED
+ size NUMBER #IMPLIED
+ multiple (multiple) #IMPLIED
+ >
+
+<!ELEMENT OPTION - O (#PCDATA)*>
+<!ATTLIST OPTION
+ selected (selected) #IMPLIED
+ value CDATA #IMPLIED -- defaults to element content --
+ >
+
+<!-- Multi-line text input field. -->
+
+<!ELEMENT TEXTAREA - - (#PCDATA)*>
+<!ATTLIST TEXTAREA
+ name CDATA #REQUIRED
+ rows NUMBER #REQUIRED
+ cols NUMBER #REQUIRED
+ >
+
+<!--======================= Tables ========================================-->
+
+<!-- Widely deployed subset of the full table standard, see RFC 1942
+ e.g. at http://www.ics.uci.edu/pub/ietf/html/rfc1942.txt -->
+
+<!-- horizontal placement of table relative to window -->
+<!ENTITY % Where "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents -->
+<!ENTITY % cell.halign
+ "align (left|center|right) #IMPLIED"
+ >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cell.valign
+ "valign (top|middle|bottom|baseline) #IMPLIED"
+ >
+
+<![ %HTML.HotJava [
+ <!ELEMENT table - - (tr|caption)* -- a little more forgiving -->
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT table - - (caption?, tr+)>
+]]>
+
+<!-- added to enable some pages like the nbc and apple pages to display correctly -->
+<![ %HTML.HotJava [
+ <!ELEMENT tr - O (td|th|SCRIPT|MAP)*>
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT tr - O (td|th)*>
+]]>
+
+<!ELEMENT (th|td) - O %body.content>
+
+
+<![ %HTML.HotJava [
+
+ <!ATTLIST table -- table element --
+ align %Where; #IMPLIED -- table position relative to window --
+ width %Length #IMPLIED -- table width relative to window --
+ border %Pixels #IMPLIED -- controls frame width around table --
+ cellspacing %Pixels #IMPLIED -- spacing between cells --
+ cellpadding %Pixels #IMPLIED -- spacing within cells --
+ bgcolor %color #IMPLIED -- def background color of all cells --
+ >
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ATTLIST table -- table element --
+ align %Where; #IMPLIED -- table position relative to window --
+ width %Length #IMPLIED -- table width relative to window --
+ border %Pixels #IMPLIED -- controls frame width around table --
+ cellspacing %Pixels #IMPLIED -- spacing between cells --
+ cellpadding %Pixels #IMPLIED -- spacing within cells --
+ >
+]]>
+
+<![ %HTML.HotJava [
+ <!ELEMENT CAPTION - - %body.content -- table or figure caption -->
+]]>
+
+
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT CAPTION - - (%text;)* -- table or figure caption -->
+]]>
+
+<![ %HTML.HotJava [
+ <!ATTLIST CAPTION
+ align (top|bottom) top
+ >
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ATTLIST CAPTION
+ align (top|bottom) #IMPLIED
+ >
+]]>
+
+<![ %HTML.HotJava [
+ <!ATTLIST tr -- table row --
+ %cell.halign; -- horizontal alignment in cells --
+ %cell.valign; -- vertical alignment in cells --
+ bgcolor %color #IMPLIED -- def bkg color for cells in row --
+ >
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ATTLIST tr -- table row --
+ %cell.halign; -- horizontal alignment in cells --
+ %cell.valign; -- vertical alignment in cells --
+ >
+]]>
+
+<![ %HTML.HotJava [
+
+ <!ATTLIST (th|td) -- header or data cell --
+ nowrap (nowrap) #IMPLIED -- suppress word wrap --
+ bgcolor %color #IMPLIED -- cell background color --
+ rowspan NUMBER 1 -- number of rows spanned by cell --
+ colspan NUMBER 1 -- number of cols spanned by cell --
+ %cell.halign; -- horizontal alignment in cell --
+ %cell.valign; -- vertical alignment in cell --
+ width %Length #IMPLIED -- suggested width for cell --
+ height %Length #IMPLIED -- suggested height for cell --
+ >
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ATTLIST (th|td) -- header or data cell --
+ nowrap (nowrap) #IMPLIED -- suppress word wrap --
+ rowspan NUMBER 1 -- number of rows spanned by cell --
+ colspan NUMBER 1 -- number of cols spanned by cell --
+ %cell.halign; -- horizontal alignment in cell --
+ %cell.valign; -- vertical alignment in cell --
+ width %Pixels #IMPLIED -- suggested width for cell --
+ height %Pixels #IMPLIED -- suggested height for cell --
+ >
+]]>
+
+
+
+<!--================ Document Head ========================================-->
+
+<!-- %head.misc defined earlier on as "SCRIPT|STYLE|META|LINK" -->
+
+<![ %HTML.HotJava [
+ <!ENTITY % head.content "TITLE? & ISINDEX? & BASE? & NEXTID?">
+]]>
+
+<![ %HTML.3.2.Conflict [
+ <!ENTITY % head.content "TITLE & ISINDEX? & BASE?">
+]]>
+
+<!ELEMENT HEAD O O (%head.content) +(%head.misc)>
+
+<!ELEMENT TITLE - - (#PCDATA)* -(%head.misc)
+ -- The TITLE element is not considered part of the flow of text.
+ It should be displayed, for example as the page header or
+ window title.
+ -->
+
+<!ELEMENT ISINDEX - O EMPTY>
+<!ATTLIST ISINDEX
+ prompt CDATA #IMPLIED -- prompt message -->
+
+
+
+<!--
+ The BASE element gives an absolute URL for dereferencing relative
+ URLs, e.g.
+
+ <BASE href="http://foo.com/index.html">
+ ...
+ <IMG SRC="images/bar.gif">
+
+ The image is deferenced to
+
+ http://foo.com/images/bar.gif
+
+ In the absence of a BASE element the document URL should be used.
+ Note that this is not necessarily the same as the URL used to
+ request the document, as the base URL may be overridden by an HTTP
+ header accompanying the document.
+-->
+
+<!ELEMENT BASE - O EMPTY>
+
+<![ %HTML.3.2.Conflict [
+ <!ATTLIST BASE href %URL #REQUIRED>
+]]>
+
+<![ %HTML.HotJava [
+ <!ATTLIST BASE
+ href %URL #IMPLIED
+ target CDATA #IMPLIED
+ >
+]]>
+
+<!ELEMENT META - O EMPTY -- Generic Metainformation -->
+<!ATTLIST META
+ http-equiv NAME #IMPLIED -- HTTP response header name --
+ name NAME #IMPLIED -- metainformation name --
+ content CDATA #REQUIRED -- associated information --
+ >
+
+<!-- SCRIPT/STYLE are place holders for transition to next version of HTML -->
+
+<!ELEMENT STYLE - - (#PCDATA)* -(%head.misc) -- style info -->
+
+<![ %HTML.3.2.Conflict [
+ <!ELEMENT SCRIPT - - (#PCDATA)* -(%head.misc) -- script statements -->
+]]>
+
+<!-- this definition of script for hotjava is done so that all html tags
+ that occur within the script tags can be ignored - given that
+ currently hotjava does not support javascript. -->
+
+<![ %HTML.HotJava [
+ <!ELEMENT SCRIPT - - %body.content -(%head.misc) -- script statements -->
+]]>
+
+<![ %HTML.HotJava [
+ <!ATTLIST SCRIPT
+ language CDATA #IMPLIED
+ >
+]]>
+
+<!--================ Document Structure ===================================-->
+
+<!ENTITY % version.attr "VERSION CDATA #FIXED '%HTML.Version;'">
+
+<![ %HTML.Deprecated [
+ <!ENTITY % html.content "HEAD, BODY, PLAINTEXT?">
+]]>
+<!ENTITY % html.content "HEAD, BODY">
+
+<!ELEMENT HTML O O (%html.content)>
+<!ATTLIST HTML
+ %version.attr;
+ >
+
+<!--================ HotJava Specials =====================================-->
+
+<!ELEMENT THEAD - O (TR)+>
+<!ELEMENT TFOOT - O (TR)+>
+<!ELEMENT TBODY O O (TR)+>
+
+<!ELEMENT SPAN - - (%text)*>
+
+<!ELEMENT BLINK - - ANY>
+
+<!ELEMENT NOBR - - (%text)+>
+<!ELEMENT WBR - O EMPTY>
+
+<!ELEMENT NEXTID - O EMPTY>
+<!ATTLIST NEXTID
+ n CDATA #REQUIRED>
+
+<!ELEMENT FRAMESET - O (FRAMESET|FRAME|NOFRAMES)*>
+<!ATTLIST FRAMESET
+ rows CDATA #IMPLIED
+ cols CDATA #IMPLIED
+>
+
+<!ELEMENT FRAME - O EMPTY>
+<!ATTLIST FRAME
+ src CDATA #IMPLIED
+ name CDATA #IMPLIED
+ frameborder NUMBER 1 -- the DTD says (1|0) --
+ marginwidth NUMBER #IMPLIED
+ marginheight NUMBER #IMPLIED
+ scrolling (yes|no|auto) AUTO
+ noresize (noresize) #IMPLIED
+>
+
+<!ELEMENT NOFRAMES - - CDATA>
+
+<!ELEMENT NOHOTJAVA - - CDATA>
+
+<!ELEMENT ANIMATE - - CDATA>
+
+<!ELEMENT NOSCRIPT - - (%block)+>
diff --git a/jdk/make/tools/dtdbuilder/dtds/public.map b/jdk/make/tools/dtdbuilder/dtds/public.map
new file mode 100644
index 0000000..534d231
--- /dev/null
+++ b/jdk/make/tools/dtdbuilder/dtds/public.map
@@ -0,0 +1,12 @@
+-- ISO latin 1 entity set for HTML --
+PUBLIC "-//W3C//ENTITIES Latin 1//EN//HTML" HTMLlat1.sgml
+
+-- Mathematical, Greek and Symbolic characters for HTML --
+PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML" HTMLsymbol.sgml
+
+-- Special characters for HTML --
+PUBLIC "-//W3C//ENTITIES Special//EN//HTML" HTMLspecial.sgml
+
+-- HotJava - 3.2+ support --
+PUBLIC "-//HotJava//DTD HotJava 1.0 HTML 3.2 Draft 19960821//EN" html32.dtd
+
diff --git a/jdk/make/tools/fontchecker/Makefile b/jdk/make/tools/fontchecker/Makefile
new file mode 100644
index 0000000..1ed0f5d
--- /dev/null
+++ b/jdk/make/tools/fontchecker/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the fontchecker tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.fontchecker
+PRODUCT = tools
+PROGRAM = fontchecker
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/FontChecker.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/freetypecheck/Makefile b/jdk/make/tools/freetypecheck/Makefile
new file mode 100644
index 0000000..c2a3e64
--- /dev/null
+++ b/jdk/make/tools/freetypecheck/Makefile
@@ -0,0 +1,69 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+
+# Builds test program for freetype sanity check.
+#
+# Makefile should be called with following input parameters
+# FT_TEST - full name of test program
+# FT_HEADERS - path to freetype headers
+# FT_LIB - location of directory with library
+# XARCH - xarch option if required
+
+BUILDDIR = ../..
+include $(BUILDDIR)/common/Defs.gmk
+
+#test program is expected in the TEMPDIR
+FT_TEST_PATH = $(TEMPDIR)/$(FT_TEST)
+
+all: $(FT_TEST_PATH)
+
+FT_OPTIONS = -I$(FT_HEADERS) -I$(FT_HEADERS)/freetype2
+FT_OPTIONS += $(XARCH)
+
+#add runtime library search path
+ifeq ($(PLATFORM), windows)
+ FREETYPE_LIB=$(FT_LIB)/freetype.lib
+ FREETYPE_DLL=$(FT_LIB)/freetype.dll
+ DFLAG=/D
+else
+ FT_OPTIONS += -L$(FT_LIB)
+ DFLAG = -D
+
+ #add runtime lib search path to ensure test will be runnable
+ ifeq ($(PLATFORM), solaris)
+ FT_OPTIONS += -R $(FT_LIB) -lfreetype
+ else #linux
+ FT_OPTIONS += -Wl,-rpath -Wl,$(FT_LIB) -lfreetype
+ endif
+endif
+
+FT_OPTIONS += $(DFLAG)REQUIRED_FREETYPE_VERSION=$(REQUIRED_FREETYPE_VERSION)
+
+# On windows we need to copy dll to test dir
+# ti ensure it will be found in runtime
+$(FT_TEST_PATH): freetypecheck.c
+ @$(CC) $(FT_OPTIONS) $(CC_PROGRAM_OUTPUT_FLAG)$@ $< $(FREETYPE_LIB) $(LFLAGS_$(COMPILER_VERSION))
+ifeq ($(PLATFORM), windows)
+ @$(CP) $(FREETYPE_DLL) `dirname $@`
+endif
diff --git a/jdk/make/tools/freetypecheck/freetypecheck.c b/jdk/make/tools/freetypecheck/freetypecheck.c
new file mode 100644
index 0000000..00f460d
--- /dev/null
+++ b/jdk/make/tools/freetypecheck/freetypecheck.c
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* Test program for freetype sanity check.
+ Prints "Failed" messages to STDOUT if check fails. */
+
+#include "ft2build.h"
+#include FT_FREETYPE_H
+
+#define QUOTEMACRO(x) QUOTEME(x)
+#define QUOTEME(x) #x
+
+int main(char** argv, int argc) {
+ char v[50];
+ FT_Int major, minor, patch;
+ FT_Library library;
+ sprintf(v, "%d.%d.%d", FREETYPE_MAJOR, FREETYPE_MINOR, FREETYPE_PATCH);
+
+ printf("Required version of freetype: %s\n",
+ QUOTEMACRO(REQUIRED_FREETYPE_VERSION));
+
+ printf("Detected freetype headers: %s\n", v);
+ if (strcmp(v, QUOTEMACRO(REQUIRED_FREETYPE_VERSION)) < 0) {
+ printf("Failed: headers are too old.\n");
+ }
+
+ FT_Init_FreeType(&library);
+ FT_Library_Version(library, &major, &minor, &patch);
+ sprintf(v, "%d.%d.%d", major, minor, patch);
+
+ printf("Detected freetype library: %s\n", v);
+ if (strcmp(v, QUOTEMACRO(REQUIRED_FREETYPE_VERSION)) < 0) {
+ printf("Failed: too old library.\n");
+ }
+
+ return 0;
+}
diff --git a/jdk/make/tools/generate_break_iterator/Makefile b/jdk/make/tools/generate_break_iterator/Makefile
new file mode 100644
index 0000000..60f9e46
--- /dev/null
+++ b/jdk/make/tools/generate_break_iterator/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the generatebreakiteratordata tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.generatebreakiteratordata
+PRODUCT = tools
+PROGRAM = generatebreakiteratordata
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/GenerateBreakIteratorData.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/generatecurrencydata/Makefile b/jdk/make/tools/generatecurrencydata/Makefile
new file mode 100644
index 0000000..802304a
--- /dev/null
+++ b/jdk/make/tools/generatecurrencydata/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the generatecurrencydata tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.generatecurrencydata
+PRODUCT = tools
+PROGRAM = generatecurrencydata
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/GenerateCurrencyData.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/hasher_classes/Makefile b/jdk/make/tools/hasher_classes/Makefile
new file mode 100644
index 0000000..711fb0e
--- /dev/null
+++ b/jdk/make/tools/hasher_classes/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the hasher tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.hasher
+PRODUCT = tools
+PROGRAM = hasher
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/Hasher.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/jarreorder/Makefile b/jdk/make/tools/jarreorder/Makefile
new file mode 100644
index 0000000..c1bd723
--- /dev/null
+++ b/jdk/make/tools/jarreorder/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the jarreorder tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.jarreorder
+PRODUCT = tools
+PROGRAM = jarreorder
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/JarReorder.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/jarsplit/Makefile b/jdk/make/tools/jarsplit/Makefile
new file mode 100644
index 0000000..530d036
--- /dev/null
+++ b/jdk/make/tools/jarsplit/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the jarsplit tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.jarsplit
+PRODUCT = tools
+PROGRAM = jarsplit
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/JarSplit.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/javazic/Makefile b/jdk/make/tools/javazic/Makefile
new file mode 100644
index 0000000..5524356
--- /dev/null
+++ b/jdk/make/tools/javazic/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the javazic tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.javazic
+PRODUCT = javazic
+PROGRAM = javazic
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/Main.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/jdwpgen/Makefile b/jdk/make/tools/jdwpgen/Makefile
new file mode 100644
index 0000000..3f6e4d0
--- /dev/null
+++ b/jdk/make/tools/jdwpgen/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the jdwpgen tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.jdwpgen
+PRODUCT = jpda
+PROGRAM = jdwpgen
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/Main.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/makeclasslist/Makefile b/jdk/make/tools/makeclasslist/Makefile
new file mode 100644
index 0000000..ed954ec
--- /dev/null
+++ b/jdk/make/tools/makeclasslist/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the makeclasslist tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.makeclasslist
+PRODUCT = tools
+PROGRAM = makeclasslist
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/MakeClasslist.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/manifest.mf b/jdk/make/tools/manifest.mf
new file mode 100644
index 0000000..4f008cd
--- /dev/null
+++ b/jdk/make/tools/manifest.mf
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Specification-Title: Java Platform API Specification
+Specification-Version: 1.6
+Specification-Vendor: Sun Microsystems, Inc.
+Implementation-Title: Java Runtime Environment
+Implementation-Version: @@RELEASE@@
+Implementation-Vendor: Sun Microsystems, Inc.
diff --git a/jdk/make/tools/reorder/Makefile b/jdk/make/tools/reorder/Makefile
new file mode 100644
index 0000000..f434537
--- /dev/null
+++ b/jdk/make/tools/reorder/Makefile
@@ -0,0 +1,273 @@
+#
+# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+# This Makefile is intended to produce new reordering files for the
+# reordering of jar files and shared libraries. This is not part of the
+# standard build. The objects produced by this Makefile must be copied
+# into their standard locations and checked in.
+
+BUILDDIR = ../..
+PACKAGE = tools.reorder
+PRODUCT = tools
+include $(BUILDDIR)/common/Defs.gmk
+
+OUTDIR = $(OUTPUTDIR)/reorder
+PRELOAD_DIR = $(ABS_OUTPUTDIR)/reorder/$(ARCH)
+
+ifeq ($(PLATFORM), windows)
+SEP = \\
+else
+SEP = /
+endif
+
+CLASSDIR = $(OUTDIR)/classes
+OBJDIR = $(OUTDIR)/$(ARCH)
+TESTS = Null Exit Hello Sleep IntToString \
+ LoadToolkit LoadFrame LoadJFrame JHello
+TEST_CLASSES = $(TESTS:%=$(CLASSDIR)/%.class)
+SWINGSET2 = $(OUTPUTDIR)/demo/jfc/SwingSet2/SwingSet2.jar
+
+# Run java from the JRE image because using rt.jar requires a
+# larger list of classes, and these should appear in the list.
+# FIXUP: adding rt.jar into bootclasspath?
+JRE_LIB = $(JRE_IMAGE_DIR)/lib
+BOOTPATH = -Xbootclasspath:$(JRE_LIB)/rt.jar:$(JRE_LIB)/charsets.jar
+JRE_JAVA = $(JRE_IMAGE_DIR)/bin/java
+
+JAVA_BIN = $(BINDIR)/java
+
+all : jars.reorder libs.reorder
+
+tools : $(OBJDIR) $(OBJDIR)/libmcount.so $(OBJDIR)/remove_mcount
+
+copy : jars.copy libs.copy
+
+clean :
+ $(RM) $(REORDER_JAR)
+
+clobber : clean
+ $(RM) -r $(OUTDIR)
+
+
+jars.reorder :
+ $(MAKE) JARFILE=rt.jar reorder.jar
+ $(MAKE) JARFILE=charsets.jar reorder.jar
+
+jars.copy:
+ $(CP) $(OUTDIR)/reorder_rt_jar-$(PLATFORM) reorder_rt_jar-$(PLATFORM)
+ $(CP) $(OUTDIR)/reorder_charsets_jar-$(PLATFORM) reorder_charsets_jar-$(PLATFORM)
+
+REORDER_JAR = $(OUTDIR)/reorder_$(subst .,_,$(JARFILE))-$(PLATFORM)
+reorder.jar : $(REORDER_JAR)
+
+libs.reorder :
+ifeq ($(PLATFORM), solaris)
+ $(MAKE) LIBBLDDIR=java/zip LIBTMPDIR=sun/java.util.zip/zip reorder.lib
+ $(MAKE) LIBBLDDIR=java/hpi/native LIBTMPDIR=java/hpi/native_threads reorder.lib
+ $(MAKE) LIBBLDDIR=java/java LIBTMPDIR=java/java.lang/java reorder.lib
+ $(MAKE) LIBBLDDIR=java/nio LIBTMPDIR=java/java.nio/nio reorder.lib
+ $(MAKE) LIBBLDDIR=sun/font LIBTMPDIR=sun/sun.awt.font/fontmanager reorder.lib
+ $(MAKE) LIBBLDDIR=sun/jpeg LIBTMPDIR=sun/sun.awt/jpeg reorder.lib
+ $(MAKE) LIBBLDDIR=java/verify LIBTMPDIR=java/verify reorder.lib
+endif
+
+libs.copy:
+ifeq ($(PLATFORM), solaris)
+ $(CP) $(OUTDIR)/reorder_java_zip-$(ARCH) ../../java/zip/reorder-$(ARCH)
+ $(CP) $(OUTDIR)/reorder_java_hpi_native-$(ARCH) ../../java/hpi/native/reorder-$(ARCH)
+ $(CP) $(OUTDIR)/reorder_java_java-$(ARCH) ../../java/java/reorder-$(ARCH)
+ $(CP) $(OUTDIR)/reorder_sun_font-$(ARCH) ../../sun/font/reorder-$(ARCH)
+ $(CP) $(OUTDIR)/reorder_sun_jpeg-$(ARCH) ../../sun/jpeg/reorder-$(ARCH)
+ $(CP) $(OUTDIR)/reorder_java_verify-$(ARCH) ../../java/verify/reorder-$(ARCH)
+endif
+
+REORDER_LIB = $(OUTDIR)/reorder_$(subst /,_,$(LIBBLDDIR))-$(ARCH)
+reorder.lib : $(OBJDIR) $(REORDER_LIB)
+
+
+# This target 'test_classes' also used by hotspot reordering.
+test_classes : $(TEST_CLASSES)
+
+# This target 'tool_classes' also used by hotspot reordering.
+tool_classes : $(CLASSDIR) $(CLASSDIR)/Combine.class $(CLASSDIR)/MaxTime.class
+
+$(REORDER_JAR) : $(CLASSDIR) test_classes tool_classes
+ $(RM) $(REORDER_JAR)
+
+ @$(ECHO) "# Ordered list of files to include in $(JARFILE)." > $(REORDER_JAR)
+ @$(ECHO) "# This is a generated file - do not edit." >> $(REORDER_JAR)
+ @$(ECHO) "#" >> $(REORDER_JAR)
+
+ @# Run each of a set of tests, extract the classes required and
+ @# append the new classes to the ClassList.
+
+ @for f in $(TESTS) ; do \
+ $(ECHO) Running test $$f.; \
+ $(RM) $(REORDER_JAR)_tmp1; \
+ echo "# Test $$f" >> $(REORDER_JAR); \
+ $(JRE_JAVA) -verbose -classpath $(CLASSDIR) $$f | \
+ $(SED) -n -e 's=\[Loaded \(.*\) from .*$(SEP)lib$(SEP)$(JARFILE)]=\1=p' | \
+ $(SED) -e 's=\.=/=g' -e 's=$$=.class=' \
+ > $(REORDER_JAR)_tmp1; \
+ $(JRE_JAVA) -classpath $(CLASSDIR) Combine \
+ $(REORDER_JAR) $(REORDER_JAR)_tmp1 \
+ > $(REORDER_JAR)_tmp2; \
+ $(MV) $(REORDER_JAR)_tmp2 $(REORDER_JAR); \
+ $(RM) $(REORDER_JAR)_tmp1; \
+ done
+
+ @# Run SwingSet2, extract the classes required and
+ @# append the new classes to the ClassList.
+
+ @$(RM) $(REORDER_JAR)_tmp1
+ @$(RM) $(REORDER_JAR)_tmp2
+ @$(ECHO) "# SwingSet2" >> $(REORDER_JAR)
+
+ @$(ECHO) ""
+ @$(ECHO) ""
+ @$(ECHO) "When SwingSet2 has finished drawing, " \
+ "you may terminate it (with your mouse)."
+ @$(ECHO) "Otherwise, it should be automatically terminated in 2 minutes."
+ @$(ECHO) ""
+ @$(ECHO) ""
+
+ $(JRE_JAVA) -verbose -classpath $(CLASSDIR) MaxTime $(SWINGSET2) 120 \
+ > $(REORDER_JAR)_tmp2
+
+ $(SED) -n -e 's=\[Loaded \(.*\) from .*$(SEP)lib$(SEP)$(JARFILE)]=\1=p' \
+ < $(REORDER_JAR)_tmp2 | \
+ $(SED) -e 's=\.=/=g' -e 's=$$=.class=' > $(REORDER_JAR)_tmp1
+
+ $(RM) $(REORDER_JAR)_tmp2
+ $(JRE_JAVA) -classpath $(CLASSDIR) Combine \
+ $(REORDER_JAR) $(REORDER_JAR)_tmp1 > $(REORDER_JAR)_tmp2
+ $(MV) $(REORDER_JAR)_tmp2 $(REORDER_JAR)
+ $(RM) $(REORDER_JAR)_tmp1
+
+$(CLASSDIR) :
+ $(MKDIR) -p $(CLASSDIR)
+
+$(CLASSDIR)/%.class : tools/%.java
+ $(JAVAC_CMD) -d $(CLASSDIR) $<
+$(CLASSDIR)/%.class : tests/%.java
+ $(JAVAC_CMD) -d $(CLASSDIR) $<
+
+$(OBJDIR) :
+ $(MKDIR) -p $(OBJDIR)
+
+
+MCOUNT_SRC = mcount.c
+MCOUNT_OBJ = $(MCOUNT_SRC:%.c=$(OBJDIR)/%.o)
+vpath %.c tools
+
+$(OBJDIR)/%.o : %.c tools/util-$(ARCH).il
+ $(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$@ $^
+
+# This library 'libmcount.so' also used by hotspot reordering.
+$(OBJDIR)/libmcount.so : $(MCOUNT_OBJ)
+ $(CC) -G -mt -zdefs -o $@ $^ -ldl -lelf $(EXTRA_LIBS)
+
+# This library 'libmcount.so' also used by hotspot reordering.
+$(OBJDIR)/remove_mcount : remove_mcount.c
+ $(CC) -g -o $@ $^ -ldl -lelf $(EXTRA_LIBS)
+
+
+# Reorder libraries.
+# + Delete all of the library's object files, and recompile them for profiling.
+# + Run the test sequence using libmcount to produce the mapfile.
+# + Delete all of the library's object files, and recompile them normally.
+
+$(REORDER_LIB): $(OBJDIR)/libmcount.so $(OBJDIR)/remove_mcount \
+ test_classes tool_classes
+
+ifeq ($(ARCH), i586)
+ @# On Solaris-i586 we need to remove the symbol _mcount from the command
+ $(OBJDIR)/remove_mcount $(BINDIR)/java
+endif
+
+ $(RM) $(OUTPUTDIR)/tmp/$(LIBTMPDIR)/$(OBJDIRNAME)/*.o
+ $(CD) $(BUILDDIR)/$(LIBBLDDIR) ; \
+ $(MAKE) PARTIAL_GPROF=true LDNOMAP=true NO_ROBOT=true all
+
+ $(RM) $(REORDER_LIB)
+ @$(ECHO) "data = R0x2000;" > $(REORDER_LIB)
+ @$(ECHO) "text = LOAD ?RXO;" >> $(REORDER_LIB)
+
+ @# Run each of a set of tests, extract the classes required and
+ @# append the new classes to the ClassList.
+
+ for f in $(TESTS) ; do \
+ $(ECHO) Running test $$f.; \
+ $(RM) $(REORDER_LIB)_tmp1; \
+ $(ECHO) "# Test $$f" >> $(REORDER_LIB); \
+ LD_PRELOAD=$(PRELOAD_DIR)/libmcount.so \
+ $(SETENV) \
+ $(JAVA_BIN) $(BOOTPATH) -classpath $(CLASSDIR) $$f \
+ 2> $(REORDER_LIB)_tmp1; \
+ $(SED) -n -e 's=[./]*$(OUTPUTDIR)=OUTPUTDIR=' -e '/^text:/p' \
+ $(REORDER_LIB)_tmp1 > $(REORDER_LIB)_tmp2; \
+ $(SED) -e '/^text:/d' $(REORDER_LIB)_tmp1; \
+ $(JRE_JAVA) -classpath $(CLASSDIR) Combine \
+ $(REORDER_LIB) $(REORDER_LIB)_tmp2 \
+ > $(REORDER_LIB)_tmp3; \
+ $(MV) $(REORDER_LIB)_tmp3 $(REORDER_LIB); \
+ $(RM) $(REORDER_LIB)_tmp2; \
+ $(RM) $(REORDER_LIB)_tmp1; \
+ done
+
+ @# Run SwingSet2, extract the classes required and
+ @# append the new classes to the ClassList.
+
+ @$(RM) $(REORDER_LIB)_tmp1
+ @$(RM) $(REORDER_JAR)_tmp2
+ @$(ECHO) "# SwingSet2" >> $(REORDER_LIB)
+
+ @$(ECHO) ""
+ @$(ECHO) ""
+ @$(ECHO) "When SwingSet2 has finished drawing, " \
+ "you may terminate it (with your mouse)."
+ @$(ECHO) "Otherwise, it should be automatically terminated in 2 minutes."
+ @$(ECHO) ""
+ @$(ECHO) ""
+
+ LD_PRELOAD=$(PRELOAD_DIR)/libmcount.so \
+ $(SETENV) \
+ $(JAVA_BIN) $(BOOTPATH) -classpath $(CLASSDIR) MaxTime \
+ $(SWINGSET2) 120 2> $(REORDER_LIB)_tmp1
+
+ $(SED) -n -e 's=[./]*$(OUTPUTDIR)=OUTPUTDIR=' -e '/^text:/p' \
+ $(REORDER_LIB)_tmp1 > $(REORDER_LIB)_tmp2
+ $(SED) -e '/^text:/d' $(REORDER_LIB)_tmp1
+ $(JRE_JAVA) -classpath $(CLASSDIR) Combine \
+ $(REORDER_LIB) $(REORDER_LIB)_tmp2 \
+ > $(REORDER_LIB)_tmp3
+ $(MV) $(REORDER_LIB)_tmp3 $(REORDER_LIB)
+ $(RM) $(REORDER_LIB)_tmp2
+ $(RM) $(REORDER_LIB)_tmp1
+
+ $(RM) $(OUTPUTDIR)/tmp/$(LIBTMPDIR)/$(OBJDIRNAME)/*.o
+ $(CD) $(BUILDDIR)/$(LIBBLDDIR) ; $(MAKE) all
+
+.PHONY: test_classes tool_classes
diff --git a/jdk/make/tools/reorder/tests/Exit.java b/jdk/make/tools/reorder/tests/Exit.java
new file mode 100644
index 0000000..fa15b25
--- /dev/null
+++ b/jdk/make/tools/reorder/tests/Exit.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+public class Exit {
+
+ public static void main(String[] args) {
+ System.exit(0);
+ }
+}
diff --git a/jdk/make/tools/reorder/tests/Hello.java b/jdk/make/tools/reorder/tests/Hello.java
new file mode 100644
index 0000000..46e6915
--- /dev/null
+++ b/jdk/make/tools/reorder/tests/Hello.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+
+public class Hello {
+
+ public static void main(String[] args) {
+ System.err.println("Hello");
+ }
+}
diff --git a/jdk/make/tools/reorder/tests/IntToString.java b/jdk/make/tools/reorder/tests/IntToString.java
new file mode 100644
index 0000000..a18c4d5
--- /dev/null
+++ b/jdk/make/tools/reorder/tests/IntToString.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+
+public class IntToString {
+
+ public static void main(String[] args) {
+ String n = "10000";
+ System.err.println("Hello");
+
+ if (args.length == 0) {
+ try {
+ Thread.currentThread().sleep(Integer.parseInt(n));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ System.exit(0);
+ }
+ }
+}
diff --git a/jdk/make/tools/reorder/tests/JHello.java b/jdk/make/tools/reorder/tests/JHello.java
new file mode 100644
index 0000000..1a3c6eb
--- /dev/null
+++ b/jdk/make/tools/reorder/tests/JHello.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+import java.awt.*;
+import java.io.PrintStream;
+import javax.swing.*;
+
+public class JHello extends JFrame {
+
+ JHello() {
+ JLabel jlabel = new JLabel("Hello");
+ jlabel.setFont(new Font("Monospaced", 0, 144));
+ getContentPane().add(jlabel);
+ pack();
+ }
+
+ public static void main(String args[]) {
+ new JHello().show();
+ try {
+ Thread.sleep(10000);
+ } catch (Exception e) {
+ }
+ System.exit(0);
+ }
+}
diff --git a/jdk/make/tools/reorder/tests/LoadFrame.java b/jdk/make/tools/reorder/tests/LoadFrame.java
new file mode 100644
index 0000000..bafac7f
--- /dev/null
+++ b/jdk/make/tools/reorder/tests/LoadFrame.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+import java.awt.Frame;
+
+public class LoadFrame {
+
+ public static void main(String[] args) {
+ new Frame().show();
+ // This starts a thread which never exits - so we suicide.
+ try {
+ Thread.sleep(5000);
+ } catch (Exception e) {
+ }
+ System.exit(0);
+ }
+}
diff --git a/jdk/make/tools/reorder/tests/LoadJFrame.java b/jdk/make/tools/reorder/tests/LoadJFrame.java
new file mode 100644
index 0000000..ff35fe0
--- /dev/null
+++ b/jdk/make/tools/reorder/tests/LoadJFrame.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+import javax.swing.JFrame;
+
+public class LoadJFrame {
+
+ public static void main(String[] args) {
+ new JFrame().show();
+ // This starts a thread which never exits - so we suicide.
+ try {
+ Thread.sleep(10000);
+ } catch (Exception e) {
+ }
+ System.exit(0);
+ }
+}
diff --git a/jdk/make/tools/reorder/tests/LoadToolkit.java b/jdk/make/tools/reorder/tests/LoadToolkit.java
new file mode 100644
index 0000000..b9277ee
--- /dev/null
+++ b/jdk/make/tools/reorder/tests/LoadToolkit.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+import java.awt.Toolkit;
+
+public class LoadToolkit {
+
+ public static void main(String[] args) {
+ Toolkit kit = Toolkit.getDefaultToolkit();
+ // This starts a thread which never exits - so we suicide.
+ try {
+ Thread.sleep(5000);
+ } catch (Exception e) {
+ }
+ System.exit(0);
+ }
+}
diff --git a/jdk/make/tools/reorder/tests/Null.java b/jdk/make/tools/reorder/tests/Null.java
new file mode 100644
index 0000000..64082c3
--- /dev/null
+++ b/jdk/make/tools/reorder/tests/Null.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+
+public class Null {
+
+ public static void main(String[] args) {
+ }
+}
diff --git a/jdk/make/tools/reorder/tests/Sleep.java b/jdk/make/tools/reorder/tests/Sleep.java
new file mode 100644
index 0000000..e57d183
--- /dev/null
+++ b/jdk/make/tools/reorder/tests/Sleep.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+public class Sleep {
+
+ public static void main(String[] args) {
+ // What is loaded on a sleep?
+ try {
+ Thread.sleep(5000);
+ } catch (Exception e) {
+ }
+ }
+}
diff --git a/jdk/make/tools/reorder/tools/Combine.java b/jdk/make/tools/reorder/tools/Combine.java
new file mode 100644
index 0000000..7fee0d2
--- /dev/null
+++ b/jdk/make/tools/reorder/tools/Combine.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+// Append files to one another without duplicating any lines.
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.util.HashMap;
+
+public class Combine {
+
+ private static HashMap map = new HashMap(10007);
+
+ private static void appendFile(String fileName, boolean keep) {
+ try {
+ BufferedReader br = new BufferedReader(new FileReader(fileName));
+
+ // Read a line at a time. If the line does not appear in the
+ // hashmap, print it and add it to the hashmap, so that it will
+ // not be repeated.
+
+ lineLoop:
+ while (true) {
+ String line = br.readLine();
+ if (line == null)
+ break;
+ if (keep || !map.containsKey(line)) {
+ System.out.println(line);
+ map.put(line,line);
+ }
+ }
+ br.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.exit(1);
+ }
+ }
+
+
+ public static void main(String[] args) {
+
+ if (args.length < 2) {
+ System.err.println("Usage: java Combine file1 file2 ...");
+ System.exit(2);
+ }
+
+ for (int i = 0; i < args.length; ++i)
+ appendFile(args[i], i == 0);
+ }
+}
diff --git a/jdk/make/tools/reorder/tools/MaxTime.java b/jdk/make/tools/reorder/tools/MaxTime.java
new file mode 100644
index 0000000..b8b72e9
--- /dev/null
+++ b/jdk/make/tools/reorder/tools/MaxTime.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.jar.Attributes;
+import java.util.jar.JarFile;
+
+/** Run an application (from a jar file) and terminate it after a given
+ * number of seconds.
+ */
+
+public class MaxTime {
+
+ private static boolean debugFlag = false;
+
+
+ private static void debug(String s) {
+ if (debugFlag) {
+ System.err.println(s);
+ }
+ }
+
+
+ private static void usage() {
+ System.err.println(
+ "Usage:\n" +
+ " java MaxTime <jarfile> <timeout>\n" +
+ "\n" +
+ " <jarfile> is a jar file specifying an application to run\n" +
+ " <timeout> is an integer number of seconds to allow the app to run." );
+ System.exit(1);
+ }
+
+
+ public static void main(String[] args) {
+ int timeoutPeriod = 0;
+ String mainClass = null;
+
+ if (args.length != 2)
+ usage();
+
+ // Identify the timeout value.
+ try {
+ timeoutPeriod = Integer.parseInt(args[1]);
+ } catch (Exception e) {
+ usage();
+ }
+
+ // Identify the application's main class.
+ try {
+ mainClass = new JarFile(args[0]).getManifest()
+ .getMainAttributes().getValue(Attributes.Name.MAIN_CLASS);
+ } catch (FileNotFoundException e) {
+ System.err.println("Can't find " + args[0]);
+ System.exit(1);
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.exit(2);
+ }
+
+ // Set the exit timer.
+ final int timeout = timeoutPeriod * 1000;
+ new Thread() {
+ public void run() {
+ try {
+ debug("Before timeout!");
+ Thread.sleep(timeout);
+ debug("After timeout!");
+ } catch (InterruptedException e) {
+ }
+ debug("Exit caused by timeout!");
+ System.exit(0);
+ }
+ }.start();
+
+
+ // Start up the app.
+ try {
+ ClassLoader cl = new URLClassLoader(
+ new URL[] {new URL("file:"+args[0])});
+ Class clazz = cl.loadClass(mainClass);
+ String[] objs = new String[0];
+ Method mainMethod = clazz.getMethod("main", new Class[]{objs.getClass()});
+ mainMethod.invoke(null, new Object[]{objs});
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.exit(3);
+ }
+ }
+}
diff --git a/jdk/make/tools/reorder/tools/mcount.c b/jdk/make/tools/reorder/tools/mcount.c
new file mode 100644
index 0000000..ced4b9d
--- /dev/null
+++ b/jdk/make/tools/reorder/tools/mcount.c
@@ -0,0 +1,621 @@
+/*
+ * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+#include <stdio.h>
+#include <sys/mman.h>
+#include <dlfcn.h>
+#include <libelf.h>
+#include <strings.h>
+#include <fcntl.h>
+#include <sys/param.h>
+#include <stdlib.h>
+#include <thread.h>
+#include <synch.h>
+#include <stdarg.h>
+#include <unistd.h>
+
+#define TRUE 1
+#define FALSE 0
+
+/* 32/64 bit build issues. */
+
+#ifdef _LP64
+ #define ElfXX_Sym Elf64_Sym
+ #define ElfXX_Ehdr Elf64_Ehdr
+ #define ElfXX_Shdr Elf64_Shdr
+ #define elfXX_getehdr elf64_getehdr
+ #define ElfXX_Addr Elf64_Addr
+ #define ELFXX_ST_TYPE ELF64_ST_TYPE
+ #define ELFXX_ST_BIND ELF64_ST_BIND
+ #define elfXX_getshdr elf64_getshdr
+#else
+ #define ElfXX_Sym Elf32_Sym
+ #define ElfXX_Ehdr Elf32_Ehdr
+ #define ElfXX_Shdr Elf32_Shdr
+ #define elfXX_getehdr elf32_getehdr
+ #define ElfXX_Addr Elf32_Addr
+ #define ELFXX_ST_TYPE ELF32_ST_TYPE
+ #define ELFXX_ST_BIND ELF32_ST_BIND
+ #define elfXX_getshdr elf32_getshdr
+#endif
+
+extern void *_getReturnAddr(void);
+
+
+
+typedef struct StabEntry {
+ unsigned n_strx;
+ unsigned char n_type;
+ char n_other;
+ short n_desc;
+ unsigned n_value;
+} StabEntry;
+
+
+typedef struct SymChain {
+ struct SymChain *next;
+ ElfXX_Sym *sym;
+} SymChain;
+
+
+typedef struct ObjFileList {
+ struct ObjFileList *next;
+ const char *objFileName;
+ int nameLen;
+} ObjFileList;
+
+
+typedef struct ElfInfo {
+ const char *fullName;
+ const char *baseName;
+ FILE *outFile;
+ int fd;
+ Elf *elf;
+ Elf_Data *sectionStringData;
+ Elf_Data *symData;
+ Elf_Data *symStringData;
+ int symCount;
+ SymChain *symChainHead;
+ Elf_Data *stabData;
+ Elf_Data *stabStringData;
+ int stabCount;
+ ObjFileList *objFileList;
+} ElfInfo;
+
+
+
+#define COUNT_BUF_SIZE (16*1024*1024)
+
+#define ENTRY_CHAIN_BUCKETS 4999
+
+static int *countBuf;
+static void *textOffset;
+static const char *libFileName;
+
+
+
+static void fail(const char *err, ...)
+{
+ va_list ap;
+ va_start(ap, err);
+ vfprintf(stderr, err, ap);
+ fflush(stderr);
+ va_end(ap);
+}
+
+
+
+static const char *getSymString(ElfInfo *elfInfo, int index)
+{
+ return (const char *)elfInfo->symStringData->d_buf + index;
+}
+
+
+static const char *getStabString(ElfInfo *elfInfo, int index)
+{
+ return (const char *)elfInfo->stabStringData->d_buf + index;
+}
+
+
+static const char *getSectionString(ElfInfo *elfInfo, int index)
+{
+ return (const char *)elfInfo->sectionStringData->d_buf + index;
+}
+
+
+static const char *makeObjFileList(ElfInfo *elfInfo)
+{
+ int i;
+ const char *file;
+ unsigned offset, lastOffset;
+ ObjFileList *objFileList;
+
+ file = NULL;
+ offset = lastOffset = 0;
+ for (i = 0; i < elfInfo->stabCount; ++i) {
+ StabEntry *stab = ((StabEntry *)elfInfo->stabData->d_buf) + i;
+
+ if (stab->n_type == 0 /* N_UNDEF */) {
+ offset = lastOffset;
+ lastOffset += stab-> n_value;
+ }
+ else if (stab->n_type == 0x38 /* N_OBJ */) {
+ file = getStabString(elfInfo, stab->n_strx + offset);
+ objFileList = (ObjFileList *)malloc(sizeof (ObjFileList));
+ objFileList->objFileName = file;
+ /*fprintf(stderr,"new obj file %s.\n", file);*/
+ objFileList->nameLen = strlen(file);
+ objFileList->next = elfInfo->objFileList;
+ elfInfo->objFileList = objFileList;
+ }
+ }
+ return NULL;
+}
+
+
+static ElfInfo *createElfInfo(const char *fullName)
+{
+ ElfInfo *elfInfo;
+ ElfXX_Ehdr *ehdr;
+ Elf_Scn *sectionStringSection;
+ Elf_Scn *stringSection;
+ Elf_Scn *symSection;
+ ElfXX_Shdr *symHeader;
+ Elf_Scn *stabSection;
+ ElfXX_Shdr *stabHeader;
+ ElfXX_Shdr *stringHeader;
+ Elf *elf;
+ const char *p;
+
+ /*fprintf(stderr, "# mapfile info for %s.\n", fullName);*/
+ elfInfo = (ElfInfo *)malloc(sizeof (ElfInfo));
+ memset(elfInfo, 0, sizeof (ElfInfo));
+ elfInfo->fullName = strdup(fullName);
+ p = rindex(elfInfo->fullName, '/');
+ elfInfo->baseName = (p == NULL) ? elfInfo->fullName : p + 1;
+
+ /* Open the ELF file. Get section headers. */
+
+ elf_version(EV_CURRENT);
+ elfInfo->fd = open(fullName, O_RDONLY);
+ if (elfInfo->fd < 0)
+ fail("Unable to open ELF file %s.\n", fullName);
+ elf = elf_begin(elfInfo->fd, ELF_C_READ, (Elf *)0);
+ if (elf == NULL)
+ fail("elf_begin failed.\n");
+ ehdr = elfXX_getehdr(elf);
+ sectionStringSection = elf_getscn(elf, ehdr->e_shstrndx);
+ elfInfo->sectionStringData = elf_getdata(sectionStringSection, NULL);
+
+ /* Find the symbol table section. */
+
+ symSection = NULL;
+ while ((symSection = elf_nextscn(elf, symSection)) != NULL) {
+ symHeader = elfXX_getshdr(symSection);
+ p = getSectionString(elfInfo, symHeader->sh_name);
+ if (strcmp(p, ".symtab") == 0)
+ break;
+ }
+ if (symSection == NULL)
+ fail("Unable to find symbol table.\n");
+
+ elfInfo->symData = elf_getdata(symSection, NULL);
+ elfInfo->symCount = elfInfo->symData->d_size / sizeof (ElfXX_Sym);
+
+ /* Find the string section. */
+
+ stringSection = NULL;
+ while ((stringSection = elf_nextscn(elf, stringSection)) != NULL) {
+ stringHeader = elfXX_getshdr(stringSection);
+ p = getSectionString(elfInfo, stringHeader->sh_name);
+ if (strcmp(p, ".strtab") == 0)
+ break;
+ }
+ if (stringSection == NULL)
+ fail("Unable to find string table.\n");
+
+ elfInfo->symStringData = elf_getdata(stringSection, NULL);
+ elfInfo->symChainHead = NULL;
+
+ /* Find the stab section. */
+
+ stabSection = NULL;
+ while ((stabSection = elf_nextscn(elf, stabSection)) != NULL) {
+ stabHeader = elfXX_getshdr(stabSection);
+ p = getSectionString(elfInfo, stabHeader->sh_name);
+ if (strcmp(p, ".stab.index") == 0)
+ break;
+ }
+ if (stabSection == NULL)
+ fail("Unable to find .stab.index.\n");
+
+ elfInfo->stabData = elf_getdata(stabSection, NULL);
+ elfInfo->stabCount = elfInfo->stabData->d_size / sizeof (StabEntry);
+
+ /* Find the string section. */
+
+ stringSection = NULL;
+ while ((stringSection = elf_nextscn(elf, stringSection)) != NULL) {
+ stringHeader = elfXX_getshdr(stringSection);
+ p = getSectionString(elfInfo, stringHeader->sh_name);
+ if (strcmp(p, ".stab.indexstr") == 0)
+ break;
+ }
+ if (stringSection == NULL)
+ fail("Unable to find .stab.indexstr table.\n");
+
+ elfInfo->stabStringData = elf_getdata(stringSection, NULL);
+ makeObjFileList(elfInfo);
+
+ return elfInfo;
+}
+
+
+static const char *identifyFile(ElfInfo *elfInfo, const char *name)
+{
+ int i;
+ const char *file;
+ const char *sourceFile;
+ unsigned offset, lastOffset;
+ const char *lastOptions;
+ char *buf;
+
+ file = NULL;
+ lastOptions = NULL;
+ offset = lastOffset = 0;
+ for (i = 0; i < elfInfo->stabCount; ++i) {
+ StabEntry *stab = ((StabEntry *)elfInfo->stabData->d_buf) + i;
+
+ if (stab->n_type == 0 /* N_UNDEF */) {
+ offset = lastOffset;
+ lastOffset += stab-> n_value;
+ file = NULL; /* C++ output files seem not to have N_OBJ fields.*/
+ lastOptions = NULL;
+ sourceFile = getStabString(elfInfo, stab->n_strx + offset);
+ }
+ else if (stab->n_type == 0x24 /* N_FUN */) {
+ const char *stabName;
+ char *p1, *p2;
+
+ stabName = getStabString(elfInfo, stab->n_strx + offset);
+ if (strcmp (stabName, name) == 0) {
+
+ if (file != NULL)
+ return file;
+
+ if (lastOptions == NULL)
+ return NULL;
+
+ p1 = strstr(lastOptions, ";ptr");
+ if (p1 == NULL)
+ return NULL;
+ p1 += 4;
+ p2 = index(p1, ';');
+ if (p2 == NULL)
+ return NULL;
+
+ buf = (char *)malloc(p2 - p1 + strlen(sourceFile) + 10);
+ strncpy(buf, p1, p2 - p1);
+ buf[p2-p1] = '/';
+ strcpy(buf + (p2 - p1) + 1, sourceFile);
+ p1 = rindex(buf, '.');
+ if (p1 == NULL)
+ return NULL;
+ p1[1] = 'o';
+ p1[2] = '\0';
+ return buf;
+ }
+ }
+ else if (stab->n_type == 0x3c /* N_OPT */) {
+ lastOptions = getStabString(elfInfo, stab->n_strx + offset);
+ }
+ else if (stab->n_type == 0x38 /* N_OBJ */) {
+ file = getStabString(elfInfo, stab->n_strx + offset);
+ }
+ }
+ return NULL;
+}
+
+
+static const char *checkObjFileList(ElfInfo *elfInfo, const char *file) {
+ ObjFileList *objFileList;
+ int len = strlen(file);
+ int nameLen;
+ const char *objFileName;
+
+ /*fprintf(stderr, "checkObjFileList(%s).\n", file);*/
+ for (objFileList = elfInfo->objFileList; objFileList != NULL;
+ objFileList = objFileList->next) {
+
+ objFileName = objFileList->objFileName;
+ nameLen = objFileList->nameLen;
+ if (strcmp(objFileName +nameLen - len, file) != 0)
+ continue;
+
+ if (len == nameLen)
+ return file;
+
+ if (len > nameLen)
+ continue;
+
+ if (*(objFileName + nameLen - len - 1) == '/')
+ return objFileName;
+ }
+ return file;
+}
+
+
+static void identifySymbol(ElfInfo *elfInfo, ElfXX_Addr value, int count)
+{
+ int i;
+ ElfXX_Sym *bestFunc = NULL;
+ ElfXX_Sym *bestFile = NULL;
+ ElfXX_Sym *lastFile = NULL;
+ char fileName[MAXPATHLEN];
+ char buf[4096];
+ const char *file;
+ SymChain *chain;
+ const char *format;
+
+ for (i = 0; i < elfInfo->symCount; ++i) {
+ ElfXX_Sym *sym = ((ElfXX_Sym *)elfInfo->symData->d_buf) + i;
+ if (ELFXX_ST_TYPE(sym->st_info) == STT_FUNC) {
+
+ if (sym->st_shndx == SHN_UNDEF)
+ continue;
+
+ if (sym->st_value > value)
+ continue;
+
+ if (bestFunc != NULL) {
+
+ if (sym->st_value < bestFunc->st_value)
+ continue;
+
+ /*
+ * If we have two symbols of equal value, we have a problem -
+ * we must pick the "right" one, which is the one the compiler
+ * used to generate the section name with -xF.
+ *
+ * The compiler has the nasty habit of generating two
+ * mangled names for some C++ functions.
+ *
+ * Try - picking the shortest name.
+ */
+
+ if (sym->st_value == bestFunc->st_value) {
+ if (strlen(getSymString(elfInfo, bestFunc->st_name)) <
+ strlen(getSymString(elfInfo, sym->st_name)))
+ continue;
+ }
+
+ }
+ bestFunc = sym;
+ bestFile = lastFile;
+ }
+ else if (ELFXX_ST_TYPE(sym->st_info) == STT_FILE) {
+ lastFile = sym;
+ }
+ }
+
+ if (bestFunc == NULL)
+ fail("Unable to find symbol for address 0x%x.\n", value);
+
+ for (chain = elfInfo->symChainHead; chain != NULL; chain = chain->next) {
+ if (chain->sym == bestFunc)
+ return;
+ }
+ chain = (SymChain *)malloc(sizeof (SymChain));
+ chain->sym = bestFunc;
+ chain->next = elfInfo->symChainHead;
+ elfInfo->symChainHead = chain;
+
+
+ if (ELFXX_ST_BIND(bestFunc->st_info) == STB_GLOBAL)
+ file = "";
+ else {
+ const char *name = getSymString(elfInfo, bestFunc->st_name);
+ file = identifyFile(elfInfo, name);
+ if (file == NULL) {
+ if (bestFile == NULL) {
+ file = "notFound";
+ fail("Failed to identify %s.\n", name);
+ } else {
+ char *suffix;
+ fileName[0] = ':';
+ fileName[1] = ' ';
+ file = getSymString(elfInfo, bestFile->st_name);
+ strncpy(fileName+2, file, MAXPATHLEN-3);
+ suffix = rindex(fileName, '.');
+ if (suffix == NULL)
+ fail("no file name suffix?");
+ suffix[1] = 'o';
+ suffix[2] = '\0';
+
+ file = checkObjFileList(elfInfo, fileName+2);
+ if (file != fileName+2)
+ strncpy(fileName+2, file, MAXPATHLEN-3);
+
+ file = fileName;
+ }
+ } else {
+ fileName[0] = ':';
+ fileName[1] = ' ';
+ strncpy(fileName + 2, file, MAXPATHLEN-3);
+ file = fileName;
+ }
+ }
+ format = "text: .text%%%s%s;\n";
+ i = snprintf(buf, sizeof buf, format,
+ bestFunc ? getSymString(elfInfo, bestFunc->st_name) : "notFound",
+ file);
+ write(2, buf, i);
+}
+
+
+static mutex_t mutex;
+static int orderByCount = FALSE;
+
+
+static void init_mcount(void)
+{
+ mutex_init(&mutex, USYNC_THREAD, NULL);
+}
+
+#pragma init(init_mcount)
+
+
+typedef struct CountAddrPair {
+ int count;
+ unsigned int addr;
+} CountAddrPair;
+
+
+static int compareCounts(const void *a, const void *b) {
+ return ((CountAddrPair *)b)->count - ((CountAddrPair *)a)->count;
+}
+
+static int compareCountsReverse(const void *a, const void *b) {
+ return ((CountAddrPair *)a)->count - ((CountAddrPair *)b)->count;
+}
+
+
+static void doCounts(void) {
+ unsigned int i;
+ int n;
+ int nMethods;
+ int nMethods2;
+ CountAddrPair *pairs;
+ ElfInfo *elfInfo;
+
+ elfInfo = createElfInfo(libFileName);
+
+ nMethods = 0;
+ for (i = 0; i < COUNT_BUF_SIZE >> 2; ++i) {
+ n = countBuf[i];
+ if (n > 0)
+ ++nMethods;
+ }
+ pairs = (CountAddrPair *)malloc(sizeof(CountAddrPair) * nMethods);
+ nMethods2 = 0;
+ for (i = 0; i < COUNT_BUF_SIZE >> 2; ++i) {
+ n = countBuf[i];
+ if (n > 0) {
+ pairs[nMethods2].count = n;
+ pairs[nMethods2].addr = i << 2;
+ ++nMethods2;
+ if (nMethods2 > nMethods) {
+ fprintf(stderr, "Number of methods detected increased after"
+ " the atexit call.\n");
+ break;
+ }
+ }
+ }
+ if (orderByCount) {
+ qsort(pairs, nMethods, sizeof pairs[0], &compareCounts);
+ for (i = 0; i < nMethods; ++i) {
+ identifySymbol(elfInfo, pairs[i].addr, pairs[i].count);
+ }
+ }
+ else {
+ qsort(pairs, nMethods, sizeof pairs[0], &compareCountsReverse);
+ for (i = 0; i < nMethods; ++i) {
+ identifySymbol(elfInfo, pairs[i].addr, 0);
+ }
+ }
+}
+
+
+static void __mcount(void *i0)
+{
+ Dl_info info;
+ unsigned int offset;
+ int *p;
+ static int callsCounted = 0;
+ static int initialized = FALSE;
+
+ if (!initialized) {
+ dladdr(i0, &info);
+ libFileName = info.dli_fname;
+#if 0
+ fprintf(stderr, "Profiling %s\n", libFileName);
+#endif
+ textOffset = info.dli_fbase;
+ if (getenv("MCOUNT_ORDER_BY_COUNT") != NULL) {
+ orderByCount = TRUE;
+ }
+ countBuf = (int *)malloc(COUNT_BUF_SIZE);
+ memset(countBuf, 0, COUNT_BUF_SIZE);
+ atexit(&doCounts);
+ initialized = TRUE;
+ }
+
+ if ((uintptr_t)i0 < (uintptr_t)textOffset) {
+ fprintf(stderr, "mcount: function being profiled out of range????\n");
+ fprintf(stderr, " profiling more than one library at once????\n");
+#if 0
+ dladdr(i0, &info);
+ fprintf(stderr, "Problem with %s in %s ???\n",
+ info.dli_sname, info.dli_fname);
+#endif
+ fflush(stderr);
+ exit(666);
+ }
+ offset = ((uintptr_t)i0) - ((uintptr_t)textOffset);
+ if (offset > COUNT_BUF_SIZE) {
+ fprintf(stderr, "mcount: internal buffer too small for test.\n");
+ fprintf(stderr, " or function being profiled out of range????\n");
+ fprintf(stderr, " or profiling more than one library at once????\n");
+#if 0
+ dladdr(i0, &info);
+ fprintf(stderr, "Problem with %s in %s ???\n",
+ info.dli_sname, info.dli_fname);
+#endif
+ fflush(stderr);
+ exit(666);
+ }
+
+ p = &countBuf[offset >>2];
+ if (orderByCount) {
+ ++*p;
+ }
+ else {
+ if (*p == 0) {
+ *p = ++callsCounted;
+ }
+ }
+}
+
+
+void _mcount(void)
+{
+ __mcount(_getReturnAddr());
+}
+
+
+void mcount(void)
+{
+ __mcount(_getReturnAddr());
+}
diff --git a/jdk/make/tools/reorder/tools/remove_mcount.c b/jdk/make/tools/reorder/tools/remove_mcount.c
new file mode 100644
index 0000000..12cc29a
--- /dev/null
+++ b/jdk/make/tools/reorder/tools/remove_mcount.c
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2000-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+#include <stdio.h>
+#include <sys/mman.h>
+#include <dlfcn.h>
+#include <libelf.h>
+#include <strings.h>
+#include <fcntl.h>
+#include <sys/param.h>
+#include <stdlib.h>
+#include <thread.h>
+#include <synch.h>
+#include <stdarg.h>
+
+#define TRUE 1
+#define FALSE 0
+
+
+static void fail(const char *err, ...)
+{
+ va_list ap;
+ va_start(ap, err);
+ vfprintf(stderr, err, ap);
+ fflush(stderr);
+ va_end(ap);
+ exit(2);
+}
+
+
+static Elf_Scn *find_section(Elf *elf, Elf_Data *sectionStringData,
+ const char *name)
+{
+ Elf_Scn *result = NULL;
+ Elf32_Shdr *symHeader;
+ const char *p;
+
+ while ((result = elf_nextscn(elf, result)) != NULL) {
+ symHeader = elf32_getshdr(result);
+ p = (const char *)(sectionStringData->d_buf) + symHeader->sh_name;
+ if (strcmp(p, name) == 0)
+ break;
+ }
+ return result;
+}
+
+
+static void trash_mcount(int count, Elf_Data *data, Elf_Data *stringData)
+{
+ int i;
+ for (i = 0; i < count; ++i) {
+ Elf32_Sym *sym = ((Elf32_Sym *)data->d_buf) + i;
+ char *name = (char *)stringData->d_buf + sym->st_name;
+
+ if (strcmp(name, "_mcount") == 0) {
+ name[6] = 'T';
+ break;
+ }
+ }
+ if (i < count)
+ printf("Symbol _mcount found and changed.\n");
+ else
+ printf("Symbol _mcount not found.\n");
+}
+
+
+/*
+ * In the executable program named as the sole command line argument, find
+ * the symbol _mcount, if present, and change its name to something
+ * different. The symbol _mcount is included in Solaris/x86 programs by
+ * the compilers, and its presence prevents preloaded modules from
+ * supplying a custom implementation of that method.
+ */
+
+int main(int argc, char **argv)
+{
+ Elf32_Ehdr *ehdr;
+ Elf_Scn *sectionStringSection;
+ Elf_Scn *stringSection;
+ Elf_Scn *dynStringSection;
+ Elf_Scn *symSection;
+ Elf_Scn *dynSymSection;
+ Elf32_Shdr *symHeader;
+ Elf32_Shdr *dynSymHeader;
+ Elf32_Shdr *dynStringHeader;
+ Elf32_Shdr *stringHeader;
+ Elf *elf;
+ const char *p;
+ int i;
+ const char *fullName;
+ int fd;
+ Elf_Data *sectionStringData;
+ Elf_Data *symData;
+ Elf_Data *dynSymData;
+ Elf_Data *symStringData;
+ Elf_Data *dynSymStringData;
+ int symCount;
+ int dynSymCount;
+
+
+ if (argc != 2) {
+ fprintf(stderr, "Usage:\n"
+ "\t%s <file>\n", argv[0]);
+ exit(1);
+ }
+
+ fullName = argv[1];
+
+ /* Open the ELF file. Get section headers. */
+
+ elf_version(EV_CURRENT);
+ fd = open(fullName, O_RDWR);
+ if (fd < 0)
+ fail("Unable to open ELF file %s.\n", fullName);
+ elf = elf_begin(fd, ELF_C_RDWR, (Elf *)0);
+ if (elf == NULL)
+ fail("elf_begin failed.\n");
+ ehdr = elf32_getehdr(elf);
+ sectionStringSection = elf_getscn(elf, ehdr->e_shstrndx);
+ sectionStringData = elf_getdata(sectionStringSection, NULL);
+
+ /* Find the symbol table section. */
+
+ symSection = find_section(elf, sectionStringData, ".symtab");
+ if (symSection != NULL) {
+ symData = elf_getdata(symSection, NULL);
+ symCount = symData->d_size / sizeof (Elf32_Sym);
+
+ /* Find the string section, trash the _mcount symbol. */
+
+ stringSection = find_section(elf, sectionStringData, ".strtab");
+ if (stringSection == NULL)
+ fail("Unable to find string table.\n");
+ symStringData = elf_getdata(stringSection, NULL);
+ trash_mcount(symCount, symData, symStringData);
+ } else {
+ fprintf(stderr, "Unable to find symbol table.\n");
+ }
+
+ /* Find the dynamic symbol table section. */
+
+ dynSymSection = find_section(elf, sectionStringData, ".dynsym");
+ if (dynSymSection != NULL) {
+ dynSymData = elf_getdata(dynSymSection, NULL);
+ dynSymCount = dynSymData->d_size / sizeof (Elf32_Sym);
+
+ /* Find the dynamic string section, trash the _mcount symbol. */
+
+ dynStringSection = find_section(elf, sectionStringData, ".dynstr");
+ if (dynStringSection == NULL)
+ fail("Unable to find dynamic string table.\n");
+ dynSymStringData = elf_getdata(dynStringSection, NULL);
+ trash_mcount(dynSymCount, dynSymData, dynSymStringData);
+ } else {
+ fail("Unable to find dynamic symbol table.\n");
+ }
+
+ elf_update(elf, ELF_C_WRITE);
+ elf_end(elf);
+
+ exit(0);
+}
diff --git a/jdk/make/tools/reorder/tools/util-i586.il b/jdk/make/tools/reorder/tools/util-i586.il
new file mode 100644
index 0000000..8ca41e8
--- /dev/null
+++ b/jdk/make/tools/reorder/tools/util-i586.il
@@ -0,0 +1,4 @@
+
+ .inline _getReturnAddr,0
+ movl 4(%ebp), %eax
+ .end
diff --git a/jdk/make/tools/reorder/tools/util-sparc.il b/jdk/make/tools/reorder/tools/util-sparc.il
new file mode 100644
index 0000000..8423b5e
--- /dev/null
+++ b/jdk/make/tools/reorder/tools/util-sparc.il
@@ -0,0 +1,11 @@
+
+ .inline _getReturnAddr,0
+ ! Warning: don't use in leaf methods - their ret addr is not in %i7.
+ mov %i7, %o0
+ .end
+
+
+ .inline _flushInstruction,1
+ flush %o0
+ stbar
+ .end
diff --git a/jdk/make/tools/reorder/tools/util-sparcv9.il b/jdk/make/tools/reorder/tools/util-sparcv9.il
new file mode 100644
index 0000000..8423b5e
--- /dev/null
+++ b/jdk/make/tools/reorder/tools/util-sparcv9.il
@@ -0,0 +1,11 @@
+
+ .inline _getReturnAddr,0
+ ! Warning: don't use in leaf methods - their ret addr is not in %i7.
+ mov %i7, %o0
+ .end
+
+
+ .inline _flushInstruction,1
+ flush %o0
+ stbar
+ .end
diff --git a/jdk/make/tools/sharing/README.txt b/jdk/make/tools/sharing/README.txt
new file mode 100644
index 0000000..146cc94
--- /dev/null
+++ b/jdk/make/tools/sharing/README.txt
@@ -0,0 +1,34 @@
+This directory contains tools and tests associated with creating the
+class list for class data sharing.
+
+The class list is produced by running the refWorkload startup3 benchmark with
+the -verbose:class option. The -Xshare:off option must also be used so that
+bootclasspath classes are loaded from rt.jar. The MakeClasslist program
+should be built into the jar file makeclasslist.jar and is run
+on one of the logs from each of the benchmarks in the following fashion:
+
+cd .../results.startup3
+$JAVA_HOME/bin/java -jar makeclasslist.jar results.Noop/results_1/log results.Framer/results_1/log results.XFramer/results_1/log results.JEdit/results_1/log results.LimeWire/results_1/log results.NetBeans/results_1/log
+
+Presently, $JAVA_HOME must be the same path used to run the startup3 benchmark.
+
+The logs are deliberately concatenated in roughly smallest to largest
+order based on application size. The resulting output is redirected
+into a file and results in one of classlist.solaris, classlist.linux,
+or classlist.windows. These files are checked in to the workspace. A
+necessary checksum (AddJsum.java) is added to the final classlist
+(installed in lib/ or jre/lib/) during the build process by the
+makefiles in make/java/redist.
+
+In a forthcoming JDK build we plan to manually add the dependent
+classes for the calendar manager Glow, which pulls in the Preferences
+classes and, on Unix platforms, the XML parsing classes.
+
+The properties file supplied to the refworkload is approximately the
+following:
+
+javahome=/usr/java/j2sdk1.5.0
+resultsdir=classlist-run
+iterations=1
+benchmarks=startup3
+globalvmoptions=-client -Xshare:off -verbose:class
diff --git a/jdk/make/tools/sharing/classlist.linux b/jdk/make/tools/sharing/classlist.linux
new file mode 100644
index 0000000..b61d94f
--- /dev/null
+++ b/jdk/make/tools/sharing/classlist.linux
@@ -0,0 +1,2405 @@
+java/lang/Object
+java/lang/String
+java/io/Serializable
+java/lang/Comparable
+java/lang/CharSequence
+java/lang/Class
+java/lang/reflect/GenericDeclaration
+java/lang/reflect/Type
+java/lang/reflect/AnnotatedElement
+java/lang/Cloneable
+java/lang/ClassLoader
+java/lang/System
+java/lang/Throwable
+java/lang/Error
+java/lang/ThreadDeath
+java/lang/Exception
+java/lang/RuntimeException
+java/security/ProtectionDomain
+java/security/AccessControlContext
+java/lang/ClassNotFoundException
+java/lang/NoClassDefFoundError
+java/lang/LinkageError
+java/lang/ClassCastException
+java/lang/ArrayStoreException
+java/lang/VirtualMachineError
+java/lang/OutOfMemoryError
+java/lang/StackOverflowError
+java/lang/IllegalMonitorStateException
+java/lang/ref/Reference
+java/lang/ref/SoftReference
+java/lang/ref/WeakReference
+java/lang/ref/FinalReference
+java/lang/ref/PhantomReference
+java/lang/ref/Finalizer
+java/lang/Thread
+java/lang/Runnable
+java/lang/ThreadGroup
+java/lang/Thread$UncaughtExceptionHandler
+java/util/Properties
+java/util/Hashtable
+java/util/Map
+java/util/Dictionary
+java/lang/reflect/AccessibleObject
+java/lang/reflect/Field
+java/lang/reflect/Member
+java/lang/reflect/Method
+java/lang/reflect/Constructor
+sun/reflect/MagicAccessorImpl
+sun/reflect/MethodAccessorImpl
+sun/reflect/MethodAccessor
+sun/reflect/ConstructorAccessorImpl
+sun/reflect/ConstructorAccessor
+sun/reflect/DelegatingClassLoader
+sun/reflect/ConstantPool
+sun/reflect/UnsafeStaticFieldAccessorImpl
+sun/reflect/UnsafeFieldAccessorImpl
+sun/reflect/FieldAccessorImpl
+sun/reflect/FieldAccessor
+java/util/Vector
+java/util/List
+java/util/Collection
+java/lang/Iterable
+java/util/RandomAccess
+java/util/AbstractList
+java/util/AbstractCollection
+java/lang/StringBuffer
+java/lang/AbstractStringBuilder
+java/lang/Appendable
+java/lang/StackTraceElement
+java/nio/Buffer
+java/lang/Boolean
+java/lang/Character
+java/lang/Float
+java/lang/Number
+java/lang/Double
+java/lang/Byte
+java/lang/Short
+java/lang/Integer
+java/lang/Long
+java/lang/NullPointerException
+java/lang/ArithmeticException
+java/io/ObjectStreamField
+java/lang/String$CaseInsensitiveComparator
+java/util/Comparator
+java/lang/RuntimePermission
+java/security/BasicPermission
+java/security/Permission
+java/security/Guard
+sun/misc/SoftCache
+java/util/AbstractMap
+java/lang/ref/ReferenceQueue
+java/lang/ref/ReferenceQueue$Null
+java/lang/ref/ReferenceQueue$Lock
+java/util/HashMap
+java/lang/annotation/Annotation
+java/util/HashMap$Entry
+java/util/Map$Entry
+java/security/AccessController
+java/lang/reflect/ReflectPermission
+sun/reflect/ReflectionFactory$GetReflectionFactoryAction
+java/security/PrivilegedAction
+java/util/Stack
+sun/reflect/ReflectionFactory
+java/lang/ref/Reference$Lock
+java/lang/ref/Reference$ReferenceHandler
+java/lang/ref/Finalizer$FinalizerThread
+java/util/Hashtable$EmptyEnumerator
+java/util/Enumeration
+java/util/Hashtable$EmptyIterator
+java/util/Iterator
+java/util/Hashtable$Entry
+java/nio/charset/Charset
+sun/nio/cs/StandardCharsets
+sun/nio/cs/FastCharsetProvider
+java/nio/charset/spi/CharsetProvider
+sun/nio/cs/StandardCharsets$Aliases
+sun/util/PreHashedMap
+sun/nio/cs/StandardCharsets$Classes
+sun/nio/cs/StandardCharsets$Cache
+java/lang/ThreadLocal
+java/util/concurrent/atomic/AtomicInteger
+sun/misc/Unsafe
+java/lang/NoSuchMethodError
+java/lang/IncompatibleClassChangeError
+sun/reflect/Reflection
+java/util/Collections
+java/util/Collections$EmptySet
+java/util/AbstractSet
+java/util/Set
+java/util/Collections$EmptyList
+java/util/Collections$EmptyMap
+java/util/Collections$ReverseComparator
+java/util/Collections$SynchronizedMap
+java/lang/Class$3
+java/lang/reflect/Modifier
+java/lang/reflect/ReflectAccess
+sun/reflect/LangReflectAccess
+java/util/Arrays
+java/lang/Math
+sun/nio/cs/US_ASCII
+sun/nio/cs/HistoricallyNamedCharset
+sun/misc/VM
+java/lang/StringCoding
+java/lang/ThreadLocal$ThreadLocalMap
+java/lang/ThreadLocal$ThreadLocalMap$Entry
+java/lang/StringCoding$StringDecoder
+sun/nio/cs/US_ASCII$Decoder
+java/nio/charset/CharsetDecoder
+java/nio/charset/CodingErrorAction
+java/nio/ByteBuffer
+java/nio/HeapByteBuffer
+java/nio/Bits
+java/nio/ByteOrder
+java/nio/CharBuffer
+java/lang/Readable
+java/nio/HeapCharBuffer
+java/nio/charset/CoderResult
+java/nio/charset/CoderResult$1
+java/nio/charset/CoderResult$Cache
+java/nio/charset/CoderResult$2
+sun/misc/Version
+java/io/FileInputStream
+java/io/InputStream
+java/io/Closeable
+java/io/FileDescriptor
+java/io/FileOutputStream
+java/io/OutputStream
+java/io/Flushable
+java/io/BufferedInputStream
+java/io/FilterInputStream
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
+sun/reflect/misc/ReflectUtil
+java/io/PrintStream
+java/io/FilterOutputStream
+java/io/BufferedOutputStream
+java/io/OutputStreamWriter
+java/io/Writer
+sun/nio/cs/StreamEncoder
+sun/security/action/GetPropertyAction
+sun/nio/cs/US_ASCII$Encoder
+java/nio/charset/CharsetEncoder
+sun/nio/cs/Surrogate$Parser
+sun/nio/cs/Surrogate
+java/io/BufferedWriter
+java/lang/Runtime
+java/io/File
+java/io/FileSystem
+java/io/UnixFileSystem
+java/io/ExpiringCache
+java/io/ExpiringCache$1
+java/util/LinkedHashMap
+java/util/LinkedHashMap$Entry
+java/lang/StringBuilder
+java/io/File$1
+sun/misc/JavaIODeleteOnExitAccess
+sun/misc/SharedSecrets
+java/lang/ClassLoader$3
+java/lang/StringCoding$StringEncoder
+java/io/ExpiringCache$Entry
+java/lang/ClassLoader$NativeLibrary
+java/lang/Terminator
+java/lang/Terminator$1
+sun/misc/SignalHandler
+sun/misc/Signal
+sun/misc/NativeSignalHandler
+java/io/Console
+java/io/Console$1
+sun/misc/JavaIOAccess
+java/io/Console$1$1
+java/lang/Shutdown
+java/util/ArrayList
+java/lang/Shutdown$Lock
+java/lang/ApplicationShutdownHooks
+java/util/IdentityHashMap
+sun/misc/OSEnvironment
+java/lang/System$2
+sun/misc/JavaLangAccess
+java/lang/Compiler
+java/lang/Compiler$1
+sun/misc/Launcher
+sun/misc/Launcher$Factory
+java/net/URLStreamHandlerFactory
+sun/misc/Launcher$ExtClassLoader
+java/net/URLClassLoader
+java/security/SecureClassLoader
+sun/security/util/Debug
+java/net/URLClassLoader$7
+sun/misc/JavaNetAccess
+java/util/StringTokenizer
+sun/misc/Launcher$ExtClassLoader$1
+java/security/PrivilegedExceptionAction
+sun/misc/MetaIndex
+java/io/BufferedReader
+java/io/Reader
+java/io/FileReader
+java/io/InputStreamReader
+sun/nio/cs/StreamDecoder
+java/lang/reflect/Array
+sun/net/www/ParseUtil
+java/util/BitSet
+java/io/ObjectStreamClass
+java/net/URL
+java/util/Locale
+java/util/concurrent/ConcurrentHashMap
+java/util/concurrent/ConcurrentMap
+java/util/concurrent/ConcurrentHashMap$Segment
+java/util/concurrent/locks/ReentrantLock
+java/util/concurrent/locks/Lock
+java/util/concurrent/locks/ReentrantLock$NonfairSync
+java/util/concurrent/locks/ReentrantLock$Sync
+java/util/concurrent/locks/AbstractQueuedSynchronizer
+java/util/concurrent/locks/AbstractOwnableSynchronizer
+java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
+java/util/concurrent/ConcurrentHashMap$HashEntry
+java/lang/CharacterDataLatin1
+java/net/Parts
+sun/net/www/protocol/file/Handler
+java/net/URLStreamHandler
+java/lang/Class$1
+sun/reflect/ReflectionFactory$1
+sun/reflect/NativeConstructorAccessorImpl
+sun/reflect/DelegatingConstructorAccessorImpl
+java/util/HashSet
+sun/misc/URLClassPath
+sun/net/www/protocol/jar/Handler
+sun/misc/Launcher$AppClassLoader
+sun/misc/Launcher$AppClassLoader$1
+java/lang/SystemClassLoaderAction
+java/net/URLClassLoader$1
+sun/misc/URLClassPath$3
+sun/misc/URLClassPath$JarLoader
+sun/misc/URLClassPath$Loader
+java/security/PrivilegedActionException
+sun/misc/URLClassPath$FileLoader
+sun/misc/URLClassPath$FileLoader$1
+sun/misc/Resource
+sun/nio/ByteBuffered
+java/security/CodeSource
+java/security/Permissions
+java/security/PermissionCollection
+sun/net/www/protocol/file/FileURLConnection
+sun/net/www/URLConnection
+java/net/URLConnection
+java/net/UnknownContentHandler
+java/net/ContentHandler
+sun/net/www/MessageHeader
+java/io/FilePermission
+java/io/FilePermission$1
+sun/security/provider/PolicyFile
+java/security/Policy
+java/security/Policy$UnsupportedEmptyCollection
+java/io/FilePermissionCollection
+java/security/AllPermission
+java/security/UnresolvedPermission
+java/security/BasicPermissionCollection
+java/security/Principal
+java/security/cert/Certificate
+java/util/AbstractList$Itr
+java/util/IdentityHashMap$KeySet
+java/util/IdentityHashMap$KeyIterator
+java/util/IdentityHashMap$IdentityHashMapIterator
+java/io/DeleteOnExitHook
+java/util/LinkedHashSet
+java/util/HashMap$KeySet
+java/util/LinkedHashMap$KeyIterator
+java/util/LinkedHashMap$LinkedHashIterator
+java/awt/Frame
+java/awt/MenuContainer
+java/awt/Window
+javax/accessibility/Accessible
+java/awt/Container
+java/awt/Component
+java/awt/image/ImageObserver
+java/lang/InterruptedException
+java/awt/Label
+java/util/logging/Logger
+java/util/logging/Handler
+java/util/logging/Level
+java/util/logging/LogManager
+java/util/logging/LogManager$1
+java/beans/PropertyChangeSupport
+java/util/logging/LogManager$LogNode
+java/util/logging/LoggingPermission
+java/util/logging/LogManager$Cleaner
+java/util/logging/LogManager$RootLogger
+java/util/logging/LogManager$2
+java/util/Properties$LineReader
+java/util/Hashtable$Enumerator
+java/beans/PropertyChangeEvent
+java/util/EventObject
+java/awt/Component$AWTTreeLock
+sun/awt/DebugHelper
+sun/awt/NativeLibLoader
+sun/security/action/LoadLibraryAction
+java/awt/GraphicsEnvironment
+java/awt/GraphicsEnvironment$1
+java/lang/ProcessEnvironment
+java/lang/ProcessEnvironment$Variable
+java/lang/ProcessEnvironment$ExternalData
+java/lang/ProcessEnvironment$Value
+java/lang/ProcessEnvironment$StringEnvironment
+java/util/Collections$UnmodifiableMap
+sun/awt/DebugHelperStub
+java/awt/Toolkit
+java/awt/Toolkit$3
+sun/util/CoreResourceBundleControl
+java/util/ResourceBundle$Control
+java/util/Arrays$ArrayList
+java/util/Collections$UnmodifiableRandomAccessList
+java/util/Collections$UnmodifiableList
+java/util/Collections$UnmodifiableCollection
+java/util/ResourceBundle
+java/util/ResourceBundle$1
+java/util/ResourceBundle$RBClassLoader
+java/util/ResourceBundle$RBClassLoader$1
+java/util/ResourceBundle$CacheKey
+java/util/ResourceBundle$LoaderReference
+java/util/ResourceBundle$CacheKeyReference
+java/util/ResourceBundle$SingleFormatControl
+sun/awt/resources/awt
+java/util/ListResourceBundle
+java/awt/Toolkit$1
+java/io/FileNotFoundException
+java/io/IOException
+java/awt/event/KeyEvent
+java/awt/event/InputEvent
+java/awt/event/ComponentEvent
+java/awt/AWTEvent
+java/awt/event/NativeLibLoader
+java/util/WeakHashMap
+java/util/WeakHashMap$Entry
+java/awt/Component$DummyRequestFocusController
+sun/awt/RequestFocusController
+java/awt/LayoutManager
+java/awt/LightweightDispatcher
+java/awt/event/AWTEventListener
+java/util/EventListener
+java/awt/Dimension
+java/awt/geom/Dimension2D
+java/util/concurrent/atomic/AtomicBoolean
+java/awt/ComponentOrientation
+java/awt/Component$2
+java/lang/NoSuchMethodException
+sun/awt/AppContext
+sun/awt/AppContext$1
+sun/awt/AppContext$2
+sun/awt/MostRecentKeyValue
+java/awt/Cursor
+sun/awt/X11GraphicsEnvironment
+sun/java2d/SunGraphicsEnvironment
+sun/java2d/FontSupport
+sun/awt/DisplayChangedListener
+sun/java2d/SunGraphicsEnvironment$TTFilter
+java/io/FilenameFilter
+sun/java2d/SunGraphicsEnvironment$T1Filter
+sun/awt/X11GraphicsEnvironment$1
+sun/awt/SunToolkit
+sun/awt/WindowClosingSupport
+sun/awt/WindowClosingListener
+sun/awt/ComponentFactory
+sun/awt/InputMethodSupport
+java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
+java/util/concurrent/locks/Condition
+sun/awt/AWTAutoShutdown
+sun/awt/AWTAutoShutdown$PeerMap
+sun/awt/SunToolkit$6
+java/awt/Dialog$ModalExclusionType
+java/lang/Enum
+java/awt/Dialog
+java/awt/Dialog$ModalityType
+java/awt/ModalEventFilter
+java/awt/EventFilter
+sun/reflect/UnsafeFieldAccessorFactory
+sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
+sun/awt/SunDisplayChanger
+sun/java2d/SunGraphicsEnvironment$1
+java/io/StreamTokenizer
+sun/font/FontManager
+sun/font/FileFont
+sun/font/PhysicalFont
+sun/font/Font2D
+sun/font/CompositeFont
+java/util/HashMap$Values
+java/util/HashMap$ValueIterator
+java/util/HashMap$HashIterator
+sun/font/FontManager$1
+java/awt/Font
+java/awt/geom/AffineTransform
+sun/font/AttributeValues
+sun/font/EAttribute
+java/text/AttributedCharacterIterator$Attribute
+java/lang/Class$4
+sun/reflect/NativeMethodAccessorImpl
+sun/reflect/DelegatingMethodAccessorImpl
+java/awt/font/TextAttribute
+java/lang/Integer$IntegerCache
+sun/font/TrueTypeFont
+java/awt/font/FontRenderContext
+java/awt/RenderingHints
+sun/awt/SunHints
+sun/awt/SunHints$Key
+java/awt/RenderingHints$Key
+sun/awt/SunHints$Value
+sun/awt/SunHints$LCDContrastKey
+sun/font/Type1Font
+java/awt/geom/Point2D$Float
+java/awt/geom/Point2D
+sun/font/StrikeMetrics
+java/awt/geom/Rectangle2D$Float
+java/awt/geom/Rectangle2D
+java/awt/geom/RectangularShape
+java/awt/Shape
+java/awt/geom/GeneralPath
+java/awt/geom/Path2D$Float
+java/awt/geom/Path2D
+sun/font/CharToGlyphMapper
+sun/font/PhysicalStrike
+sun/font/FontStrike
+sun/font/GlyphList
+sun/font/StrikeCache
+sun/java2d/Disposer
+sun/java2d/Disposer$1
+sun/font/StrikeCache$1
+sun/font/FontManager$FontRegistrationInfo
+sun/awt/motif/MFontConfiguration
+sun/awt/FontConfiguration
+sun/awt/FontDescriptor
+java/util/Scanner
+java/util/regex/Pattern
+java/util/regex/Pattern$8
+java/util/regex/Pattern$Node
+java/util/regex/Pattern$LastNode
+java/util/regex/Pattern$GroupHead
+java/util/regex/Pattern$CharPropertyNames
+java/util/regex/Pattern$CharPropertyNames$1
+java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory
+java/util/regex/Pattern$CharPropertyNames$2
+java/util/regex/Pattern$CharPropertyNames$5
+java/util/regex/Pattern$CharPropertyNames$3
+java/util/regex/Pattern$CharPropertyNames$6
+java/util/regex/Pattern$CharPropertyNames$CloneableProperty
+java/util/regex/Pattern$CharProperty
+java/util/regex/Pattern$CharPropertyNames$4
+java/util/regex/Pattern$CharPropertyNames$7
+java/util/regex/Pattern$CharPropertyNames$8
+java/util/regex/Pattern$CharPropertyNames$9
+java/util/regex/Pattern$CharPropertyNames$10
+java/util/regex/Pattern$CharPropertyNames$11
+java/util/regex/Pattern$CharPropertyNames$12
+java/util/regex/Pattern$CharPropertyNames$13
+java/util/regex/Pattern$CharPropertyNames$14
+java/util/regex/Pattern$CharPropertyNames$15
+java/util/regex/Pattern$CharPropertyNames$16
+java/util/regex/Pattern$CharPropertyNames$17
+java/util/regex/Pattern$CharPropertyNames$18
+java/util/regex/Pattern$CharPropertyNames$19
+java/util/regex/Pattern$CharPropertyNames$20
+java/util/regex/Pattern$CharPropertyNames$21
+java/util/regex/Pattern$Curly
+java/util/regex/Pattern$Slice
+java/util/regex/Pattern$Begin
+java/util/regex/Pattern$First
+java/util/regex/Pattern$Start
+java/util/regex/Pattern$TreeInfo
+java/util/regex/Pattern$All
+java/util/regex/Pattern$BitClass
+java/util/regex/Pattern$BmpCharProperty
+java/util/regex/Pattern$6
+java/util/regex/Pattern$CharProperty$1
+java/util/regex/Pattern$10
+sun/nio/ch/FileChannelImpl
+java/nio/channels/FileChannel
+java/nio/channels/ByteChannel
+java/nio/channels/ReadableByteChannel
+java/nio/channels/Channel
+java/nio/channels/WritableByteChannel
+java/nio/channels/GatheringByteChannel
+java/nio/channels/ScatteringByteChannel
+java/nio/channels/spi/AbstractInterruptibleChannel
+java/nio/channels/InterruptibleChannel
+sun/nio/ch/Util
+sun/nio/ch/IOUtil
+sun/nio/ch/FileDispatcher
+sun/nio/ch/NativeDispatcher
+sun/nio/ch/Reflect
+java/nio/MappedByteBuffer
+sun/nio/ch/Reflect$1
+sun/nio/ch/NativeThreadSet
+java/nio/channels/Channels
+java/util/Scanner$1
+sun/misc/LRUCache
+java/util/regex/Matcher
+java/util/regex/MatchResult
+java/text/NumberFormat
+java/text/Format
+java/text/spi/NumberFormatProvider
+java/util/spi/LocaleServiceProvider
+sun/util/LocaleServiceProviderPool
+sun/util/LocaleServiceProviderPool$1
+java/util/ServiceLoader
+java/util/ServiceLoader$LazyIterator
+java/util/ServiceLoader$1
+java/util/HashMap$EntrySet
+java/util/LinkedHashMap$EntryIterator
+sun/misc/Launcher$1
+sun/misc/URLClassPath$2
+java/lang/ClassLoader$2
+sun/misc/URLClassPath$1
+java/net/URLClassLoader$3
+sun/misc/CompoundEnumeration
+sun/misc/URLClassPath$JarLoader$1
+sun/misc/FileURLMapper
+java/net/URLClassLoader$3$1
+sun/util/resources/LocaleData
+sun/util/resources/LocaleData$1
+sun/util/resources/LocaleData$LocaleDataResourceBundleControl
+sun/util/LocaleDataMetaInfo
+sun/text/resources/FormatData
+java/util/ResourceBundle$BundleReference
+sun/text/resources/FormatData_en
+sun/text/resources/FormatData_en_US
+java/text/DecimalFormatSymbols
+java/text/spi/DecimalFormatSymbolsProvider
+java/util/Currency
+java/util/Currency$1
+java/util/CurrencyData
+java/util/spi/CurrencyNameProvider
+sun/util/resources/CurrencyNames
+sun/util/resources/LocaleNamesBundle
+sun/util/resources/OpenListResourceBundle
+sun/util/resources/CurrencyNames_en_US
+java/text/DecimalFormat
+java/text/FieldPosition
+java/text/DigitList
+java/math/RoundingMode
+java/util/regex/Pattern$GroupTail
+java/util/regex/Pattern$Ctype
+java/util/regex/Pattern$Ques
+java/util/regex/Pattern$GroupCurly
+java/util/regex/Pattern$5
+java/util/regex/Pattern$Loop
+java/util/regex/Pattern$Prolog
+java/util/regex/Pattern$9
+java/util/regex/Pattern$BranchConn
+java/util/regex/Pattern$Branch
+java/nio/channels/spi/AbstractInterruptibleChannel$1
+sun/nio/ch/Interruptible
+sun/nio/ch/NativeThread
+sun/nio/ch/DirectBuffer
+java/nio/DirectByteBuffer
+java/nio/DirectByteBuffer$Deallocator
+sun/misc/Cleaner
+sun/nio/ch/IOStatus
+java/util/regex/ASCII
+java/io/DataInputStream
+java/io/DataInput
+java/lang/Short$ShortCache
+java/util/HashMap$KeyIterator
+sun/font/CompositeFontDescriptor
+sun/font/Font2DHandle
+sun/font/FontFamily
+java/awt/GraphicsDevice
+sun/awt/X11GraphicsDevice
+sun/awt/X11GraphicsConfig
+java/awt/GraphicsConfiguration
+java/awt/ImageCapabilities
+sun/java2d/x11/X11SurfaceData
+sun/java2d/SurfaceData
+java/awt/Transparency
+sun/java2d/DisposerTarget
+sun/java2d/InvalidPipeException
+java/lang/IllegalStateException
+sun/java2d/NullSurfaceData
+sun/java2d/loops/SurfaceType
+sun/awt/image/PixelConverter
+sun/awt/image/PixelConverter$Xrgb
+sun/awt/image/PixelConverter$Argb
+sun/awt/image/PixelConverter$ArgbPre
+sun/awt/image/PixelConverter$Xbgr
+sun/awt/image/PixelConverter$Rgba
+sun/awt/image/PixelConverter$RgbaPre
+sun/awt/image/PixelConverter$Ushort565Rgb
+sun/awt/image/PixelConverter$Ushort555Rgb
+sun/awt/image/PixelConverter$Ushort555Rgbx
+sun/awt/image/PixelConverter$Ushort4444Argb
+sun/awt/image/PixelConverter$ByteGray
+sun/awt/image/PixelConverter$UshortGray
+sun/awt/image/PixelConverter$Rgbx
+sun/awt/image/PixelConverter$Bgrx
+sun/awt/image/PixelConverter$ArgbBm
+java/awt/image/ColorModel
+java/awt/image/DirectColorModel
+java/awt/image/PackedColorModel
+java/awt/color/ColorSpace
+java/awt/color/ICC_Profile
+sun/awt/color/ProfileDeferralInfo
+sun/awt/color/ProfileDeferralMgr
+java/awt/color/ICC_ProfileRGB
+java/awt/color/ICC_Profile$1
+sun/awt/color/ProfileActivator
+java/awt/color/ICC_ColorSpace
+sun/java2d/pipe/NullPipe
+sun/java2d/pipe/PixelDrawPipe
+sun/java2d/pipe/PixelFillPipe
+sun/java2d/pipe/ShapeDrawPipe
+sun/java2d/pipe/TextPipe
+sun/java2d/pipe/DrawImagePipe
+java/awt/image/IndexColorModel
+sun/java2d/pipe/LoopPipe
+sun/java2d/pipe/OutlineTextRenderer
+sun/java2d/pipe/SolidTextRenderer
+sun/java2d/pipe/GlyphListLoopPipe
+sun/java2d/pipe/GlyphListPipe
+sun/java2d/pipe/AATextRenderer
+sun/java2d/pipe/LCDTextRenderer
+sun/java2d/pipe/AlphaColorPipe
+sun/java2d/pipe/CompositePipe
+sun/java2d/pipe/PixelToShapeConverter
+sun/java2d/pipe/TextRenderer
+sun/java2d/pipe/SpanClipRenderer
+sun/java2d/pipe/Region
+sun/java2d/pipe/RegionIterator
+sun/java2d/pipe/DuctusShapeRenderer
+sun/java2d/pipe/DuctusRenderer
+sun/java2d/pipe/AlphaPaintPipe
+sun/java2d/pipe/SpanShapeRenderer$Composite
+sun/java2d/pipe/SpanShapeRenderer
+sun/java2d/pipe/GeneralCompositePipe
+sun/java2d/pipe/DrawImage
+sun/java2d/loops/RenderCache
+sun/java2d/loops/RenderCache$Entry
+sun/java2d/loops/XORComposite
+java/awt/Composite
+sun/font/X11TextRenderer
+sun/java2d/loops/GraphicsPrimitive
+sun/java2d/x11/X11PMBlitLoops
+sun/java2d/loops/Blit
+sun/java2d/loops/GraphicsPrimitiveMgr
+sun/java2d/loops/CompositeType
+sun/java2d/SunGraphics2D
+sun/awt/ConstrainableGraphics
+java/awt/Graphics2D
+java/awt/Graphics
+java/awt/Color
+java/awt/Paint
+java/awt/AlphaComposite
+sun/java2d/loops/BlitBg
+sun/java2d/loops/ScaledBlit
+sun/java2d/loops/FillRect
+sun/java2d/loops/FillSpans
+sun/java2d/loops/DrawLine
+sun/java2d/loops/DrawRect
+sun/java2d/loops/DrawPolygons
+sun/java2d/loops/DrawPath
+sun/java2d/loops/FillPath
+sun/java2d/loops/MaskBlit
+sun/java2d/loops/MaskFill
+sun/java2d/loops/DrawGlyphList
+sun/java2d/loops/DrawGlyphListAA
+sun/java2d/loops/DrawGlyphListLCD
+sun/java2d/loops/TransformHelper
+java/awt/BasicStroke
+java/awt/Stroke
+sun/misc/PerformanceLogger
+sun/misc/PerformanceLogger$TimeData
+sun/java2d/pipe/ValidatePipe
+sun/java2d/loops/CustomComponent
+sun/java2d/loops/GraphicsPrimitiveProxy
+sun/java2d/loops/GeneralRenderer
+sun/java2d/loops/GraphicsPrimitiveMgr$1
+sun/java2d/loops/GraphicsPrimitiveMgr$2
+sun/java2d/x11/X11PMBlitLoops$DelegateBlitLoop
+sun/java2d/x11/X11PMBlitBgLoops
+sun/java2d/x11/X11SurfaceData$LazyPipe
+sun/awt/X11GraphicsConfig$X11GCDisposerRecord
+sun/java2d/DisposerRecord
+java/awt/BorderLayout
+java/awt/LayoutManager2
+java/awt/Rectangle
+java/awt/Toolkit$2
+sun/awt/X11/XToolkit
+sun/awt/X11/XConstants
+sun/awt/UNIXToolkit
+java/util/TreeMap
+java/util/NavigableMap
+java/util/SortedMap
+sun/awt/X11/XlibWrapper
+sun/awt/X11/XUtilConstants
+sun/awt/X11/XProtocolConstants
+sun/awt/X11/XCursorFontConstants
+sun/awt/X11/XlibWrapper$1
+sun/awt/X11/XToolkit$4
+sun/awt/X11/XModifierKeymap
+sun/awt/X11/XWrapperBase
+sun/awt/X11/Native
+sun/awt/X11/Native$1
+java/awt/EventQueue
+sun/awt/X11/XToolkit$7
+java/util/EmptyStackException
+java/lang/reflect/InvocationTargetException
+java/awt/EventDispatchThread
+java/awt/event/PaintEvent
+java/awt/event/MouseEvent
+sun/awt/PeerEvent
+java/awt/event/InvocationEvent
+java/awt/ActiveEvent
+java/awt/EventQueueItem
+sun/awt/X11/XToolkit$1
+sun/awt/X11/XToolkit$XErrorHandler
+sun/awt/X11/XToolkit$5
+sun/awt/X11/XEventDispatcher
+sun/awt/SunToolkit$ModalityListenerList
+sun/awt/ModalityListener
+sun/awt/SunToolkit$1
+java/util/MissingResourceException
+java/awt/Queue
+sun/awt/PostEventQueue
+java/util/LinkedList
+java/util/Deque
+java/util/Queue
+java/util/AbstractSequentialList
+java/util/LinkedList$Entry
+sun/awt/X11/AwtScreenData
+sun/awt/X11/XWM
+sun/awt/X11/MWMConstants
+sun/awt/X11/XAtom
+java/awt/Insets
+sun/awt/X11/XWM$1
+sun/awt/X11/XWM$2
+sun/awt/X11/XSetWindowAttributes
+sun/awt/X11/XErrorEvent
+sun/awt/X11/XNETProtocol
+sun/awt/X11/XStateProtocol
+sun/awt/X11/XLayerProtocol
+sun/awt/X11/XProtocol
+sun/awt/X11/XProtocol$1
+sun/awt/X11/WindowPropertyGetter
+sun/awt/X11/UnsafeXDisposerRecord
+sun/awt/X11/XPropertyCache
+sun/awt/X11/XWINProtocol
+sun/awt/X11/XAtomList
+sun/awt/X11/XToolkit$3
+sun/awt/X11/XAnyEvent
+sun/awt/X11/IXAnyEvent
+java/awt/Window$WindowDisposerRecord
+java/awt/KeyboardFocusManager
+java/awt/KeyEventDispatcher
+java/awt/KeyEventPostProcessor
+java/awt/AWTKeyStroke
+java/awt/AWTKeyStroke$1
+java/awt/DefaultKeyboardFocusManager
+java/awt/DefaultFocusTraversalPolicy
+java/awt/ContainerOrderFocusTraversalPolicy
+java/awt/FocusTraversalPolicy
+java/awt/MutableBoolean
+java/util/Collections$UnmodifiableSet
+sun/awt/HeadlessToolkit
+sun/awt/X11/XKeyboardFocusManagerPeer
+java/awt/peer/KeyboardFocusManagerPeer
+sun/awt/X11/XKeyboardFocusManagerPeer$1
+sun/awt/X11/XFramePeer
+java/awt/peer/FramePeer
+java/awt/peer/WindowPeer
+java/awt/peer/ContainerPeer
+java/awt/peer/ComponentPeer
+sun/awt/X11/XDecoratedPeer
+sun/awt/X11/XWindowPeer
+sun/awt/X11/XPanelPeer
+java/awt/peer/PanelPeer
+sun/awt/X11/XCanvasPeer
+java/awt/peer/CanvasPeer
+sun/awt/X11/XComponentPeer
+java/awt/dnd/peer/DropTargetPeer
+sun/awt/X11/XWindow
+sun/awt/X11ComponentPeer
+sun/awt/X11/XBaseWindow
+sun/awt/X11/XCreateWindowParams
+java/lang/Long$LongCache
+sun/awt/X11/XBaseWindow$InitialiseState
+sun/awt/X11/XBaseWindow$StateLock
+sun/awt/X11/AwtGraphicsConfigData
+sun/awt/X11/XVisualInfo
+java/awt/SystemColor
+sun/awt/X11/MotifColorUtilities
+java/lang/StrictMath
+sun/awt/X11/XRepaintArea
+sun/awt/RepaintArea
+sun/awt/X11/XWindowAttributesData
+java/util/concurrent/locks/LockSupport
+sun/awt/X11/WindowDimensions
+java/awt/Point
+java/util/TreeMap$Entry
+sun/nio/cs/UTF_8
+sun/nio/cs/Unicode
+sun/nio/cs/UTF_8$Encoder
+sun/nio/cs/UTF_8$Decoder
+sun/nio/cs/Surrogate$Generator
+sun/awt/X11/XPropertyEvent
+sun/awt/X11/XDropTargetEventProcessor
+sun/awt/X11/XDragSourceContextPeer
+sun/awt/X11/XDragSourceProtocolListener
+sun/awt/dnd/SunDragSourceContextPeer
+java/awt/dnd/peer/DragSourceContextPeer
+sun/awt/X11/XAwtState
+sun/awt/X11/XBaseWindow$1
+sun/awt/X11/XRootWindow
+sun/nio/cs/ISO_8859_1
+sun/nio/cs/ISO_8859_1$Encoder
+sun/nio/cs/ISO_8859_1$Decoder
+sun/java2d/x11/X11SurfaceData$X11WindowSurfaceData
+sun/java2d/loops/RenderLoops
+sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
+sun/java2d/DefaultDisposerRecord
+sun/java2d/x11/X11Renderer
+sun/awt/X11/XGlobalCursorManager
+sun/awt/GlobalCursorManager
+sun/awt/X11/XToolkit$6
+java/awt/Cursor$CursorDisposer
+java/awt/AWTException
+java/awt/HeadlessException
+java/lang/UnsupportedOperationException
+sun/reflect/UnsafeLongFieldAccessorImpl
+sun/reflect/UnsafeIntegerFieldAccessorImpl
+sun/awt/X11/XClientMessageEvent
+sun/awt/X11/XIconInfo
+sun/awt/X11/XAWTIcon32_java_icon16_png
+sun/awt/X11/XAWTIcon32_java_icon24_png
+sun/awt/X11/XAWTIcon32_java_icon32_png
+sun/awt/X11/XAWTIcon32_java_icon48_png
+sun/awt/X11/XSizeHints
+sun/awt/X11/XContentWindow
+sun/awt/X11/XFocusProxyWindow
+sun/awt/X11/XWMHints
+java/util/LinkedList$ListItr
+java/util/ListIterator
+sun/awt/SunToolkit$2
+java/awt/image/BufferStrategy
+java/awt/dnd/DropTarget
+java/awt/dnd/DropTargetListener
+java/awt/event/ComponentListener
+java/awt/event/FocusListener
+java/awt/event/HierarchyListener
+java/awt/event/HierarchyBoundsListener
+java/awt/event/KeyListener
+java/awt/event/MouseListener
+java/awt/event/MouseMotionListener
+java/awt/event/MouseWheelListener
+java/awt/event/InputMethodListener
+java/awt/Component$NativeInLightFixer
+java/awt/event/ContainerListener
+javax/accessibility/AccessibleContext
+sun/reflect/UnsafeObjectFieldAccessorImpl
+java/awt/peer/LightweightPeer
+sun/awt/X11/XLabelPeer
+java/awt/peer/LabelPeer
+sun/awt/X11/XMapEvent
+sun/awt/X11/XQueryTree
+sun/awt/X11/XConfigureEvent
+sun/awt/X11/PropMwmHints
+sun/awt/GlobalCursorManager$NativeUpdater
+javax/swing/JFrame
+javax/swing/WindowConstants
+javax/swing/RootPaneContainer
+javax/swing/TransferHandler$HasGetTransferHandler
+javax/swing/JLabel
+javax/swing/SwingConstants
+javax/swing/JComponent
+javax/swing/JComponent$1
+javax/swing/SwingUtilities
+javax/swing/JRootPane
+sun/security/action/GetBooleanAction
+javax/swing/event/EventListenerList
+javax/swing/JPanel
+java/awt/FlowLayout
+javax/swing/UIManager
+javax/swing/UIManager$LookAndFeelInfo
+sun/swing/SwingUtilities2
+sun/swing/SwingUtilities2$LSBCacheEntry
+javax/swing/UIManager$LAFState
+javax/swing/UIDefaults
+javax/swing/MultiUIDefaults
+javax/swing/UIManager$1
+javax/swing/plaf/metal/MetalLookAndFeel
+javax/swing/plaf/basic/BasicLookAndFeel
+javax/swing/LookAndFeel
+sun/swing/DefaultLookup
+javax/swing/plaf/metal/OceanTheme
+javax/swing/plaf/metal/DefaultMetalTheme
+javax/swing/plaf/metal/MetalTheme
+javax/swing/plaf/ColorUIResource
+javax/swing/plaf/UIResource
+sun/swing/PrintColorUIResource
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate
+javax/swing/plaf/FontUIResource
+sun/swing/SwingLazyValue
+javax/swing/UIDefaults$LazyValue
+javax/swing/UIDefaults$ActiveValue
+javax/swing/plaf/InsetsUIResource
+sun/swing/SwingUtilities2$2
+javax/swing/plaf/basic/BasicLookAndFeel$2
+javax/swing/plaf/DimensionUIResource
+javax/swing/UIDefaults$LazyInputMap
+java/lang/Character$CharacterCache
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
+javax/swing/plaf/metal/MetalLookAndFeel$FontActiveValue
+java/awt/print/PrinterJob
+sun/swing/SwingUtilities2$AATextInfo
+sun/awt/X11/XAWTXSettings
+sun/awt/X11/XMSelectionListener
+sun/awt/XSettings
+sun/awt/X11/XMSelection
+sun/awt/X11/XMSelection$1
+javax/swing/plaf/metal/MetalLookAndFeel$AATextListener
+java/beans/PropertyChangeListener
+java/beans/PropertyChangeListenerProxy
+java/util/EventListenerProxy
+sun/awt/EventListenerAggregate
+javax/swing/UIDefaults$ProxyLazyValue
+javax/swing/plaf/metal/OceanTheme$1
+javax/swing/plaf/metal/OceanTheme$2
+javax/swing/plaf/metal/OceanTheme$3
+javax/swing/plaf/metal/OceanTheme$4
+javax/swing/plaf/metal/OceanTheme$5
+javax/swing/plaf/metal/OceanTheme$6
+javax/swing/RepaintManager
+javax/swing/RepaintManager$DisplayChangedHandler
+javax/swing/SwingPaintEventDispatcher
+sun/awt/PaintEventDispatcher
+javax/swing/UIManager$2
+javax/swing/UIManager$3
+java/awt/PopupMenu
+java/awt/Menu
+java/awt/MenuItem
+java/awt/MenuComponent
+java/io/ObjectOutputStream
+java/io/ObjectOutput
+java/io/DataOutput
+java/io/ObjectStreamConstants
+java/io/PrintWriter
+java/io/ObjectInputStream
+java/io/ObjectInput
+java/awt/Event
+java/awt/im/InputContext
+java/awt/event/MouseWheelEvent
+java/awt/BufferCapabilities
+sun/awt/CausedFocusEvent$Cause
+java/awt/PointerInfo
+java/awt/Component$BaselineResizeBehavior
+java/awt/FontMetrics
+java/awt/Image
+java/awt/image/ImageProducer
+java/awt/image/VolatileImage
+java/awt/im/InputMethodRequests
+java/awt/event/FocusEvent
+java/awt/event/InputMethodEvent
+java/awt/event/HierarchyEvent
+javax/accessibility/AccessibleStateSet
+com/sun/swing/internal/plaf/metal/resources/metal
+sun/util/ResourceBundleEnumeration
+com/sun/swing/internal/plaf/basic/resources/basic
+javax/swing/plaf/basic/BasicPanelUI
+javax/swing/plaf/PanelUI
+javax/swing/plaf/ComponentUI
+sun/reflect/misc/MethodUtil
+sun/reflect/misc/MethodUtil$1
+java/util/jar/JarFile
+java/util/zip/ZipFile
+java/util/zip/ZipConstants
+java/util/jar/JavaUtilJarAccessImpl
+sun/misc/JavaUtilJarAccess
+sun/misc/JarIndex
+java/util/zip/ZipEntry
+java/util/jar/JarFile$JarFileEntry
+java/util/jar/JarEntry
+sun/misc/URLClassPath$JarLoader$2
+sun/net/www/protocol/jar/JarURLConnection
+java/net/JarURLConnection
+sun/net/www/protocol/jar/JarFileFactory
+sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
+java/net/HttpURLConnection
+sun/net/www/protocol/jar/URLJarFile
+sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry
+sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream
+java/util/zip/ZipFile$ZipFileInputStream
+java/security/AllPermissionCollection
+java/lang/IllegalAccessException
+javax/swing/JPasswordField
+javax/swing/JTextField
+javax/swing/text/JTextComponent
+javax/swing/Scrollable
+javax/swing/JLayeredPane
+javax/swing/JRootPane$1
+javax/swing/ArrayTable
+javax/swing/JInternalFrame
+javax/swing/JRootPane$RootLayout
+javax/swing/BufferStrategyPaintManager
+javax/swing/RepaintManager$PaintManager
+javax/swing/plaf/metal/MetalRootPaneUI
+javax/swing/plaf/basic/BasicRootPaneUI
+javax/swing/plaf/RootPaneUI
+javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap
+javax/swing/plaf/ComponentInputMapUIResource
+javax/swing/ComponentInputMap
+javax/swing/InputMap
+javax/swing/plaf/InputMapUIResource
+javax/swing/KeyStroke
+java/awt/VKCollection
+sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl
+javax/swing/plaf/basic/LazyActionMap
+javax/swing/plaf/ActionMapUIResource
+javax/swing/ActionMap
+javax/swing/LayoutFocusTraversalPolicy
+javax/swing/SortingFocusTraversalPolicy
+javax/swing/InternalFrameFocusTraversalPolicy
+javax/swing/SwingContainerOrderFocusTraversalPolicy
+javax/swing/SwingDefaultFocusTraversalPolicy
+javax/swing/LayoutComparator
+javax/swing/plaf/metal/MetalLabelUI
+javax/swing/plaf/basic/BasicLabelUI
+javax/swing/plaf/LabelUI
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
+javax/swing/plaf/basic/BasicHTML
+javax/swing/SystemEventQueueUtilities
+javax/swing/SystemEventQueueUtilities$SystemEventQueue
+sun/awt/NullComponentPeer
+java/awt/event/WindowEvent
+java/awt/EventQueue$1
+java/awt/EventDispatchThread$1
+java/awt/Conditional
+java/awt/EventDispatchThread$HierarchyEventFilter
+java/awt/EventFilter$FilterAction
+sun/awt/dnd/SunDropTargetEvent
+java/awt/event/ActionEvent
+java/util/jar/Manifest
+java/io/ByteArrayInputStream
+java/util/jar/Attributes
+java/util/jar/Manifest$FastInputStream
+java/util/jar/Attributes$Name
+sun/misc/ASCIICaseInsensitiveComparator
+java/util/jar/JarVerifier
+java/io/ByteArrayOutputStream
+sun/misc/ExtensionDependency
+java/lang/Package
+sun/security/util/ManifestEntryVerifier
+sun/security/provider/Sun
+java/security/Provider
+java/security/Provider$ServiceKey
+java/security/Provider$EngineDescription
+sun/security/provider/Sun$1
+java/security/Security
+java/security/Security$1
+sun/misc/FloatingDecimal
+sun/misc/FloatingDecimal$1
+sun/security/provider/NativePRNG
+java/security/SecureRandomSpi
+sun/security/provider/NativePRNG$1
+sun/security/provider/NativePRNG$RandomIO
+sun/misc/BASE64Decoder
+sun/misc/CharacterDecoder
+sun/security/util/SignatureFileVerifier
+java/awt/event/KeyAdapter
+java/lang/NumberFormatException
+java/lang/IllegalArgumentException
+java/io/FileWriter
+java/net/Authenticator
+java/net/MalformedURLException
+javax/swing/text/Element
+javax/swing/text/Document
+javax/swing/text/PlainDocument
+javax/swing/text/AbstractDocument
+javax/swing/text/GapContent
+javax/swing/text/AbstractDocument$Content
+javax/swing/text/GapVector
+javax/swing/text/GapContent$MarkVector
+javax/swing/text/GapContent$MarkData
+javax/swing/text/StyleContext
+javax/swing/text/AbstractDocument$AttributeContext
+javax/swing/text/StyleConstants
+javax/swing/text/StyleConstants$CharacterConstants
+javax/swing/text/AttributeSet$CharacterAttribute
+javax/swing/text/StyleConstants$FontConstants
+javax/swing/text/AttributeSet$FontAttribute
+javax/swing/text/StyleConstants$ColorConstants
+javax/swing/text/AttributeSet$ColorAttribute
+javax/swing/text/StyleConstants$ParagraphConstants
+javax/swing/text/AttributeSet$ParagraphAttribute
+javax/swing/text/StyleContext$FontKey
+javax/swing/text/SimpleAttributeSet
+javax/swing/text/MutableAttributeSet
+javax/swing/text/AttributeSet
+javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
+javax/swing/text/StyleContext$NamedStyle
+javax/swing/text/Style
+javax/swing/text/SimpleAttributeSet$1
+javax/swing/text/StyleContext$SmallAttributeSet
+javax/swing/text/AbstractDocument$BidiRootElement
+javax/swing/text/AbstractDocument$BranchElement
+javax/swing/text/AbstractDocument$AbstractElement
+javax/swing/tree/TreeNode
+javax/swing/text/AbstractDocument$1
+javax/swing/text/AbstractDocument$BidiElement
+javax/swing/text/AbstractDocument$LeafElement
+javax/swing/text/GapContent$StickyPosition
+javax/swing/text/Position
+javax/swing/text/StyleContext$KeyEnumeration
+javax/swing/text/GapContent$InsertUndo
+javax/swing/undo/AbstractUndoableEdit
+javax/swing/undo/UndoableEdit
+javax/swing/text/AbstractDocument$DefaultDocumentEvent
+javax/swing/event/DocumentEvent
+javax/swing/undo/CompoundEdit
+javax/swing/event/DocumentEvent$EventType
+javax/swing/text/Segment
+java/text/CharacterIterator
+javax/swing/text/Utilities
+javax/swing/text/SegmentCache
+javax/swing/text/SegmentCache$CachedSegment
+javax/swing/event/UndoableEditEvent
+javax/swing/text/AbstractDocument$ElementEdit
+javax/swing/event/DocumentEvent$ElementChange
+java/net/Socket
+java/net/InetAddress
+java/net/InetAddress$Cache
+java/net/InetAddress$Cache$Type
+java/net/InetAddressImplFactory
+java/net/Inet4AddressImpl
+java/net/InetAddressImpl
+java/net/InetAddress$1
+sun/net/spi/nameservice/NameService
+sun/net/util/IPAddressUtil
+java/util/RandomAccessSubList
+java/util/SubList
+java/util/SubList$1
+java/util/AbstractList$ListItr
+java/net/Inet4Address
+java/net/InetSocketAddress
+java/net/SocketAddress
+java/net/SocksSocketImpl
+java/net/SocksConsts
+java/net/PlainSocketImpl
+java/net/SocketImpl
+java/net/SocketOptions
+java/net/SocketException
+java/net/SocksSocketImpl$5
+java/net/ProxySelector
+sun/net/spi/DefaultProxySelector
+sun/net/spi/DefaultProxySelector$1
+sun/net/NetProperties
+sun/net/NetProperties$1
+sun/net/spi/DefaultProxySelector$NonProxyInfo
+java/net/Inet6Address
+java/net/URI
+java/net/URI$Parser
+java/net/Proxy
+java/net/Proxy$Type
+java/net/ConnectException
+javax/swing/JMenu
+javax/swing/MenuElement
+javax/swing/JMenuItem
+javax/swing/AbstractButton
+java/awt/ItemSelectable
+javax/swing/event/MenuListener
+javax/swing/JCheckBoxMenuItem
+javax/swing/Icon
+javax/swing/JButton
+java/awt/event/WindowListener
+java/net/URLClassLoader$2
+javax/swing/ImageIcon
+javax/swing/ImageIcon$1
+java/awt/MediaTracker
+sun/misc/SoftCache$ValueCell
+sun/awt/image/URLImageSource
+sun/awt/image/InputStreamImageSource
+sun/awt/image/ImageFetchable
+sun/awt/image/ToolkitImage
+java/awt/Image$1
+sun/awt/image/SurfaceManager$ImageAccessor
+sun/awt/image/SurfaceManager
+sun/awt/image/NativeLibLoader
+java/awt/ImageMediaEntry
+java/awt/MediaEntry
+sun/awt/image/ImageRepresentation
+java/awt/image/ImageConsumer
+sun/awt/image/ImageWatched
+sun/awt/image/ImageWatched$Link
+sun/awt/image/ImageWatched$WeakLink
+sun/awt/image/ImageConsumerQueue
+sun/awt/image/ImageFetcher
+sun/awt/image/FetcherInfo
+sun/awt/image/ImageFetcher$1
+sun/awt/image/GifImageDecoder
+sun/awt/image/ImageDecoder
+sun/awt/image/GifFrame
+java/awt/image/Raster
+java/awt/image/DataBufferByte
+java/awt/image/DataBuffer
+java/awt/image/PixelInterleavedSampleModel
+java/awt/image/ComponentSampleModel
+java/awt/image/SampleModel
+sun/awt/image/ByteInterleavedRaster
+sun/awt/image/ByteComponentRaster
+sun/awt/image/SunWritableRaster
+java/awt/image/WritableRaster
+java/awt/image/BufferedImage
+java/awt/image/WritableRenderedImage
+java/awt/image/RenderedImage
+sun/awt/image/IntegerComponentRaster
+sun/awt/image/BytePackedRaster
+java/awt/Canvas
+sun/font/FontDesignMetrics
+sun/font/FontStrikeDesc
+sun/font/CompositeStrike
+sun/font/FontStrikeDisposer
+sun/font/StrikeCache$SoftDisposerRef
+sun/font/StrikeCache$DisposableStrike
+sun/font/TrueTypeFont$TTDisposerRecord
+sun/font/TrueTypeFont$1
+java/io/RandomAccessFile
+java/nio/ByteBufferAsIntBufferB
+java/nio/IntBuffer
+sun/font/TrueTypeFont$DirectoryEntry
+java/nio/ByteBufferAsShortBufferB
+java/nio/ShortBuffer
+sun/nio/cs/UTF_16
+sun/nio/cs/UTF_16$Decoder
+sun/nio/cs/UnicodeDecoder
+sun/font/FileFontStrike
+sun/font/FileFont$FileFontDisposer
+sun/font/TrueTypeGlyphMapper
+sun/font/CMap
+sun/font/CMap$NullCMapClass
+sun/font/CMap$CMapFormat4
+java/nio/ByteBufferAsCharBufferB
+sun/font/FontDesignMetrics$KeyReference
+sun/awt/image/PNGImageDecoder
+sun/awt/image/PNGFilterInputStream
+java/util/zip/InflaterInputStream
+java/util/zip/Inflater
+sun/awt/EventQueueItem
+sun/awt/SunToolkit$3
+sun/awt/X11/XExposeEvent
+sun/awt/X11/ComponentAccessor
+sun/awt/X11/ComponentAccessor$1
+sun/reflect/UnsafeBooleanFieldAccessorImpl
+sun/awt/event/IgnorePaintEvent
+java/awt/image/DataBufferInt
+java/awt/image/SinglePixelPackedSampleModel
+sun/awt/image/IntegerInterleavedRaster
+sun/java2d/x11/X11RemoteOffScreenImage
+sun/awt/image/RemoteOffScreenImage
+sun/awt/image/OffScreenImage
+sun/java2d/x11/X11RemoteOffScreenImage$X11RemoteSurfaceManager
+sun/awt/image/OffScreenSurfaceManager
+sun/awt/image/CachingSurfaceManager
+sun/awt/image/RasterListener
+sun/awt/image/BufImgSurfaceData
+sun/java2d/opengl/GLXGraphicsConfig
+sun/java2d/opengl/OGLGraphicsConfig
+sun/java2d/x11/X11SurfaceData$X11PixmapSurfaceData
+sun/awt/image/WritableRasterNative
+sun/awt/image/DataBufferNative
+sun/java2d/SurfaceManagerFactory
+sun/java2d/x11/X11CachingSurfaceManager
+sun/java2d/opengl/GLXSurfaceData
+sun/java2d/opengl/OGLSurfaceData
+sun/font/CompositeGlyphMapper
+sun/java2d/loops/FontInfo
+java/util/Date
+sun/util/calendar/CalendarSystem
+sun/util/calendar/Gregorian
+sun/util/calendar/BaseCalendar
+sun/util/calendar/AbstractCalendar
+java/util/TimeZone
+java/lang/InheritableThreadLocal
+sun/util/calendar/ZoneInfo
+sun/util/calendar/ZoneInfoFile
+sun/util/calendar/ZoneInfoFile$1
+java/util/TimeZone$1
+sun/util/calendar/Gregorian$Date
+sun/util/calendar/BaseCalendar$Date
+sun/util/calendar/CalendarDate
+sun/util/calendar/CalendarUtils
+java/util/TimeZone$DisplayNames
+sun/util/TimeZoneNameUtility
+sun/util/resources/TimeZoneNames
+sun/util/resources/TimeZoneNamesBundle
+sun/util/resources/TimeZoneNames_en
+java/util/spi/TimeZoneNameProvider
+java/lang/ProcessBuilder
+java/lang/ProcessImpl
+java/lang/UNIXProcess
+java/lang/Process
+java/lang/UNIXProcess$Gate
+java/lang/UNIXProcess$1
+java/lang/UNIXProcess$1$1
+java/lang/UNIXProcess$1$1$1
+java/net/ServerSocket
+java/util/Random
+java/util/concurrent/atomic/AtomicLong
+java/lang/InternalError
+java/io/StringReader
+java/lang/SecurityException
+java/io/FilterReader
+java/lang/reflect/Proxy
+java/lang/reflect/InvocationHandler
+java/lang/NoSuchFieldException
+java/lang/InstantiationException
+java/lang/ArrayIndexOutOfBoundsException
+java/lang/IndexOutOfBoundsException
+javax/swing/JDialog
+sun/awt/X11/XClipboard
+sun/awt/datatransfer/SunClipboard
+java/awt/datatransfer/Clipboard
+java/awt/datatransfer/SystemFlavorMap
+java/awt/datatransfer/FlavorMap
+java/awt/datatransfer/FlavorTable
+java/awt/datatransfer/SystemFlavorMap$1
+sun/net/ProgressMonitor
+sun/net/DefaultProgressMeteringPolicy
+sun/net/ProgressMeteringPolicy
+java/awt/datatransfer/SystemFlavorMap$2
+java/awt/datatransfer/MimeType
+java/io/Externalizable
+java/awt/datatransfer/MimeTypeParameterList
+sun/awt/datatransfer/DataTransferer
+java/util/Collections$SynchronizedSet
+java/util/Collections$SynchronizedCollection
+java/awt/datatransfer/DataFlavor
+java/awt/datatransfer/DataFlavor$1
+sun/awt/datatransfer/DataTransferer$CharsetComparator
+sun/awt/datatransfer/DataTransferer$IndexedComparator
+sun/nio/cs/UTF_16LE
+sun/nio/cs/UTF_16BE
+sun/awt/datatransfer/DataTransferer$DataFlavorComparator
+java/rmi/Remote
+sun/awt/datatransfer/DataTransferer$1
+sun/awt/X11/XDataTransferer
+sun/awt/datatransfer/ToolkitThreadBlockedHandler
+javax/imageio/ImageTypeSpecifier
+sun/awt/X11/XSelection
+sun/security/action/GetIntegerAction
+sun/awt/X11/XSelection$IncrementalTransferHandler
+sun/awt/X11/XSelection$SelectionEventHandler
+java/awt/datatransfer/Transferable
+java/io/EOFException
+java/util/Vector$1
+java/util/zip/ZipFile$1
+java/util/zip/ZipFile$2
+java/util/jar/JarFile$1
+java/util/PropertyResourceBundle
+java/util/ResourceBundle$Control$1
+java/util/Hashtable$EntrySet
+java/lang/IllegalAccessError
+java/text/MessageFormat
+java/text/MessageFormat$Field
+java/text/Format$Field
+java/lang/CloneNotSupportedException
+sun/reflect/MethodAccessorGenerator
+sun/reflect/AccessorGenerator
+sun/reflect/ClassFileConstants
+java/lang/Void
+sun/reflect/ByteVectorFactory
+sun/reflect/ByteVectorImpl
+sun/reflect/ByteVector
+sun/reflect/ClassFileAssembler
+sun/reflect/UTF8
+sun/reflect/Label
+sun/reflect/Label$PatchInfo
+sun/reflect/MethodAccessorGenerator$1
+sun/reflect/ClassDefiner
+sun/reflect/ClassDefiner$1
+sun/reflect/BootstrapConstructorAccessorImpl
+java/awt/event/ActionListener
+javax/swing/Timer
+javax/swing/Timer$DoPostEvent
+javax/swing/TimerQueue
+javax/swing/TimerQueue$1
+javax/swing/ToolTipManager
+java/awt/event/MouseAdapter
+javax/swing/ToolTipManager$insideTimerAction
+javax/swing/ToolTipManager$outsideTimerAction
+javax/swing/ToolTipManager$stillInsideTimerAction
+javax/swing/ToolTipManager$Actions
+sun/swing/UIAction
+javax/swing/Action
+javax/swing/ToolTipManager$MoveBeforeEnterListener
+java/awt/event/MouseMotionAdapter
+java/util/Hashtable$ValueCollection
+javax/swing/event/CaretListener
+javax/swing/JToolBar
+javax/swing/JSplitPane
+javax/swing/border/Border
+javax/swing/JToggleButton
+javax/swing/border/EmptyBorder
+javax/swing/border/AbstractBorder
+javax/swing/DefaultButtonModel
+javax/swing/ButtonModel
+javax/swing/AbstractButton$Handler
+javax/swing/event/ChangeListener
+java/awt/event/ItemListener
+javax/swing/plaf/metal/MetalButtonUI
+javax/swing/plaf/basic/BasicButtonUI
+javax/swing/plaf/ButtonUI
+javax/swing/plaf/metal/MetalBorders
+javax/swing/plaf/BorderUIResource$CompoundBorderUIResource
+javax/swing/border/CompoundBorder
+javax/swing/plaf/metal/MetalBorders$ButtonBorder
+javax/swing/plaf/basic/BasicBorders$MarginBorder
+javax/swing/plaf/basic/BasicButtonListener
+java/awt/AWTEventMulticaster
+java/awt/event/WindowFocusListener
+java/awt/event/WindowStateListener
+java/awt/event/AdjustmentListener
+java/awt/event/TextListener
+javax/swing/event/AncestorListener
+java/beans/VetoableChangeListener
+javax/swing/ButtonGroup
+javax/swing/JToggleButton$ToggleButtonModel
+javax/swing/plaf/metal/MetalToggleButtonUI
+javax/swing/plaf/basic/BasicToggleButtonUI
+javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder
+java/awt/CardLayout
+javax/swing/Box
+javax/swing/plaf/metal/MetalBorders$TextFieldBorder
+javax/swing/plaf/metal/MetalBorders$Flush3DBorder
+javax/swing/BoxLayout
+javax/swing/JMenuBar
+javax/swing/DefaultSingleSelectionModel
+javax/swing/SingleSelectionModel
+javax/swing/plaf/basic/BasicMenuBarUI
+javax/swing/plaf/MenuBarUI
+javax/swing/plaf/basic/DefaultMenuLayout
+javax/swing/plaf/metal/MetalBorders$MenuBarBorder
+javax/swing/plaf/basic/BasicMenuBarUI$Handler
+javax/swing/KeyboardManager
+javax/swing/event/MenuEvent
+javax/swing/JMenu$MenuChangeListener
+javax/swing/JMenuItem$MenuItemFocusListener
+javax/swing/plaf/basic/BasicMenuUI
+javax/swing/plaf/basic/BasicMenuItemUI
+javax/swing/plaf/MenuItemUI
+javax/swing/plaf/metal/MetalBorders$MenuItemBorder
+javax/swing/plaf/metal/MetalIconFactory
+javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon
+javax/swing/plaf/basic/BasicMenuUI$Handler
+javax/swing/event/MenuKeyListener
+javax/swing/plaf/basic/BasicMenuItemUI$Handler
+javax/swing/event/MenuDragMouseListener
+javax/swing/event/MouseInputListener
+javax/swing/event/ChangeEvent
+java/awt/event/ContainerEvent
+javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon
+javax/swing/JPopupMenu
+javax/swing/plaf/basic/BasicPopupMenuUI
+javax/swing/plaf/PopupMenuUI
+javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper
+java/awt/event/AWTEventListenerProxy
+java/awt/Toolkit$SelectiveAWTEventListener
+java/awt/Toolkit$ToolkitEventMulticaster
+javax/swing/plaf/basic/BasicLookAndFeel$1
+javax/swing/plaf/metal/MetalBorders$PopupMenuBorder
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener
+javax/swing/event/PopupMenuListener
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener
+javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber
+javax/swing/MenuSelectionManager
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1
+java/awt/event/FocusAdapter
+javax/swing/JMenu$WinListener
+java/awt/event/WindowAdapter
+javax/swing/JPopupMenu$Separator
+javax/swing/JSeparator
+javax/swing/plaf/metal/MetalPopupMenuSeparatorUI
+javax/swing/plaf/metal/MetalSeparatorUI
+javax/swing/plaf/basic/BasicSeparatorUI
+javax/swing/plaf/SeparatorUI
+javax/swing/JComboBox
+javax/swing/event/ListDataListener
+javax/swing/event/CaretEvent
+javax/swing/text/TabExpander
+javax/swing/JScrollBar
+java/awt/Adjustable
+javax/swing/event/MouseInputAdapter
+javax/swing/JScrollBar$ModelListener
+javax/swing/DefaultBoundedRangeModel
+javax/swing/BoundedRangeModel
+javax/swing/plaf/metal/MetalScrollBarUI
+javax/swing/plaf/basic/BasicScrollBarUI
+javax/swing/plaf/ScrollBarUI
+javax/swing/plaf/metal/MetalBumps
+javax/swing/plaf/metal/MetalScrollButton
+javax/swing/plaf/basic/BasicArrowButton
+javax/swing/plaf/basic/BasicScrollBarUI$TrackListener
+javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener
+javax/swing/plaf/basic/BasicScrollBarUI$ModelListener
+javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener
+javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicScrollBarUI$Handler
+javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener
+javax/swing/CellRendererPane
+java/util/HashMap$EntryIterator
+javax/swing/border/MatteBorder
+sun/font/StandardGlyphVector
+java/awt/font/GlyphVector
+sun/font/StandardGlyphVector$GlyphStrike
+sun/font/CoreMetrics
+sun/font/FontLineMetrics
+java/awt/font/LineMetrics
+javax/swing/ComboBoxModel
+javax/swing/ListModel
+javax/swing/ListCellRenderer
+javax/swing/DefaultComboBoxModel
+javax/swing/MutableComboBoxModel
+javax/swing/AbstractListModel
+javax/swing/JComboBox$1
+javax/swing/AncestorNotifier
+javax/swing/plaf/metal/MetalComboBoxUI
+javax/swing/plaf/basic/BasicComboBoxUI
+javax/swing/plaf/ComboBoxUI
+javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager
+javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager
+javax/swing/plaf/basic/BasicComboPopup
+javax/swing/plaf/basic/ComboPopup
+javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass
+javax/swing/border/LineBorder
+javax/swing/plaf/basic/BasicComboPopup$1
+javax/swing/JList
+javax/swing/DropMode
+javax/swing/DefaultListSelectionModel
+javax/swing/ListSelectionModel
+javax/swing/plaf/basic/BasicListUI
+javax/swing/plaf/ListUI
+javax/swing/plaf/basic/BasicListUI$ListTransferHandler
+javax/swing/TransferHandler
+javax/swing/TransferHandler$TransferAction
+javax/swing/DefaultListCellRenderer$UIResource
+javax/swing/DefaultListCellRenderer
+javax/swing/TransferHandler$SwingDropTarget
+java/awt/dnd/DropTargetContext
+javax/swing/TransferHandler$DropHandler
+javax/swing/TransferHandler$TransferSupport
+javax/swing/plaf/basic/BasicListUI$Handler
+javax/swing/event/ListSelectionListener
+javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag
+javax/swing/plaf/basic/BasicComboPopup$Handler
+javax/swing/JScrollPane
+javax/swing/ScrollPaneConstants
+javax/swing/ScrollPaneLayout$UIResource
+javax/swing/ScrollPaneLayout
+javax/swing/JViewport
+javax/swing/ViewportLayout
+javax/swing/plaf/basic/BasicViewportUI
+javax/swing/plaf/ViewportUI
+javax/swing/JScrollPane$ScrollBar
+javax/swing/JViewport$ViewListener
+java/awt/event/ComponentAdapter
+javax/swing/plaf/metal/MetalScrollPaneUI
+javax/swing/plaf/basic/BasicScrollPaneUI
+javax/swing/plaf/ScrollPaneUI
+javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder
+javax/swing/plaf/basic/BasicScrollPaneUI$Handler
+javax/swing/plaf/metal/MetalScrollPaneUI$1
+javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource
+javax/swing/plaf/basic/BasicComboBoxRenderer
+javax/swing/plaf/metal/MetalComboBoxEditor$UIResource
+javax/swing/plaf/metal/MetalComboBoxEditor
+javax/swing/plaf/basic/BasicComboBoxEditor
+javax/swing/ComboBoxEditor
+javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField
+javax/swing/JTextField$NotifyAction
+javax/swing/text/TextAction
+javax/swing/AbstractAction
+javax/swing/text/JTextComponent$MutableCaretEvent
+javax/swing/plaf/metal/MetalTextFieldUI
+javax/swing/plaf/basic/BasicTextFieldUI
+javax/swing/plaf/basic/BasicTextUI
+javax/swing/text/ViewFactory
+javax/swing/plaf/TextUI
+javax/swing/plaf/basic/BasicTextUI$BasicCursor
+javax/swing/text/DefaultEditorKit
+javax/swing/text/EditorKit
+javax/swing/text/DefaultEditorKit$InsertContentAction
+javax/swing/text/DefaultEditorKit$DeletePrevCharAction
+javax/swing/text/DefaultEditorKit$DeleteNextCharAction
+javax/swing/text/DefaultEditorKit$ReadOnlyAction
+javax/swing/text/DefaultEditorKit$DeleteWordAction
+javax/swing/text/DefaultEditorKit$WritableAction
+javax/swing/text/DefaultEditorKit$CutAction
+javax/swing/text/DefaultEditorKit$CopyAction
+javax/swing/text/DefaultEditorKit$PasteAction
+javax/swing/text/DefaultEditorKit$VerticalPageAction
+javax/swing/text/DefaultEditorKit$PageAction
+javax/swing/text/DefaultEditorKit$InsertBreakAction
+javax/swing/text/DefaultEditorKit$BeepAction
+javax/swing/text/DefaultEditorKit$NextVisualPositionAction
+javax/swing/text/DefaultEditorKit$BeginWordAction
+javax/swing/text/DefaultEditorKit$EndWordAction
+javax/swing/text/DefaultEditorKit$PreviousWordAction
+javax/swing/text/DefaultEditorKit$NextWordAction
+javax/swing/text/DefaultEditorKit$BeginLineAction
+javax/swing/text/DefaultEditorKit$EndLineAction
+javax/swing/text/DefaultEditorKit$BeginParagraphAction
+javax/swing/text/DefaultEditorKit$EndParagraphAction
+javax/swing/text/DefaultEditorKit$BeginAction
+javax/swing/text/DefaultEditorKit$EndAction
+javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction
+javax/swing/text/DefaultEditorKit$InsertTabAction
+javax/swing/text/DefaultEditorKit$SelectWordAction
+javax/swing/text/DefaultEditorKit$SelectLineAction
+javax/swing/text/DefaultEditorKit$SelectParagraphAction
+javax/swing/text/DefaultEditorKit$SelectAllAction
+javax/swing/text/DefaultEditorKit$UnselectAction
+javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction
+javax/swing/text/DefaultEditorKit$DumpModelAction
+javax/swing/plaf/basic/BasicTextUI$TextTransferHandler
+javax/swing/text/Position$Bias
+javax/swing/plaf/basic/BasicTextUI$RootView
+javax/swing/text/View
+javax/swing/plaf/basic/BasicTextUI$UpdateHandler
+javax/swing/event/DocumentListener
+javax/swing/plaf/basic/BasicTextUI$DragListener
+javax/swing/plaf/basic/BasicComboBoxEditor$UIResource
+javax/swing/plaf/basic/BasicTextUI$BasicCaret
+javax/swing/text/DefaultCaret
+javax/swing/text/Caret
+javax/swing/text/DefaultCaret$Handler
+java/awt/datatransfer/ClipboardOwner
+javax/swing/plaf/basic/BasicTextUI$BasicHighlighter
+javax/swing/text/DefaultHighlighter
+javax/swing/text/LayeredHighlighter
+javax/swing/text/Highlighter
+javax/swing/text/Highlighter$Highlight
+javax/swing/text/DefaultHighlighter$DefaultHighlightPainter
+javax/swing/text/LayeredHighlighter$LayerPainter
+javax/swing/text/Highlighter$HighlightPainter
+javax/swing/text/DefaultHighlighter$SafeDamager
+javax/swing/text/FieldView
+javax/swing/text/PlainView
+javax/swing/text/JTextComponent$DefaultKeymap
+javax/swing/text/Keymap
+javax/swing/text/JTextComponent$KeymapWrapper
+javax/swing/text/JTextComponent$KeymapActionMap
+javax/swing/plaf/basic/BasicTextUI$FocusAction
+javax/swing/plaf/basic/BasicTextUI$TextActionWrapper
+javax/swing/JTextArea
+javax/swing/JEditorPane
+javax/swing/JTextField$ScrollRepainter
+javax/swing/plaf/metal/MetalComboBoxEditor$1
+javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder
+javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener
+javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicComboBoxUI$Handler
+javax/swing/plaf/metal/MetalComboBoxButton
+javax/swing/plaf/metal/MetalComboBoxIcon
+javax/swing/plaf/metal/MetalComboBoxButton$1
+javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager
+javax/swing/JComboBox$KeySelectionManager
+javax/swing/JToolBar$DefaultToolBarLayout
+javax/swing/plaf/metal/MetalToolBarUI
+javax/swing/plaf/basic/BasicToolBarUI
+javax/swing/plaf/ToolBarUI
+javax/swing/plaf/metal/MetalBorders$ToolBarBorder
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
+javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder
+javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder
+javax/swing/plaf/basic/BasicBorders$RadioButtonBorder
+javax/swing/plaf/basic/BasicBorders$ButtonBorder
+javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder
+javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener
+javax/swing/plaf/basic/BasicToolBarUI$DockingListener
+javax/swing/plaf/basic/BasicToolBarUI$Handler
+javax/swing/border/EtchedBorder
+javax/swing/JToolBar$Separator
+javax/swing/plaf/basic/BasicToolBarSeparatorUI
+sun/awt/color/CMM
+java/applet/Applet
+java/awt/Panel
+javax/swing/KeyboardManager$ComponentKeyStrokePair
+sun/awt/EmbeddedFrame
+sun/awt/im/InputMethodContext
+java/awt/im/spi/InputMethodContext
+sun/awt/im/InputContext
+sun/awt/im/InputMethodManager
+sun/awt/im/ExecutableInputMethodManager
+sun/awt/X11/XInputMethodDescriptor
+sun/awt/X11InputMethodDescriptor
+java/awt/im/spi/InputMethodDescriptor
+sun/awt/im/InputMethodLocator
+sun/awt/im/ExecutableInputMethodManager$2
+sun/misc/Service
+sun/misc/Service$LazyIterator
+java/util/TreeSet
+java/util/NavigableSet
+java/util/SortedSet
+javax/swing/SizeRequirements
+javax/swing/plaf/basic/BasicGraphicsUtils
+java/awt/event/AdjustmentEvent
+java/awt/MenuBar
+sun/awt/X11/XComponentPeer$2
+java/awt/SequencedEvent
+java/beans/PropertyVetoException
+java/awt/DefaultKeyboardFocusManager$TypeAheadMarker
+java/awt/KeyboardFocusManager$HeavyweightFocusRequest
+java/awt/KeyboardFocusManager$LightweightFocusRequest
+sun/awt/KeyboardFocusManagerPeerImpl
+sun/awt/SunToolkit$7
+java/awt/Window$1DisposeAction
+java/awt/LightweightDispatcher$2
+sun/awt/X11/XReparentEvent
+sun/awt/X11/XWindowAttributes
+javax/swing/SystemEventQueueUtilities$ComponentWorkRequest
+sun/awt/X11/XFocusChangeEvent
+sun/awt/X11/XComponentPeer$1
+sun/awt/X11/XUnmapEvent
+java/io/StringWriter
+javax/swing/JWindow
+java/io/UnsupportedEncodingException
+java/net/UnknownHostException
+java/nio/channels/SocketChannel
+java/nio/channels/spi/AbstractSelectableChannel
+java/nio/channels/SelectableChannel
+java/net/SocketImplFactory
+javax/swing/UnsupportedLookAndFeelException
+java/lang/UnsatisfiedLinkError
+javax/swing/Box$Filler
+javax/swing/JComponent$2
+sun/net/www/MimeTable
+java/net/FileNameMap
+sun/net/www/MimeTable$1
+sun/net/www/MimeTable$2
+sun/net/www/MimeEntry
+java/net/URLConnection$1
+java/text/SimpleDateFormat
+java/text/DateFormat
+java/text/DateFormat$Field
+java/util/Calendar
+java/util/GregorianCalendar
+sun/util/resources/CalendarData
+sun/util/resources/CalendarData_en
+java/text/DateFormatSymbols
+java/text/spi/DateFormatSymbolsProvider
+java/text/DontCareFieldPosition
+java/text/DontCareFieldPosition$1
+java/text/Format$FieldDelegate
+javax/swing/plaf/BorderUIResource
+javax/swing/BorderFactory
+javax/swing/border/BevelBorder
+javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon
+javax/swing/plaf/metal/MetalIconFactory$FolderIcon16
+java/util/zip/ZipInputStream
+java/io/PushbackInputStream
+java/util/zip/CRC32
+java/util/zip/Checksum
+java/lang/Thread$State
+javax/swing/SwingUtilities$SharedOwnerFrame
+javax/swing/JTable
+javax/swing/event/TableModelListener
+javax/swing/event/TableColumnModelListener
+javax/swing/event/CellEditorListener
+javax/swing/event/RowSorterListener
+javax/swing/BufferStrategyPaintManager$BufferInfo
+java/awt/Component$BltSubRegionBufferStrategy
+sun/awt/SubRegionShowable
+java/awt/Component$BltBufferStrategy
+sun/awt/image/SunVolatileImage
+sun/awt/image/BufferedImageGraphicsConfig
+sun/print/PrinterGraphicsConfig
+sun/java2d/x11/X11VolatileSurfaceManager
+sun/awt/image/VolatileSurfaceManager
+java/awt/print/PrinterGraphics
+java/awt/PrintGraphics
+java/awt/GraphicsCallback$PaintCallback
+java/awt/GraphicsCallback
+sun/awt/SunGraphicsCallback
+javax/swing/JRadioButton
+java/lang/ClassFormatError
+javax/swing/JTabbedPane
+javax/swing/JTabbedPane$ModelListener
+javax/swing/plaf/metal/MetalTabbedPaneUI
+javax/swing/plaf/basic/BasicTabbedPaneUI
+javax/swing/plaf/TabbedPaneUI
+javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$Handler
+sun/swing/ImageIconUIResource
+javax/swing/GrayFilter
+java/awt/image/RGBImageFilter
+java/awt/image/ImageFilter
+java/awt/image/FilteredImageSource
+org/w3c/dom/Node
+org/xml/sax/SAXException
+javax/xml/parsers/ParserConfigurationException
+org/xml/sax/EntityResolver
+java/security/NoSuchAlgorithmException
+java/security/GeneralSecurityException
+java/util/zip/GZIPInputStream
+java/util/zip/DeflaterOutputStream
+org/xml/sax/InputSource
+javax/xml/parsers/DocumentBuilderFactory
+javax/xml/parsers/FactoryFinder
+javax/xml/parsers/SecuritySupport
+javax/xml/parsers/SecuritySupport$2
+javax/xml/parsers/SecuritySupport$5
+javax/xml/parsers/SecuritySupport$1
+javax/xml/parsers/SecuritySupport$4
+javax/xml/parsers/DocumentBuilder
+org/w3c/dom/Document
+org/xml/sax/helpers/DefaultHandler
+org/xml/sax/DTDHandler
+org/xml/sax/ContentHandler
+org/xml/sax/ErrorHandler
+org/xml/sax/SAXNotSupportedException
+org/xml/sax/Locator
+org/xml/sax/SAXNotRecognizedException
+org/xml/sax/SAXParseException
+org/w3c/dom/NodeList
+org/w3c/dom/events/EventTarget
+org/w3c/dom/traversal/DocumentTraversal
+org/w3c/dom/events/DocumentEvent
+org/w3c/dom/ranges/DocumentRange
+org/w3c/dom/Entity
+org/w3c/dom/Element
+org/w3c/dom/CharacterData
+org/w3c/dom/CDATASection
+org/w3c/dom/Text
+org/xml/sax/AttributeList
+org/w3c/dom/DOMException
+org/w3c/dom/Notation
+org/w3c/dom/DocumentType
+org/w3c/dom/Attr
+org/w3c/dom/EntityReference
+org/w3c/dom/ProcessingInstruction
+org/w3c/dom/Comment
+org/w3c/dom/DocumentFragment
+org/w3c/dom/events/Event
+org/w3c/dom/events/MutationEvent
+org/w3c/dom/traversal/TreeWalker
+org/w3c/dom/ranges/Range
+org/w3c/dom/traversal/NodeIterator
+org/w3c/dom/events/EventException
+org/w3c/dom/NamedNodeMap
+java/lang/StringIndexOutOfBoundsException
+java/awt/GridLayout
+javax/swing/plaf/metal/MetalRadioButtonUI
+javax/swing/plaf/basic/BasicRadioButtonUI
+javax/swing/plaf/basic/BasicBorders
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon
+java/awt/event/ItemEvent
+java/awt/CardLayout$Card
+javax/swing/JCheckBox
+javax/swing/event/ListSelectionEvent
+javax/swing/plaf/metal/MetalCheckBoxUI
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon
+java/lang/ExceptionInInitializerError
+com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
+javax/swing/JProgressBar
+javax/swing/JProgressBar$ModelListener
+javax/swing/plaf/metal/MetalProgressBarUI
+javax/swing/plaf/basic/BasicProgressBarUI
+javax/swing/plaf/ProgressBarUI
+javax/swing/plaf/BorderUIResource$LineBorderUIResource
+javax/swing/plaf/basic/BasicProgressBarUI$Handler
+javax/swing/tree/TreeModel
+javax/swing/table/TableCellRenderer
+javax/swing/table/JTableHeader
+javax/swing/event/TreeExpansionListener
+javax/swing/table/AbstractTableModel
+javax/swing/table/TableModel
+javax/swing/table/DefaultTableCellRenderer
+javax/swing/JTree
+javax/swing/tree/TreeSelectionModel
+javax/swing/tree/DefaultTreeCellRenderer
+javax/swing/tree/TreeCellRenderer
+javax/swing/table/TableCellEditor
+javax/swing/CellEditor
+javax/swing/JToolTip
+javax/swing/table/TableColumn
+javax/swing/table/DefaultTableColumnModel
+javax/swing/table/TableColumnModel
+javax/swing/table/DefaultTableModel
+javax/swing/event/TableModelEvent
+sun/swing/table/DefaultTableCellHeaderRenderer
+javax/swing/plaf/basic/BasicTableHeaderUI
+javax/swing/plaf/TableHeaderUI
+javax/swing/plaf/basic/BasicTableHeaderUI$1
+javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler
+javax/swing/DefaultCellEditor
+javax/swing/tree/TreeCellEditor
+javax/swing/AbstractCellEditor
+javax/swing/plaf/basic/BasicTableUI
+javax/swing/plaf/TableUI
+javax/swing/plaf/basic/BasicTableUI$TableTransferHandler
+javax/swing/plaf/basic/BasicTableUI$Handler
+javax/swing/tree/DefaultTreeSelectionModel
+javax/swing/tree/TreePath
+javax/swing/plaf/metal/MetalTreeUI
+javax/swing/plaf/basic/BasicTreeUI
+javax/swing/plaf/TreeUI
+javax/swing/plaf/basic/BasicTreeUI$Actions
+javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler
+javax/swing/plaf/metal/MetalTreeUI$LineListener
+javax/swing/plaf/basic/BasicTreeUI$Handler
+javax/swing/event/TreeModelListener
+javax/swing/event/TreeSelectionListener
+javax/swing/event/SwingPropertyChangeSupport
+javax/swing/tree/VariableHeightLayoutCache
+javax/swing/tree/AbstractLayoutCache
+javax/swing/tree/RowMapper
+javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler
+javax/swing/tree/AbstractLayoutCache$NodeDimensions
+javax/swing/JTree$TreeModelHandler
+javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
+javax/swing/tree/DefaultMutableTreeNode
+javax/swing/tree/MutableTreeNode
+javax/swing/tree/DefaultMutableTreeNode$1
+javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
+javax/swing/event/TableColumnModelEvent
+java/text/ParseException
+java/text/NumberFormat$Field
+javax/swing/event/UndoableEditListener
+javax/swing/filechooser/FileFilter
+javax/swing/tree/DefaultTreeModel
+javax/swing/tree/DefaultTreeCellEditor
+javax/swing/tree/DefaultTreeCellEditor$1
+javax/swing/tree/DefaultTreeCellEditor$DefaultTextField
+javax/swing/DefaultCellEditor$1
+javax/swing/DefaultCellEditor$EditorDelegate
+javax/swing/tree/DefaultTreeCellEditor$EditorContainer
+javax/swing/JTree$TreeSelectionRedirector
+javax/swing/event/TreeModelEvent
+javax/swing/plaf/metal/MetalSplitPaneUI
+javax/swing/plaf/basic/BasicSplitPaneUI
+javax/swing/plaf/SplitPaneUI
+javax/swing/plaf/basic/BasicSplitPaneDivider
+javax/swing/plaf/basic/BasicBorders$SplitPaneBorder
+javax/swing/plaf/metal/MetalSplitPaneDivider
+javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout
+javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler
+javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder
+javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager
+javax/swing/plaf/basic/BasicSplitPaneUI$1
+javax/swing/plaf/basic/BasicSplitPaneUI$Handler
+javax/swing/plaf/metal/MetalSplitPaneDivider$1
+javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler
+javax/swing/plaf/metal/MetalSplitPaneDivider$2
+javax/swing/border/TitledBorder
+javax/swing/plaf/basic/BasicTextAreaUI
+java/util/Collections$UnmodifiableCollection$1
+java/io/InterruptedIOException
+java/net/NoRouteToHostException
+java/net/BindException
+javax/swing/tree/PathPlaceHolder
+javax/swing/event/TreeSelectionEvent
+javax/swing/JList$3
+javax/swing/JList$ListSelectionHandler
+javax/swing/JSlider
+javax/swing/JSlider$ModelListener
+javax/swing/plaf/metal/MetalSliderUI
+javax/swing/plaf/basic/BasicSliderUI
+javax/swing/plaf/SliderUI
+javax/swing/plaf/basic/BasicSliderUI$Actions
+javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon
+javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon
+javax/swing/plaf/basic/BasicSliderUI$TrackListener
+javax/swing/plaf/basic/BasicSliderUI$Handler
+javax/swing/plaf/basic/BasicSliderUI$ScrollListener
+javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener
+javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
+sun/java2d/HeadlessGraphicsEnvironment
+java/util/Hashtable$KeySet
+java/awt/FontFormatException
+sun/java2d/SunGraphicsEnvironment$2
+sun/font/Type1Font$1
+java/nio/channels/FileChannel$MapMode
+sun/nio/ch/FileChannelImpl$Unmapper
+sun/nio/ch/Util$3
+java/nio/DirectByteBufferR
+java/nio/charset/Charset$3
+sun/nio/cs/ext/ExtendedCharsets
+sun/nio/cs/AbstractCharsetProvider
+sun/nio/cs/ext/SJIS
+sun/nio/cs/ext/SJIS$Decoder
+sun/nio/cs/ext/DelegatableDecoder
+sun/nio/cs/ext/JIS_X_0208_Decoder
+sun/nio/cs/ext/DoubleByteDecoder
+sun/nio/cs/ext/JIS_X_0201$Decoder
+sun/nio/cs/SingleByteDecoder
+java/lang/CharacterData00
+javax/swing/DefaultListModel
+javax/swing/event/ListDataEvent
+javax/sound/sampled/DataLine
+javax/sound/sampled/Line
+javax/sound/sampled/Line$Info
+javax/sound/sampled/DataLine$Info
+javax/sound/sampled/Control$Type
+javax/sound/sampled/FloatControl$Type
+javax/sound/sampled/LineUnavailableException
+javax/sound/sampled/UnsupportedAudioFileException
+javax/swing/JRadioButtonMenuItem
+javax/swing/JMenuItem$AccessibleJMenuItem
+javax/swing/AbstractButton$AccessibleAbstractButton
+javax/accessibility/AccessibleAction
+javax/accessibility/AccessibleValue
+javax/accessibility/AccessibleText
+javax/accessibility/AccessibleExtendedComponent
+javax/accessibility/AccessibleComponent
+javax/swing/JComponent$AccessibleJComponent
+java/awt/Container$AccessibleAWTContainer
+java/awt/Component$AccessibleAWTComponent
+javax/accessibility/AccessibleRelationSet
+javax/accessibility/AccessibleState
+javax/accessibility/AccessibleBundle
+javax/swing/plaf/basic/BasicCheckBoxMenuItemUI
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon
+javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem
+javax/swing/plaf/basic/BasicRadioButtonMenuItemUI
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon
+sun/awt/image/ImageDecoder$1
+javax/swing/JTabbedPane$Page
+java/net/DatagramSocket
+java/net/MulticastSocket
+java/net/DatagramPacket
+sun/net/InetAddressCachePolicy
+sun/net/InetAddressCachePolicy$1
+sun/net/InetAddressCachePolicy$2
+java/net/InetAddress$CacheEntry
+java/net/PlainDatagramSocketImpl
+java/net/DatagramSocketImpl
+java/net/NetworkInterface
+java/net/InterfaceAddress
+java/text/Collator
+java/text/spi/CollatorProvider
+sun/text/resources/CollationData
+sun/text/resources/CollationData_en
+sun/util/EmptyListResourceBundle
+java/text/RuleBasedCollator
+java/text/CollationRules
+java/text/RBCollationTables
+java/text/RBTableBuilder
+java/text/RBCollationTables$BuildAPI
+sun/text/IntHashtable
+sun/text/UCompactIntArray
+sun/text/normalizer/NormalizerImpl
+sun/text/normalizer/ICUData
+sun/text/normalizer/NormalizerDataReader
+sun/text/normalizer/ICUBinary$Authenticate
+sun/text/normalizer/ICUBinary
+sun/text/normalizer/NormalizerImpl$FCDTrieImpl
+sun/text/normalizer/Trie$DataManipulate
+sun/text/normalizer/NormalizerImpl$NormTrieImpl
+sun/text/normalizer/NormalizerImpl$AuxTrieImpl
+sun/text/normalizer/IntTrie
+sun/text/normalizer/Trie
+sun/text/normalizer/CharTrie
+sun/text/normalizer/CharTrie$FriendAgent
+sun/text/normalizer/UnicodeSet
+sun/text/normalizer/UnicodeMatcher
+sun/text/normalizer/NormalizerImpl$DecomposeArgs
+java/text/MergeCollation
+java/text/PatternEntry$Parser
+java/text/PatternEntry
+java/text/EntryPair
+sun/text/ComposedCharIter
+sun/text/normalizer/UTF16
+sun/net/www/protocol/http/Handler
+java/io/ObjectInputStream$BlockDataInputStream
+java/io/ObjectInputStream$PeekInputStream
+java/io/ObjectInputStream$HandleTable
+java/io/ObjectInputStream$ValidationList
+java/io/Bits
+java/io/ObjectStreamClass$Caches
+java/io/ObjectStreamClass$WeakClassKey
+java/io/ObjectStreamClass$EntryFuture
+java/io/ObjectStreamClass$2
+sun/reflect/SerializationConstructorAccessorImpl
+java/io/ObjectStreamClass$FieldReflectorKey
+java/io/ObjectStreamClass$FieldReflector
+java/io/ObjectStreamClass$1
+java/io/DataOutputStream
+java/io/ObjectStreamClass$MemberSignature
+java/io/ObjectStreamClass$3
+java/io/ObjectStreamClass$4
+java/io/ObjectStreamClass$5
+java/security/MessageDigest
+java/security/MessageDigestSpi
+sun/security/jca/GetInstance
+sun/security/jca/Providers
+sun/security/jca/ProviderList
+sun/security/jca/ProviderConfig
+sun/security/jca/ProviderList$3
+sun/security/jca/ProviderList$1
+sun/security/jca/ProviderList$2
+sun/security/jca/ProviderConfig$1
+sun/security/jca/ProviderConfig$3
+java/security/Provider$Service
+java/security/Provider$UString
+sun/security/provider/SHA
+sun/security/provider/DigestBase
+sun/security/jca/GetInstance$Instance
+java/security/MessageDigest$Delegate
+sun/security/provider/ByteArrayAccess
+java/io/ObjectStreamClass$ClassDataSlot
+java/io/ObjectInputStream$CallbackContext
+sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
+java/security/SignatureException
+java/security/InvalidKeyException
+java/security/KeyException
+java/security/Signature
+java/security/SignatureSpi
+java/io/ObjectOutputStream$BlockDataOutputStream
+sun/security/provider/DSAPublicKey
+java/security/interfaces/DSAPublicKey
+java/security/interfaces/DSAKey
+java/security/PublicKey
+java/security/Key
+sun/security/x509/X509Key
+java/io/ObjectOutputStream$HandleTable
+java/io/ObjectOutputStream$ReplaceTable
+sun/security/x509/AlgorithmId
+sun/security/util/DerEncoder
+sun/security/util/BitArray
+sun/security/util/DerOutputStream
+sun/security/util/DerValue
+java/math/BigInteger
+java/security/interfaces/DSAParams
+sun/security/util/DerInputStream
+sun/security/util/DerInputBuffer
+sun/security/util/ObjectIdentifier
+java/security/AlgorithmParameters
+java/security/AlgorithmParametersSpi
+sun/security/provider/DSAParameters
+sun/security/util/ByteArrayLexOrder
+sun/security/util/ByteArrayTagOrder
+sun/security/util/DerIndefLenConverter
+java/io/InvalidClassException
+java/io/ObjectStreamException
+java/io/ObjectInputStream$GetFieldImpl
+java/io/ObjectInputStream$GetField
+sun/security/jca/ServiceId
+sun/security/jca/ProviderList$ServiceList
+sun/security/jca/ProviderList$ServiceList$1
+java/security/Signature$Delegate
+java/security/interfaces/DSAPrivateKey
+java/security/PrivateKey
+sun/security/provider/DSA$SHA1withDSA
+sun/security/provider/DSA
+java/security/spec/DSAParameterSpec
+java/security/spec/AlgorithmParameterSpec
+java/math/MutableBigInteger
+java/math/SignedMutableBigInteger
+java/awt/EventQueue$1AWTInvocationLock
+javax/swing/SystemEventQueueUtilities$RunnableCanvas
+javax/swing/SystemEventQueueUtilities$RunnableCanvasGraphics
+java/awt/Component$FlipBufferStrategy
+java/awt/SentEvent
+sun/awt/X11/XDestroyWindowEvent
+sun/awt/X11/XDropTargetRegistry
+sun/awt/X11/XEmbeddedFramePeer
+sun/awt/X11/XDragAndDropProtocols
+sun/awt/X11/XDropTargetContextPeer
+sun/awt/dnd/SunDropTargetContextPeer
+java/awt/dnd/peer/DropTargetContextPeer
+sun/awt/X11/XDropTargetContextPeer$XDropTargetProtocolListenerImpl
+sun/awt/X11/XDropTargetProtocolListener
+sun/awt/X11/XDnDDragSourceProtocol
+sun/awt/X11/XDragSourceProtocol
+sun/awt/X11/MotifDnDDragSourceProtocol
+sun/awt/X11/XDnDDropTargetProtocol
+sun/awt/X11/XDropTargetProtocol
+sun/awt/X11/MotifDnDDropTargetProtocol
+sun/awt/X11/XDnDConstants
+sun/awt/X11/MotifDnDConstants
+javax/swing/JTable$2
+javax/swing/JTable$Resizable3
+javax/swing/JTable$Resizable2
+javax/swing/JTable$5
+javax/swing/event/AncestorEvent
+sun/font/FontDesignMetrics$MetricsKey
+java/awt/geom/Line2D$Float
+java/awt/geom/Line2D
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel
+javax/swing/plaf/synth/SynthLookAndFeel
+javax/swing/plaf/synth/DefaultSynthStyleFactory
+javax/swing/plaf/synth/SynthStyleFactory
+sun/swing/BakedArrayList
+javax/swing/plaf/synth/SynthLookAndFeel$Handler
+javax/swing/plaf/synth/SynthDefaultLookup
+com/sun/java/swing/plaf/gtk/GTKEngine
+com/sun/java/swing/plaf/gtk/GTKDefaultEngine
+com/sun/java/swing/plaf/gtk/GTKEngine$Settings
+com/sun/java/swing/plaf/gtk/GTKStyleFactory
+com/sun/java/swing/plaf/gtk/PangoFonts
+sun/font/FontManager$FontConfigInfo
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel$WeakPCL
+javax/swing/plaf/synth/Region
+javax/swing/plaf/synth/SynthLookAndFeel$AATextListener
+com/sun/java/swing/plaf/gtk/GTKNativeEngine
+com/sun/java/swing/plaf/gtk/GTKNativeEngine$WidgetType
+com/sun/java/swing/plaf/gtk/GTKRegion
+com/sun/java/swing/plaf/gtk/GTKDefaultStyle
+com/sun/java/swing/plaf/gtk/GTKStyle
+com/sun/java/swing/plaf/gtk/GTKConstants
+javax/swing/plaf/synth/SynthStyle
+javax/swing/plaf/synth/SynthGraphicsUtils
+com/sun/java/swing/plaf/gtk/GTKGraphicsUtils
+com/sun/java/swing/plaf/gtk/GTKStyle$GTKStockIcon
+sun/swing/plaf/synth/SynthIcon
+com/sun/java/swing/plaf/gtk/GTKColorType
+javax/swing/plaf/synth/ColorType
+com/sun/java/swing/plaf/gtk/resources/gtk
+com/sun/swing/internal/plaf/synth/resources/synth
+com/sun/java/swing/plaf/gtk/GTKStyle$GTKLazyValue
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel$1FontLazyValue
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel$2
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel$3
+javax/swing/plaf/synth/SynthPanelUI
+sun/swing/plaf/synth/SynthUI
+javax/swing/plaf/synth/SynthConstants
+javax/swing/plaf/synth/SynthContext
+javax/swing/plaf/synth/SynthBorder
+javax/swing/plaf/synth/SynthRootPaneUI
+javax/swing/plaf/synth/SynthLabelUI
+javax/swing/plaf/synth/SynthButtonUI
+javax/swing/plaf/synth/SynthToggleButtonUI
+javax/swing/plaf/basic/BasicBorders$FieldBorder
+javax/swing/plaf/synth/SynthMenuBarUI
+javax/swing/plaf/synth/DefaultMenuLayout
+javax/swing/plaf/synth/SynthMenuUI
+com/sun/java/swing/plaf/gtk/GTKIconFactory
+com/sun/java/swing/plaf/gtk/GTKIconFactory$MenuArrowIcon
+com/sun/java/swing/plaf/gtk/GTKIconFactory$DelegatingIcon
+com/sun/java/swing/plaf/gtk/GTKConstants$ArrowType
+javax/swing/plaf/basic/BasicIconFactory
+javax/swing/plaf/basic/BasicIconFactory$MenuItemCheckIcon
+javax/swing/plaf/synth/SynthMenuItemUI
+javax/swing/plaf/synth/SynthPopupMenuUI
+javax/swing/plaf/synth/SynthSeparatorUI
+javax/swing/plaf/synth/SynthScrollBarUI
+javax/swing/plaf/synth/SynthArrowButton
+javax/swing/plaf/synth/SynthArrowButton$SynthArrowButtonUI
+javax/swing/plaf/synth/SynthComboBoxUI
+javax/swing/plaf/synth/SynthComboPopup
+javax/swing/plaf/synth/SynthListUI
+javax/swing/plaf/synth/SynthListUI$SynthListCellRenderer
+javax/swing/plaf/synth/SynthViewportUI
+javax/swing/plaf/synth/SynthScrollPaneUI
+javax/swing/plaf/synth/SynthScrollPaneUI$ViewportBorder
+javax/swing/plaf/synth/SynthComboBoxUI$SynthComboBoxRenderer
+javax/swing/plaf/synth/SynthComboBoxUI$SynthComboBoxEditor
+javax/swing/plaf/synth/SynthTextFieldUI
+javax/swing/plaf/synth/SynthToolBarUI
+javax/swing/plaf/synth/SynthToolBarUI$SynthToolBarLayoutManager
+com/sun/java/swing/plaf/gtk/GTKIconFactory$ToolBarHandleIcon
+com/sun/java/swing/plaf/gtk/GTKConstants$Orientation
+sun/awt/X11/XTranslateCoordinates
+com/sun/java/swing/plaf/gtk/GTKPainter
+javax/swing/plaf/synth/SynthPainter
+javax/swing/plaf/synth/SynthPainter$1
+com/sun/java/swing/plaf/gtk/GTKConstants$PositionType
+com/sun/java/swing/plaf/gtk/GTKConstants$ShadowType
+java/io/ObjectInputStream$HandleTable$HandleList
+sun/java2d/pipe/ShapeSpanIterator
+sun/java2d/pipe/SpanIterator
+sun/dc/path/PathConsumer
+sun/dc/pr/PathStroker
+sun/dc/pr/PathDasher
+java/awt/geom/LineIterator
+java/awt/geom/PathIterator
+sun/applet/Main
+sun/applet/AppletMessageHandler
+sun/applet/resources/MsgAppletViewer
+sun/applet/AppletSecurity
+sun/awt/AWTSecurityManager
+java/lang/SecurityManager
+java/security/DomainCombiner
+sun/applet/AppletSecurity$1
+java/lang/SecurityManager$1
+java/security/SecurityPermission
+java/util/PropertyPermission
+sun/applet/AppletViewer
+java/applet/AppletContext
+java/awt/print/Printable
+sun/security/util/SecurityConstants
+java/awt/AWTPermission
+java/net/NetPermission
+java/net/SocketPermission
+javax/security/auth/AuthPermission
+java/lang/Thread$1
+java/util/logging/LogManager$5
+java/util/logging/LogManager$6
+sun/applet/StdAppletViewerFactory
+sun/applet/AppletViewerFactory
+sun/applet/AppletViewer$UserActionListener
+sun/applet/AppletViewerPanel
+sun/applet/AppletPanel
+java/applet/AppletStub
+sun/misc/MessageUtils
+sun/applet/AppletPanel$10
+java/security/Policy$1
+sun/security/provider/PolicyFile$1
+sun/security/provider/PolicyInfo
+sun/security/provider/PolicyFile$3
+sun/security/util/PropertyExpander
+sun/security/provider/PolicyParser
+sun/security/util/PolicyUtil
+sun/security/provider/PolicyParser$GrantEntry
+sun/security/provider/PolicyParser$PermissionEntry
+sun/security/provider/PolicyFile$PolicyEntry
+sun/security/provider/PolicyFile$6
+sun/security/provider/PolicyFile$7
+sun/security/provider/SelfPermission
+java/net/SocketPermissionCollection
+java/util/PropertyPermissionCollection
+sun/applet/AppletPanel$9
+sun/applet/AppletClassLoader
+sun/applet/AppletClassLoader$4
+sun/applet/AppletThreadGroup
+sun/applet/AppContextCreator
+sun/applet/AppletPanel$1
+sun/awt/X11/XMenuBarPeer
+java/awt/peer/MenuBarPeer
+java/awt/peer/MenuComponentPeer
+sun/awt/X11/XBaseMenuWindow
+sun/awt/X11/XMenuPeer
+java/awt/peer/MenuPeer
+java/awt/peer/MenuItemPeer
+sun/awt/X11/XMenuItemPeer
+java/awt/MenuShortcut
+sun/awt/X11/XMenuWindow
+sun/awt/X11/XMenuBarPeer$1
+sun/awt/X11/XMenuItemPeer$TextMetrics
+sun/awt/AppContext$3
+sun/awt/MostRecentThreadAppContext
+sun/awt/X11/XMenuBarPeer$MappingData
+sun/awt/X11/XBaseMenuWindow$MappingData
+sun/applet/AppletViewer$1
+sun/applet/AppletViewer$1AppletEventListener
+sun/applet/AppletListener
+sun/applet/AppletEventMulticaster
+sun/misc/Queue
+sun/misc/QueueElement
+sun/applet/AppletEvent
+sun/applet/AppletClassLoader$1
+sun/awt/X11/XBaseMenuWindow$3
+java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent
+sun/awt/CausedFocusEvent
+sun/awt/X11/XWindow$1
+java/net/URLClassLoader$4
+sun/applet/AppletClassLoader$2
+javax/swing/JApplet
+java/lang/ClassLoader$1
+sun/security/provider/PolicyFile$5
+java/security/PermissionsEnumerator
+java/util/Collections$1
+sun/applet/AppletPanel$11
+sun/applet/AppletPanel$8
+sun/applet/AppletPanel$2
+sun/applet/AppletPanel$3
+sun/applet/AppletPanel$6
+javax/swing/BufferStrategyPaintManager$1
+# f3ac8b467e7f8c49
diff --git a/jdk/make/tools/sharing/classlist.solaris b/jdk/make/tools/sharing/classlist.solaris
new file mode 100644
index 0000000..e645a4b
--- /dev/null
+++ b/jdk/make/tools/sharing/classlist.solaris
@@ -0,0 +1,2496 @@
+java/lang/Object
+java/lang/String
+java/io/Serializable
+java/lang/Comparable
+java/lang/CharSequence
+java/lang/Class
+java/lang/reflect/GenericDeclaration
+java/lang/reflect/Type
+java/lang/reflect/AnnotatedElement
+java/lang/Cloneable
+java/lang/ClassLoader
+java/lang/System
+java/lang/Throwable
+java/lang/Error
+java/lang/ThreadDeath
+java/lang/Exception
+java/lang/RuntimeException
+java/security/ProtectionDomain
+java/security/AccessControlContext
+java/lang/ClassNotFoundException
+java/lang/NoClassDefFoundError
+java/lang/LinkageError
+java/lang/ClassCastException
+java/lang/ArrayStoreException
+java/lang/VirtualMachineError
+java/lang/OutOfMemoryError
+java/lang/StackOverflowError
+java/lang/IllegalMonitorStateException
+java/lang/ref/Reference
+java/lang/ref/SoftReference
+java/lang/ref/WeakReference
+java/lang/ref/FinalReference
+java/lang/ref/PhantomReference
+java/lang/ref/Finalizer
+java/lang/Thread
+java/lang/Runnable
+java/lang/ThreadGroup
+java/lang/Thread$UncaughtExceptionHandler
+java/util/Properties
+java/util/Hashtable
+java/util/Map
+java/util/Dictionary
+java/lang/reflect/AccessibleObject
+java/lang/reflect/Field
+java/lang/reflect/Member
+java/lang/reflect/Method
+java/lang/reflect/Constructor
+sun/reflect/MagicAccessorImpl
+sun/reflect/MethodAccessorImpl
+sun/reflect/MethodAccessor
+sun/reflect/ConstructorAccessorImpl
+sun/reflect/ConstructorAccessor
+sun/reflect/DelegatingClassLoader
+sun/reflect/ConstantPool
+sun/reflect/UnsafeStaticFieldAccessorImpl
+sun/reflect/UnsafeFieldAccessorImpl
+sun/reflect/FieldAccessorImpl
+sun/reflect/FieldAccessor
+java/util/Vector
+java/util/List
+java/util/Collection
+java/lang/Iterable
+java/util/RandomAccess
+java/util/AbstractList
+java/util/AbstractCollection
+java/lang/StringBuffer
+java/lang/AbstractStringBuilder
+java/lang/Appendable
+java/lang/StackTraceElement
+java/nio/Buffer
+java/lang/Boolean
+java/lang/Character
+java/lang/Float
+java/lang/Number
+java/lang/Double
+java/lang/Byte
+java/lang/Short
+java/lang/Integer
+java/lang/Long
+java/lang/NullPointerException
+java/lang/ArithmeticException
+java/io/ObjectStreamField
+java/lang/String$CaseInsensitiveComparator
+java/util/Comparator
+java/lang/RuntimePermission
+java/security/BasicPermission
+java/security/Permission
+java/security/Guard
+sun/misc/SoftCache
+java/util/AbstractMap
+java/lang/ref/ReferenceQueue
+java/lang/ref/ReferenceQueue$Null
+java/lang/ref/ReferenceQueue$Lock
+java/util/HashMap
+java/lang/annotation/Annotation
+java/util/HashMap$Entry
+java/util/Map$Entry
+java/security/AccessController
+java/lang/reflect/ReflectPermission
+sun/reflect/ReflectionFactory$GetReflectionFactoryAction
+java/security/PrivilegedAction
+java/util/Stack
+sun/reflect/ReflectionFactory
+java/lang/ref/Reference$Lock
+java/lang/ref/Reference$ReferenceHandler
+java/lang/ref/Finalizer$FinalizerThread
+java/util/Hashtable$EmptyEnumerator
+java/util/Enumeration
+java/util/Hashtable$EmptyIterator
+java/util/Iterator
+java/util/Hashtable$Entry
+java/nio/charset/Charset
+sun/nio/cs/StandardCharsets
+sun/nio/cs/FastCharsetProvider
+java/nio/charset/spi/CharsetProvider
+sun/nio/cs/StandardCharsets$Aliases
+sun/util/PreHashedMap
+sun/nio/cs/StandardCharsets$Classes
+sun/nio/cs/StandardCharsets$Cache
+java/lang/ThreadLocal
+java/util/concurrent/atomic/AtomicInteger
+sun/misc/Unsafe
+java/lang/NoSuchMethodError
+java/lang/IncompatibleClassChangeError
+sun/reflect/Reflection
+java/util/Collections
+java/util/Collections$EmptySet
+java/util/AbstractSet
+java/util/Set
+java/util/Collections$EmptyList
+java/util/Collections$EmptyMap
+java/util/Collections$ReverseComparator
+java/util/Collections$SynchronizedMap
+java/lang/Class$3
+java/lang/reflect/Modifier
+java/lang/reflect/ReflectAccess
+sun/reflect/LangReflectAccess
+java/util/Arrays
+java/lang/Math
+java/lang/StringBuilder
+sun/nio/cs/UTF_8
+sun/nio/cs/Unicode
+sun/nio/cs/HistoricallyNamedCharset
+java/lang/Class$1
+sun/reflect/ReflectionFactory$1
+sun/reflect/NativeConstructorAccessorImpl
+sun/reflect/DelegatingConstructorAccessorImpl
+sun/misc/VM
+java/lang/StringCoding
+java/lang/ThreadLocal$ThreadLocalMap
+java/lang/ThreadLocal$ThreadLocalMap$Entry
+java/lang/StringCoding$StringDecoder
+sun/nio/cs/UTF_8$Decoder
+java/nio/charset/CharsetDecoder
+java/nio/charset/CodingErrorAction
+sun/nio/cs/Surrogate$Generator
+sun/nio/cs/Surrogate
+java/nio/charset/CoderResult
+java/nio/charset/CoderResult$1
+java/nio/charset/CoderResult$Cache
+java/nio/charset/CoderResult$2
+java/nio/ByteBuffer
+java/nio/HeapByteBuffer
+java/nio/Bits
+java/nio/ByteOrder
+java/nio/CharBuffer
+java/lang/Readable
+java/nio/HeapCharBuffer
+sun/misc/Version
+java/io/FileInputStream
+java/io/InputStream
+java/io/Closeable
+java/io/FileDescriptor
+java/io/FileOutputStream
+java/io/OutputStream
+java/io/Flushable
+java/io/BufferedInputStream
+java/io/FilterInputStream
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
+sun/reflect/misc/ReflectUtil
+java/io/PrintStream
+java/io/FilterOutputStream
+java/io/BufferedOutputStream
+java/io/OutputStreamWriter
+java/io/Writer
+sun/nio/cs/StreamEncoder
+sun/security/action/GetPropertyAction
+sun/nio/cs/UTF_8$Encoder
+java/nio/charset/CharsetEncoder
+sun/nio/cs/Surrogate$Parser
+java/io/BufferedWriter
+java/lang/Runtime
+java/io/File
+java/io/FileSystem
+java/io/UnixFileSystem
+java/io/ExpiringCache
+java/io/ExpiringCache$1
+java/util/LinkedHashMap
+java/util/LinkedHashMap$Entry
+java/io/File$1
+sun/misc/JavaIODeleteOnExitAccess
+sun/misc/SharedSecrets
+java/lang/ClassLoader$3
+java/lang/StringCoding$StringEncoder
+java/io/ExpiringCache$Entry
+java/lang/ClassLoader$NativeLibrary
+java/lang/Terminator
+java/lang/Terminator$1
+sun/misc/SignalHandler
+sun/misc/Signal
+sun/misc/NativeSignalHandler
+java/io/Console
+java/io/Console$1
+sun/misc/JavaIOAccess
+java/io/Console$1$1
+java/lang/Shutdown
+java/util/ArrayList
+java/lang/Shutdown$Lock
+java/lang/ApplicationShutdownHooks
+java/util/IdentityHashMap
+sun/misc/OSEnvironment
+java/lang/System$2
+sun/misc/JavaLangAccess
+java/lang/Compiler
+java/lang/Compiler$1
+sun/misc/Launcher
+sun/misc/Launcher$Factory
+java/net/URLStreamHandlerFactory
+sun/misc/Launcher$ExtClassLoader
+java/net/URLClassLoader
+java/security/SecureClassLoader
+sun/security/util/Debug
+java/net/URLClassLoader$7
+sun/misc/JavaNetAccess
+java/util/StringTokenizer
+sun/misc/Launcher$ExtClassLoader$1
+java/security/PrivilegedExceptionAction
+sun/misc/MetaIndex
+java/io/BufferedReader
+java/io/Reader
+java/io/FileReader
+java/io/InputStreamReader
+sun/nio/cs/StreamDecoder
+java/lang/reflect/Array
+sun/net/www/ParseUtil
+java/util/BitSet
+java/io/ObjectStreamClass
+java/net/URL
+java/util/Locale
+java/util/concurrent/ConcurrentHashMap
+java/util/concurrent/ConcurrentMap
+java/util/concurrent/ConcurrentHashMap$Segment
+java/util/concurrent/locks/ReentrantLock
+java/util/concurrent/locks/Lock
+java/util/concurrent/locks/ReentrantLock$NonfairSync
+java/util/concurrent/locks/ReentrantLock$Sync
+java/util/concurrent/locks/AbstractQueuedSynchronizer
+java/util/concurrent/locks/AbstractOwnableSynchronizer
+java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
+java/util/concurrent/ConcurrentHashMap$HashEntry
+java/lang/CharacterDataLatin1
+java/net/Parts
+sun/net/www/protocol/file/Handler
+java/net/URLStreamHandler
+java/util/HashSet
+sun/misc/URLClassPath
+sun/net/www/protocol/jar/Handler
+sun/misc/Launcher$AppClassLoader
+sun/misc/Launcher$AppClassLoader$1
+java/lang/SystemClassLoaderAction
+java/net/URLClassLoader$1
+sun/misc/URLClassPath$3
+sun/misc/URLClassPath$JarLoader
+sun/misc/URLClassPath$Loader
+java/security/PrivilegedActionException
+sun/misc/URLClassPath$FileLoader
+sun/misc/URLClassPath$FileLoader$1
+sun/misc/Resource
+sun/nio/ByteBuffered
+java/security/CodeSource
+java/security/Permissions
+java/security/PermissionCollection
+sun/net/www/protocol/file/FileURLConnection
+sun/net/www/URLConnection
+java/net/URLConnection
+java/net/UnknownContentHandler
+java/net/ContentHandler
+sun/net/www/MessageHeader
+java/io/FilePermission
+java/io/FilePermission$1
+sun/security/provider/PolicyFile
+java/security/Policy
+java/security/Policy$UnsupportedEmptyCollection
+java/io/FilePermissionCollection
+java/security/AllPermission
+java/security/UnresolvedPermission
+java/security/BasicPermissionCollection
+java/security/Principal
+java/security/cert/Certificate
+java/util/AbstractList$Itr
+java/util/IdentityHashMap$KeySet
+java/util/IdentityHashMap$KeyIterator
+java/util/IdentityHashMap$IdentityHashMapIterator
+java/io/DeleteOnExitHook
+java/util/LinkedHashSet
+java/util/HashMap$KeySet
+java/util/LinkedHashMap$KeyIterator
+java/util/LinkedHashMap$LinkedHashIterator
+java/awt/Frame
+java/awt/MenuContainer
+java/awt/Window
+javax/accessibility/Accessible
+java/awt/Container
+java/awt/Component
+java/awt/image/ImageObserver
+java/lang/InterruptedException
+java/awt/Label
+java/util/logging/Logger
+java/util/logging/Handler
+java/util/logging/Level
+java/util/logging/LogManager
+java/util/logging/LogManager$1
+java/beans/PropertyChangeSupport
+java/util/logging/LogManager$LogNode
+java/util/logging/LoggingPermission
+java/util/logging/LogManager$Cleaner
+java/util/logging/LogManager$RootLogger
+java/util/logging/LogManager$2
+java/util/Properties$LineReader
+java/util/Hashtable$Enumerator
+java/beans/PropertyChangeEvent
+java/util/EventObject
+java/awt/Component$AWTTreeLock
+sun/awt/DebugHelper
+sun/awt/NativeLibLoader
+sun/security/action/LoadLibraryAction
+java/awt/GraphicsEnvironment
+java/awt/GraphicsEnvironment$1
+java/lang/ProcessEnvironment
+java/lang/ProcessEnvironment$Variable
+java/lang/ProcessEnvironment$ExternalData
+java/lang/ProcessEnvironment$Value
+java/lang/ProcessEnvironment$StringEnvironment
+java/util/Collections$UnmodifiableMap
+sun/awt/DebugHelperStub
+java/awt/Toolkit
+java/awt/Toolkit$3
+sun/util/CoreResourceBundleControl
+java/util/ResourceBundle$Control
+java/util/Arrays$ArrayList
+java/util/Collections$UnmodifiableRandomAccessList
+java/util/Collections$UnmodifiableList
+java/util/Collections$UnmodifiableCollection
+java/util/ResourceBundle
+java/util/ResourceBundle$1
+java/util/ResourceBundle$RBClassLoader
+java/util/ResourceBundle$RBClassLoader$1
+java/util/ResourceBundle$CacheKey
+java/util/ResourceBundle$LoaderReference
+java/util/ResourceBundle$CacheKeyReference
+java/util/ResourceBundle$SingleFormatControl
+sun/awt/resources/awt
+java/util/ListResourceBundle
+java/awt/Toolkit$1
+java/io/FileNotFoundException
+java/io/IOException
+java/awt/event/KeyEvent
+java/awt/event/InputEvent
+java/awt/event/ComponentEvent
+java/awt/AWTEvent
+java/awt/event/NativeLibLoader
+java/util/WeakHashMap
+java/util/WeakHashMap$Entry
+java/awt/Component$DummyRequestFocusController
+sun/awt/RequestFocusController
+java/awt/LayoutManager
+java/awt/LightweightDispatcher
+java/awt/event/AWTEventListener
+java/util/EventListener
+java/awt/Dimension
+java/awt/geom/Dimension2D
+java/util/concurrent/atomic/AtomicBoolean
+java/awt/ComponentOrientation
+java/awt/Component$2
+java/lang/NoSuchMethodException
+sun/awt/AppContext
+sun/awt/AppContext$1
+sun/awt/AppContext$2
+sun/awt/MostRecentKeyValue
+java/awt/Cursor
+sun/awt/X11GraphicsEnvironment
+sun/java2d/SunGraphicsEnvironment
+sun/java2d/FontSupport
+sun/awt/DisplayChangedListener
+sun/java2d/SunGraphicsEnvironment$TTFilter
+java/io/FilenameFilter
+sun/java2d/SunGraphicsEnvironment$T1Filter
+sun/awt/X11GraphicsEnvironment$1
+sun/awt/SunToolkit
+sun/awt/WindowClosingSupport
+sun/awt/WindowClosingListener
+sun/awt/ComponentFactory
+sun/awt/InputMethodSupport
+java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
+java/util/concurrent/locks/Condition
+sun/awt/AWTAutoShutdown
+sun/awt/AWTAutoShutdown$PeerMap
+sun/awt/SunToolkit$6
+java/awt/Dialog$ModalExclusionType
+java/lang/Enum
+java/awt/Dialog
+java/awt/Dialog$ModalityType
+java/awt/ModalEventFilter
+java/awt/EventFilter
+sun/reflect/UnsafeFieldAccessorFactory
+sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
+sun/awt/SunDisplayChanger
+sun/java2d/SunGraphicsEnvironment$1
+sun/font/FontManager
+sun/font/FileFont
+sun/font/PhysicalFont
+sun/font/Font2D
+sun/font/CompositeFont
+java/util/HashMap$Values
+java/util/HashMap$ValueIterator
+java/util/HashMap$HashIterator
+sun/font/FontManager$1
+java/awt/Font
+java/awt/geom/AffineTransform
+sun/font/AttributeValues
+sun/font/EAttribute
+java/text/AttributedCharacterIterator$Attribute
+java/lang/Class$4
+sun/reflect/NativeMethodAccessorImpl
+sun/reflect/DelegatingMethodAccessorImpl
+java/awt/font/TextAttribute
+java/lang/Integer$IntegerCache
+sun/font/TrueTypeFont
+java/awt/font/FontRenderContext
+java/awt/RenderingHints
+sun/awt/SunHints
+sun/awt/SunHints$Key
+java/awt/RenderingHints$Key
+sun/awt/SunHints$Value
+sun/awt/SunHints$LCDContrastKey
+sun/font/Type1Font
+java/awt/geom/Point2D$Float
+java/awt/geom/Point2D
+sun/font/StrikeMetrics
+java/awt/geom/Rectangle2D$Float
+java/awt/geom/Rectangle2D
+java/awt/geom/RectangularShape
+java/awt/Shape
+java/awt/geom/GeneralPath
+java/awt/geom/Path2D$Float
+java/awt/geom/Path2D
+sun/font/CharToGlyphMapper
+sun/font/PhysicalStrike
+sun/font/FontStrike
+sun/font/GlyphList
+sun/font/StrikeCache
+sun/java2d/Disposer
+sun/java2d/Disposer$1
+sun/font/StrikeCache$1
+sun/font/FontManager$FontRegistrationInfo
+sun/awt/motif/MFontConfiguration
+sun/awt/FontConfiguration
+sun/awt/FontDescriptor
+java/io/DataInputStream
+java/io/DataInput
+java/lang/Short$ShortCache
+java/util/HashMap$KeyIterator
+sun/font/CompositeFontDescriptor
+sun/font/Font2DHandle
+sun/font/FontFamily
+java/awt/GraphicsDevice
+sun/awt/X11GraphicsDevice
+sun/awt/X11GraphicsConfig
+java/awt/GraphicsConfiguration
+java/awt/ImageCapabilities
+sun/java2d/x11/X11SurfaceData
+sun/java2d/SurfaceData
+java/awt/Transparency
+sun/java2d/DisposerTarget
+sun/java2d/InvalidPipeException
+java/lang/IllegalStateException
+sun/java2d/NullSurfaceData
+sun/java2d/loops/SurfaceType
+sun/awt/image/PixelConverter
+sun/awt/image/PixelConverter$Xrgb
+sun/awt/image/PixelConverter$Argb
+sun/awt/image/PixelConverter$ArgbPre
+sun/awt/image/PixelConverter$Xbgr
+sun/awt/image/PixelConverter$Rgba
+sun/awt/image/PixelConverter$RgbaPre
+sun/awt/image/PixelConverter$Ushort565Rgb
+sun/awt/image/PixelConverter$Ushort555Rgb
+sun/awt/image/PixelConverter$Ushort555Rgbx
+sun/awt/image/PixelConverter$Ushort4444Argb
+sun/awt/image/PixelConverter$ByteGray
+sun/awt/image/PixelConverter$UshortGray
+sun/awt/image/PixelConverter$Rgbx
+sun/awt/image/PixelConverter$Bgrx
+sun/awt/image/PixelConverter$ArgbBm
+java/awt/image/ColorModel
+java/awt/image/DirectColorModel
+java/awt/image/PackedColorModel
+java/awt/color/ColorSpace
+java/awt/color/ICC_Profile
+sun/awt/color/ProfileDeferralInfo
+sun/awt/color/ProfileDeferralMgr
+java/awt/color/ICC_ProfileRGB
+java/awt/color/ICC_Profile$1
+sun/awt/color/ProfileActivator
+java/awt/color/ICC_ColorSpace
+sun/java2d/pipe/NullPipe
+sun/java2d/pipe/PixelDrawPipe
+sun/java2d/pipe/PixelFillPipe
+sun/java2d/pipe/ShapeDrawPipe
+sun/java2d/pipe/TextPipe
+sun/java2d/pipe/DrawImagePipe
+java/awt/image/IndexColorModel
+sun/java2d/pipe/LoopPipe
+sun/java2d/pipe/OutlineTextRenderer
+sun/java2d/pipe/SolidTextRenderer
+sun/java2d/pipe/GlyphListLoopPipe
+sun/java2d/pipe/GlyphListPipe
+sun/java2d/pipe/AATextRenderer
+sun/java2d/pipe/LCDTextRenderer
+sun/java2d/pipe/AlphaColorPipe
+sun/java2d/pipe/CompositePipe
+sun/java2d/pipe/PixelToShapeConverter
+sun/java2d/pipe/TextRenderer
+sun/java2d/pipe/SpanClipRenderer
+sun/java2d/pipe/Region
+sun/java2d/pipe/RegionIterator
+sun/java2d/pipe/DuctusShapeRenderer
+sun/java2d/pipe/DuctusRenderer
+sun/java2d/pipe/AlphaPaintPipe
+sun/java2d/pipe/SpanShapeRenderer$Composite
+sun/java2d/pipe/SpanShapeRenderer
+sun/java2d/pipe/GeneralCompositePipe
+sun/java2d/pipe/DrawImage
+sun/java2d/loops/RenderCache
+sun/java2d/loops/RenderCache$Entry
+sun/java2d/loops/XORComposite
+java/awt/Composite
+sun/font/X11TextRenderer
+sun/java2d/loops/GraphicsPrimitive
+sun/java2d/x11/X11PMBlitLoops
+sun/java2d/loops/Blit
+sun/java2d/loops/GraphicsPrimitiveMgr
+sun/java2d/loops/CompositeType
+sun/java2d/SunGraphics2D
+sun/awt/ConstrainableGraphics
+java/awt/Graphics2D
+java/awt/Graphics
+java/awt/Color
+java/awt/Paint
+java/awt/AlphaComposite
+sun/java2d/loops/BlitBg
+sun/java2d/loops/ScaledBlit
+sun/java2d/loops/FillRect
+sun/java2d/loops/FillSpans
+sun/java2d/loops/DrawLine
+sun/java2d/loops/DrawRect
+sun/java2d/loops/DrawPolygons
+sun/java2d/loops/DrawPath
+sun/java2d/loops/FillPath
+sun/java2d/loops/MaskBlit
+sun/java2d/loops/MaskFill
+sun/java2d/loops/DrawGlyphList
+sun/java2d/loops/DrawGlyphListAA
+sun/java2d/loops/DrawGlyphListLCD
+sun/java2d/loops/TransformHelper
+java/awt/BasicStroke
+java/awt/Stroke
+sun/misc/PerformanceLogger
+sun/misc/PerformanceLogger$TimeData
+sun/java2d/pipe/ValidatePipe
+sun/java2d/loops/CustomComponent
+sun/java2d/loops/GraphicsPrimitiveProxy
+sun/java2d/loops/GeneralRenderer
+sun/java2d/loops/GraphicsPrimitiveMgr$1
+sun/java2d/loops/GraphicsPrimitiveMgr$2
+sun/java2d/x11/X11PMBlitLoops$DelegateBlitLoop
+sun/java2d/x11/X11PMBlitBgLoops
+sun/java2d/x11/X11SurfaceData$LazyPipe
+sun/awt/X11GraphicsConfig$X11GCDisposerRecord
+sun/java2d/DisposerRecord
+java/awt/BorderLayout
+java/awt/LayoutManager2
+java/awt/Rectangle
+java/awt/Toolkit$2
+sun/awt/X11/XToolkit
+sun/awt/X11/XConstants
+sun/awt/UNIXToolkit
+java/util/TreeMap
+java/util/NavigableMap
+java/util/SortedMap
+sun/awt/X11/XlibWrapper
+sun/awt/X11/XUtilConstants
+sun/awt/X11/XProtocolConstants
+sun/awt/X11/XCursorFontConstants
+sun/awt/X11/XlibWrapper$1
+sun/awt/X11/XToolkit$4
+sun/awt/X11/XModifierKeymap
+sun/awt/X11/XWrapperBase
+sun/awt/X11/Native
+sun/awt/X11/Native$1
+java/awt/EventQueue
+sun/awt/X11/XToolkit$7
+java/util/EmptyStackException
+java/lang/reflect/InvocationTargetException
+java/awt/EventDispatchThread
+java/awt/event/PaintEvent
+java/awt/event/MouseEvent
+sun/awt/PeerEvent
+java/awt/event/InvocationEvent
+java/awt/ActiveEvent
+java/awt/EventQueueItem
+sun/awt/X11/XToolkit$1
+sun/awt/X11/XToolkit$XErrorHandler
+sun/awt/X11/XToolkit$5
+sun/awt/X11/XEventDispatcher
+sun/awt/SunToolkit$ModalityListenerList
+sun/awt/ModalityListener
+sun/awt/SunToolkit$1
+java/util/MissingResourceException
+java/awt/Queue
+sun/awt/PostEventQueue
+java/util/LinkedList
+java/util/Deque
+java/util/Queue
+java/util/AbstractSequentialList
+java/util/LinkedList$Entry
+sun/awt/X11/AwtScreenData
+sun/awt/X11/XWM
+sun/awt/X11/MWMConstants
+sun/awt/X11/XAtom
+java/awt/Insets
+sun/awt/X11/XWM$1
+sun/awt/X11/XWM$2
+sun/awt/X11/XSetWindowAttributes
+sun/awt/X11/XErrorEvent
+sun/awt/X11/XNETProtocol
+sun/awt/X11/XStateProtocol
+sun/awt/X11/XLayerProtocol
+sun/awt/X11/XProtocol
+sun/awt/X11/XProtocol$1
+java/lang/Long$LongCache
+sun/awt/X11/WindowPropertyGetter
+sun/awt/X11/UnsafeXDisposerRecord
+sun/awt/X11/XPropertyCache
+sun/awt/X11/XWINProtocol
+sun/awt/X11/XAtomList
+sun/awt/X11/XToolkit$3
+java/awt/Window$WindowDisposerRecord
+sun/awt/X11/XAnyEvent
+sun/awt/X11/IXAnyEvent
+java/awt/KeyboardFocusManager
+java/awt/KeyEventDispatcher
+java/awt/KeyEventPostProcessor
+java/awt/AWTKeyStroke
+java/awt/AWTKeyStroke$1
+java/awt/DefaultKeyboardFocusManager
+java/awt/DefaultFocusTraversalPolicy
+java/awt/ContainerOrderFocusTraversalPolicy
+java/awt/FocusTraversalPolicy
+java/awt/MutableBoolean
+java/util/Collections$UnmodifiableSet
+sun/awt/HeadlessToolkit
+sun/awt/X11/XKeyboardFocusManagerPeer
+java/awt/peer/KeyboardFocusManagerPeer
+sun/awt/X11/XKeyboardFocusManagerPeer$1
+sun/awt/X11/XFramePeer
+java/awt/peer/FramePeer
+java/awt/peer/WindowPeer
+java/awt/peer/ContainerPeer
+java/awt/peer/ComponentPeer
+sun/awt/X11/XDecoratedPeer
+sun/awt/X11/XWindowPeer
+sun/awt/X11/XPanelPeer
+java/awt/peer/PanelPeer
+sun/awt/X11/XCanvasPeer
+java/awt/peer/CanvasPeer
+sun/awt/X11/XComponentPeer
+java/awt/dnd/peer/DropTargetPeer
+sun/awt/X11/XWindow
+sun/awt/X11ComponentPeer
+sun/awt/X11/XBaseWindow
+sun/awt/X11/XCreateWindowParams
+sun/awt/X11/XBaseWindow$InitialiseState
+sun/awt/X11/XBaseWindow$StateLock
+sun/awt/X11/AwtGraphicsConfigData
+sun/awt/X11/XVisualInfo
+java/awt/SystemColor
+sun/awt/X11/MotifColorUtilities
+java/util/concurrent/locks/LockSupport
+sun/nio/ch/Interruptible
+java/lang/StringIndexOutOfBoundsException
+java/lang/IndexOutOfBoundsException
+java/lang/StrictMath
+sun/awt/X11/XRepaintArea
+sun/awt/RepaintArea
+sun/awt/X11/XWindowAttributesData
+sun/awt/X11/WindowDimensions
+java/awt/Point
+java/util/TreeMap$Entry
+sun/awt/X11/XRootWindow
+sun/nio/cs/ISO_8859_1
+sun/nio/cs/ISO_8859_1$Encoder
+sun/nio/cs/ISO_8859_1$Decoder
+sun/awt/X11/XPropertyEvent
+sun/awt/X11/XDropTargetEventProcessor
+sun/awt/X11/XDragSourceContextPeer
+sun/awt/X11/XDragSourceProtocolListener
+sun/awt/dnd/SunDragSourceContextPeer
+java/awt/dnd/peer/DragSourceContextPeer
+sun/awt/X11/XAwtState
+sun/awt/X11/XBaseWindow$1
+sun/java2d/x11/X11SurfaceData$X11WindowSurfaceData
+sun/java2d/loops/RenderLoops
+sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
+sun/java2d/DefaultDisposerRecord
+sun/java2d/x11/X11Renderer
+sun/awt/X11/XGlobalCursorManager
+sun/awt/GlobalCursorManager
+sun/awt/X11/XToolkit$6
+java/awt/Cursor$CursorDisposer
+java/awt/AWTException
+java/awt/HeadlessException
+java/lang/UnsupportedOperationException
+sun/reflect/UnsafeLongFieldAccessorImpl
+sun/reflect/UnsafeIntegerFieldAccessorImpl
+sun/awt/X11/XClientMessageEvent
+sun/awt/X11/XIconInfo
+sun/awt/X11/XAWTIcon32_java_icon16_png
+sun/awt/X11/XAWTIcon32_java_icon24_png
+sun/awt/X11/XAWTIcon32_java_icon32_png
+sun/awt/X11/XAWTIcon32_java_icon48_png
+sun/awt/X11/XSizeHints
+sun/awt/X11/XContentWindow
+sun/awt/X11/XFocusProxyWindow
+sun/awt/X11/XWMHints
+java/util/LinkedList$ListItr
+java/util/ListIterator
+sun/awt/SunToolkit$2
+java/awt/image/BufferStrategy
+java/awt/dnd/DropTarget
+java/awt/dnd/DropTargetListener
+java/awt/event/ComponentListener
+java/awt/event/FocusListener
+java/awt/event/HierarchyListener
+java/awt/event/HierarchyBoundsListener
+java/awt/event/KeyListener
+java/awt/event/MouseListener
+java/awt/event/MouseMotionListener
+java/awt/event/MouseWheelListener
+java/awt/event/InputMethodListener
+java/awt/Component$NativeInLightFixer
+java/awt/event/ContainerListener
+javax/accessibility/AccessibleContext
+sun/reflect/UnsafeObjectFieldAccessorImpl
+java/awt/peer/LightweightPeer
+sun/awt/X11/XLabelPeer
+java/awt/peer/LabelPeer
+sun/awt/X11/XQueryTree
+sun/awt/X11/XMapEvent
+sun/awt/X11/XConfigureEvent
+sun/awt/X11/PropMwmHints
+sun/awt/GlobalCursorManager$NativeUpdater
+javax/swing/JFrame
+javax/swing/WindowConstants
+javax/swing/RootPaneContainer
+javax/swing/TransferHandler$HasGetTransferHandler
+javax/swing/JLabel
+javax/swing/SwingConstants
+javax/swing/JComponent
+javax/swing/JComponent$1
+javax/swing/SwingUtilities
+javax/swing/JRootPane
+sun/security/action/GetBooleanAction
+javax/swing/event/EventListenerList
+javax/swing/JPanel
+java/awt/FlowLayout
+javax/swing/UIManager
+javax/swing/UIManager$LookAndFeelInfo
+sun/swing/SwingUtilities2
+sun/swing/SwingUtilities2$LSBCacheEntry
+javax/swing/UIManager$LAFState
+javax/swing/UIDefaults
+javax/swing/MultiUIDefaults
+javax/swing/UIManager$1
+javax/swing/plaf/metal/MetalLookAndFeel
+javax/swing/plaf/basic/BasicLookAndFeel
+javax/swing/LookAndFeel
+sun/swing/DefaultLookup
+javax/swing/plaf/metal/OceanTheme
+javax/swing/plaf/metal/DefaultMetalTheme
+javax/swing/plaf/metal/MetalTheme
+javax/swing/plaf/ColorUIResource
+javax/swing/plaf/UIResource
+sun/swing/PrintColorUIResource
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate
+javax/swing/plaf/FontUIResource
+sun/swing/SwingLazyValue
+javax/swing/UIDefaults$LazyValue
+javax/swing/UIDefaults$ActiveValue
+javax/swing/plaf/InsetsUIResource
+sun/swing/SwingUtilities2$2
+javax/swing/plaf/basic/BasicLookAndFeel$2
+javax/swing/plaf/DimensionUIResource
+javax/swing/UIDefaults$LazyInputMap
+java/lang/Character$CharacterCache
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
+javax/swing/plaf/metal/MetalLookAndFeel$FontActiveValue
+java/awt/print/PrinterJob
+sun/swing/SwingUtilities2$AATextInfo
+sun/awt/X11/XAWTXSettings
+sun/awt/X11/XMSelectionListener
+sun/awt/XSettings
+sun/awt/X11/XMSelection
+sun/awt/X11/XMSelection$1
+sun/awt/X11/XMSelection$3
+sun/awt/XSettings$Update
+java/util/HashMap$EntrySet
+java/util/HashMap$EntryIterator
+javax/swing/plaf/metal/MetalLookAndFeel$AATextListener
+java/beans/PropertyChangeListener
+java/beans/PropertyChangeListenerProxy
+java/util/EventListenerProxy
+sun/awt/EventListenerAggregate
+javax/swing/UIDefaults$ProxyLazyValue
+javax/swing/plaf/metal/OceanTheme$1
+javax/swing/plaf/metal/OceanTheme$2
+javax/swing/plaf/metal/OceanTheme$3
+javax/swing/plaf/metal/OceanTheme$4
+javax/swing/plaf/metal/OceanTheme$5
+javax/swing/plaf/metal/OceanTheme$6
+javax/swing/RepaintManager
+javax/swing/RepaintManager$DisplayChangedHandler
+javax/swing/SwingPaintEventDispatcher
+sun/awt/PaintEventDispatcher
+javax/swing/UIManager$2
+javax/swing/UIManager$3
+java/awt/PopupMenu
+java/awt/Menu
+java/awt/MenuItem
+java/awt/MenuComponent
+java/io/ObjectOutputStream
+java/io/ObjectOutput
+java/io/DataOutput
+java/io/ObjectStreamConstants
+java/io/PrintWriter
+java/io/ObjectInputStream
+java/io/ObjectInput
+java/awt/Event
+java/awt/im/InputContext
+java/awt/event/MouseWheelEvent
+java/awt/BufferCapabilities
+sun/awt/CausedFocusEvent$Cause
+java/awt/PointerInfo
+java/awt/Component$BaselineResizeBehavior
+java/awt/FontMetrics
+java/awt/Image
+java/awt/image/ImageProducer
+java/awt/image/VolatileImage
+java/awt/im/InputMethodRequests
+java/awt/event/FocusEvent
+java/awt/event/InputMethodEvent
+java/awt/event/HierarchyEvent
+javax/accessibility/AccessibleStateSet
+com/sun/swing/internal/plaf/metal/resources/metal
+sun/util/ResourceBundleEnumeration
+com/sun/swing/internal/plaf/basic/resources/basic
+javax/swing/plaf/basic/BasicPanelUI
+javax/swing/plaf/PanelUI
+javax/swing/plaf/ComponentUI
+sun/reflect/misc/MethodUtil
+sun/reflect/misc/MethodUtil$1
+sun/misc/Launcher$1
+sun/misc/URLClassPath$JarLoader$1
+sun/misc/FileURLMapper
+java/util/jar/JarFile
+java/util/zip/ZipFile
+java/util/zip/ZipConstants
+java/util/jar/JavaUtilJarAccessImpl
+sun/misc/JavaUtilJarAccess
+sun/misc/JarIndex
+java/util/zip/ZipEntry
+java/util/jar/JarFile$JarFileEntry
+java/util/jar/JarEntry
+sun/misc/URLClassPath$JarLoader$2
+sun/net/www/protocol/jar/JarURLConnection
+java/net/JarURLConnection
+sun/net/www/protocol/jar/JarFileFactory
+sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
+java/net/HttpURLConnection
+sun/net/www/protocol/jar/URLJarFile
+sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry
+sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream
+java/util/zip/ZipFile$ZipFileInputStream
+java/security/AllPermissionCollection
+java/lang/IllegalAccessException
+javax/swing/JPasswordField
+javax/swing/JTextField
+javax/swing/text/JTextComponent
+javax/swing/Scrollable
+javax/swing/JLayeredPane
+javax/swing/JRootPane$1
+javax/swing/ArrayTable
+javax/swing/JInternalFrame
+javax/swing/JRootPane$RootLayout
+javax/swing/BufferStrategyPaintManager
+javax/swing/RepaintManager$PaintManager
+javax/swing/plaf/metal/MetalRootPaneUI
+javax/swing/plaf/basic/BasicRootPaneUI
+javax/swing/plaf/RootPaneUI
+javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap
+javax/swing/plaf/ComponentInputMapUIResource
+javax/swing/ComponentInputMap
+javax/swing/InputMap
+javax/swing/plaf/InputMapUIResource
+javax/swing/KeyStroke
+java/awt/VKCollection
+sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl
+javax/swing/plaf/basic/LazyActionMap
+javax/swing/plaf/ActionMapUIResource
+javax/swing/ActionMap
+javax/swing/LayoutFocusTraversalPolicy
+javax/swing/SortingFocusTraversalPolicy
+javax/swing/InternalFrameFocusTraversalPolicy
+javax/swing/SwingContainerOrderFocusTraversalPolicy
+javax/swing/SwingDefaultFocusTraversalPolicy
+javax/swing/LayoutComparator
+javax/swing/plaf/metal/MetalLabelUI
+javax/swing/plaf/basic/BasicLabelUI
+javax/swing/plaf/LabelUI
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
+javax/swing/plaf/basic/BasicHTML
+javax/swing/SystemEventQueueUtilities
+javax/swing/SystemEventQueueUtilities$SystemEventQueue
+sun/awt/NullComponentPeer
+java/awt/event/WindowEvent
+java/awt/EventQueue$1
+java/awt/EventDispatchThread$1
+java/awt/Conditional
+java/awt/EventDispatchThread$HierarchyEventFilter
+java/awt/EventFilter$FilterAction
+sun/awt/dnd/SunDropTargetEvent
+java/awt/event/ActionEvent
+sun/awt/X11/XReparentEvent
+sun/awt/X11/XWindowAttributes
+sun/awt/X11/ComponentAccessor
+sun/awt/X11/ComponentAccessor$1
+sun/awt/EventQueueItem
+sun/awt/SunToolkit$3
+javax/swing/SystemEventQueueUtilities$ComponentWorkRequest
+java/applet/Applet
+java/awt/Panel
+sun/awt/X11/XExposeEvent
+java/util/jar/Manifest
+java/io/ByteArrayInputStream
+java/util/jar/Attributes
+java/util/jar/Manifest$FastInputStream
+java/util/jar/Attributes$Name
+sun/misc/ASCIICaseInsensitiveComparator
+java/util/jar/JarVerifier
+java/io/ByteArrayOutputStream
+sun/misc/ExtensionDependency
+java/lang/Package
+sun/security/util/ManifestEntryVerifier
+sun/security/provider/Sun
+java/security/Provider
+java/security/Provider$ServiceKey
+java/security/Provider$EngineDescription
+sun/security/provider/Sun$1
+java/security/Security
+java/security/Security$1
+sun/misc/FloatingDecimal
+sun/misc/FloatingDecimal$1
+java/util/regex/Pattern
+java/util/regex/Pattern$8
+java/util/regex/Pattern$Node
+java/util/regex/Pattern$LastNode
+java/util/regex/Pattern$GroupHead
+java/util/regex/Pattern$GroupTail
+java/util/regex/Pattern$BitClass
+java/util/regex/Pattern$BmpCharProperty
+java/util/regex/Pattern$CharProperty
+java/util/regex/Pattern$Ques
+java/util/regex/Pattern$BranchConn
+java/util/regex/Pattern$Branch
+java/util/regex/Pattern$5
+java/util/regex/Pattern$CharPropertyNames
+java/util/regex/Pattern$CharPropertyNames$1
+java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory
+java/util/regex/Pattern$CharPropertyNames$2
+java/util/regex/Pattern$CharPropertyNames$5
+java/util/regex/Pattern$CharPropertyNames$3
+java/util/regex/Pattern$CharPropertyNames$6
+java/util/regex/Pattern$CharPropertyNames$CloneableProperty
+java/util/regex/Pattern$CharPropertyNames$4
+java/util/regex/Pattern$CharPropertyNames$7
+java/util/regex/Pattern$CharPropertyNames$8
+java/util/regex/Pattern$CharPropertyNames$9
+java/util/regex/Pattern$CharPropertyNames$10
+java/util/regex/Pattern$CharPropertyNames$11
+java/util/regex/Pattern$CharPropertyNames$12
+java/util/regex/Pattern$CharPropertyNames$13
+java/util/regex/Pattern$CharPropertyNames$14
+java/util/regex/Pattern$CharPropertyNames$15
+java/util/regex/Pattern$CharPropertyNames$16
+java/util/regex/Pattern$CharPropertyNames$17
+java/util/regex/Pattern$CharPropertyNames$18
+java/util/regex/Pattern$CharPropertyNames$19
+java/util/regex/Pattern$CharPropertyNames$20
+java/util/regex/Pattern$CharPropertyNames$21
+java/util/regex/Pattern$Ctype
+java/util/regex/Pattern$Curly
+java/util/regex/Pattern$6
+java/util/regex/Pattern$Slice
+java/util/regex/Pattern$Begin
+java/util/regex/Pattern$First
+java/util/regex/Pattern$Start
+java/util/regex/Pattern$TreeInfo
+sun/security/provider/NativePRNG
+java/security/SecureRandomSpi
+sun/security/provider/NativePRNG$1
+sun/security/provider/NativePRNG$RandomIO
+sun/misc/BASE64Decoder
+sun/misc/CharacterDecoder
+sun/security/util/SignatureFileVerifier
+java/awt/event/KeyAdapter
+java/lang/NumberFormatException
+java/lang/IllegalArgumentException
+java/io/FileWriter
+java/net/Authenticator
+java/net/MalformedURLException
+javax/swing/text/Element
+javax/swing/text/Document
+javax/swing/text/PlainDocument
+javax/swing/text/AbstractDocument
+javax/swing/text/GapContent
+javax/swing/text/AbstractDocument$Content
+javax/swing/text/GapVector
+javax/swing/text/GapContent$MarkVector
+javax/swing/text/GapContent$MarkData
+javax/swing/text/StyleContext
+javax/swing/text/AbstractDocument$AttributeContext
+javax/swing/text/StyleConstants
+javax/swing/text/StyleConstants$CharacterConstants
+javax/swing/text/AttributeSet$CharacterAttribute
+javax/swing/text/StyleConstants$FontConstants
+javax/swing/text/AttributeSet$FontAttribute
+javax/swing/text/StyleConstants$ColorConstants
+javax/swing/text/AttributeSet$ColorAttribute
+javax/swing/text/StyleConstants$ParagraphConstants
+javax/swing/text/AttributeSet$ParagraphAttribute
+javax/swing/text/StyleContext$FontKey
+javax/swing/text/SimpleAttributeSet
+javax/swing/text/MutableAttributeSet
+javax/swing/text/AttributeSet
+javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
+javax/swing/text/StyleContext$NamedStyle
+javax/swing/text/Style
+javax/swing/text/SimpleAttributeSet$1
+javax/swing/text/StyleContext$SmallAttributeSet
+javax/swing/text/AbstractDocument$BidiRootElement
+javax/swing/text/AbstractDocument$BranchElement
+javax/swing/text/AbstractDocument$AbstractElement
+javax/swing/tree/TreeNode
+javax/swing/text/AbstractDocument$1
+javax/swing/text/AbstractDocument$BidiElement
+javax/swing/text/AbstractDocument$LeafElement
+javax/swing/text/GapContent$StickyPosition
+javax/swing/text/Position
+javax/swing/text/StyleContext$KeyEnumeration
+javax/swing/text/GapContent$InsertUndo
+javax/swing/undo/AbstractUndoableEdit
+javax/swing/undo/UndoableEdit
+javax/swing/text/AbstractDocument$DefaultDocumentEvent
+javax/swing/event/DocumentEvent
+javax/swing/undo/CompoundEdit
+javax/swing/event/DocumentEvent$EventType
+javax/swing/text/Segment
+java/text/CharacterIterator
+javax/swing/text/Utilities
+javax/swing/text/SegmentCache
+javax/swing/text/SegmentCache$CachedSegment
+javax/swing/event/UndoableEditEvent
+javax/swing/text/AbstractDocument$ElementEdit
+javax/swing/event/DocumentEvent$ElementChange
+java/net/Socket
+java/net/InetAddress
+java/net/InetAddress$Cache
+java/net/InetAddress$Cache$Type
+java/net/InetAddressImplFactory
+java/net/Inet6AddressImpl
+java/net/InetAddressImpl
+java/net/InetAddress$1
+sun/net/spi/nameservice/NameService
+sun/net/util/IPAddressUtil
+java/util/regex/Matcher
+java/util/regex/MatchResult
+java/util/RandomAccessSubList
+java/util/SubList
+java/util/SubList$1
+java/util/AbstractList$ListItr
+java/net/Inet4Address
+java/net/InetSocketAddress
+java/net/SocketAddress
+java/net/Inet4AddressImpl
+java/net/SocksSocketImpl
+java/net/SocksConsts
+java/net/PlainSocketImpl
+java/net/SocketImpl
+java/net/SocketOptions
+java/net/SocketException
+java/net/SocksSocketImpl$5
+java/net/ProxySelector
+sun/net/spi/DefaultProxySelector
+sun/net/spi/DefaultProxySelector$1
+sun/net/NetProperties
+sun/net/NetProperties$1
+sun/net/spi/DefaultProxySelector$NonProxyInfo
+java/util/regex/ASCII
+java/util/regex/Pattern$GroupCurly
+java/net/Inet6Address
+java/net/URI
+java/net/URI$Parser
+java/net/Proxy
+java/net/Proxy$Type
+java/net/ConnectException
+javax/swing/JMenu
+javax/swing/MenuElement
+javax/swing/JMenuItem
+javax/swing/AbstractButton
+java/awt/ItemSelectable
+javax/swing/event/MenuListener
+javax/swing/JCheckBoxMenuItem
+javax/swing/Icon
+javax/swing/JButton
+java/awt/event/WindowListener
+java/net/URLClassLoader$2
+javax/swing/ImageIcon
+javax/swing/ImageIcon$1
+java/awt/MediaTracker
+sun/misc/SoftCache$ValueCell
+sun/awt/image/URLImageSource
+sun/awt/image/InputStreamImageSource
+sun/awt/image/ImageFetchable
+sun/awt/image/ToolkitImage
+java/awt/Image$1
+sun/awt/image/SurfaceManager$ImageAccessor
+sun/awt/image/SurfaceManager
+sun/awt/image/NativeLibLoader
+java/awt/ImageMediaEntry
+java/awt/MediaEntry
+sun/awt/image/ImageRepresentation
+java/awt/image/ImageConsumer
+sun/awt/image/ImageWatched
+sun/awt/image/ImageWatched$Link
+sun/awt/image/ImageWatched$WeakLink
+sun/awt/image/ImageConsumerQueue
+sun/awt/image/ImageFetcher
+sun/awt/image/FetcherInfo
+sun/awt/image/ImageFetcher$1
+sun/awt/image/GifImageDecoder
+sun/awt/image/ImageDecoder
+sun/awt/image/GifFrame
+java/awt/image/Raster
+java/awt/image/DataBufferByte
+java/awt/image/DataBuffer
+java/awt/image/PixelInterleavedSampleModel
+java/awt/image/ComponentSampleModel
+java/awt/image/SampleModel
+sun/awt/image/ByteInterleavedRaster
+sun/awt/image/ByteComponentRaster
+sun/awt/image/SunWritableRaster
+java/awt/image/WritableRaster
+java/awt/image/BufferedImage
+java/awt/image/WritableRenderedImage
+java/awt/image/RenderedImage
+sun/awt/image/IntegerComponentRaster
+sun/awt/image/BytePackedRaster
+java/awt/Canvas
+sun/font/FontDesignMetrics
+sun/font/FontStrikeDesc
+sun/font/CompositeStrike
+sun/font/FontStrikeDisposer
+sun/font/StrikeCache$SoftDisposerRef
+sun/font/StrikeCache$DisposableStrike
+sun/font/TrueTypeFont$TTDisposerRecord
+sun/font/TrueTypeFont$1
+java/io/RandomAccessFile
+sun/nio/ch/FileChannelImpl
+java/nio/channels/FileChannel
+java/nio/channels/ByteChannel
+java/nio/channels/ReadableByteChannel
+java/nio/channels/Channel
+java/nio/channels/WritableByteChannel
+java/nio/channels/GatheringByteChannel
+java/nio/channels/ScatteringByteChannel
+java/nio/channels/spi/AbstractInterruptibleChannel
+java/nio/channels/InterruptibleChannel
+sun/nio/ch/Util
+sun/nio/ch/IOUtil
+sun/nio/ch/FileDispatcher
+sun/nio/ch/NativeDispatcher
+sun/nio/ch/Reflect
+java/nio/MappedByteBuffer
+sun/nio/ch/Reflect$1
+sun/nio/ch/NativeThreadSet
+java/nio/channels/spi/AbstractInterruptibleChannel$1
+sun/nio/ch/NativeThread
+sun/nio/ch/IOStatus
+sun/nio/ch/DirectBuffer
+java/nio/DirectByteBuffer
+java/nio/DirectByteBuffer$Deallocator
+sun/misc/Cleaner
+java/nio/ByteBufferAsIntBufferB
+java/nio/IntBuffer
+sun/font/TrueTypeFont$DirectoryEntry
+java/nio/ByteBufferAsShortBufferB
+java/nio/ShortBuffer
+sun/nio/cs/UTF_16
+sun/nio/cs/UTF_16$Decoder
+sun/nio/cs/UnicodeDecoder
+sun/font/FileFontStrike
+sun/font/FileFont$FileFontDisposer
+sun/font/TrueTypeGlyphMapper
+sun/font/CMap
+sun/font/CMap$NullCMapClass
+sun/font/CMap$CMapFormat4
+java/nio/ByteBufferAsCharBufferB
+sun/font/CMap$CMapFormat12
+java/awt/FontFormatException
+sun/java2d/HeadlessGraphicsEnvironment
+java/nio/charset/Charset$3
+sun/nio/cs/ext/ExtendedCharsets
+sun/nio/cs/AbstractCharsetProvider
+sun/nio/cs/ext/EUC_KR
+sun/nio/cs/ext/EUC_KR$Decoder
+sun/nio/cs/ext/DoubleByteDecoder
+sun/font/NativeFont
+sun/nio/cs/ext/MS950
+sun/nio/cs/ext/MS950$Decoder
+java/lang/CharacterData00
+sun/nio/cs/ext/GBK
+sun/nio/cs/ext/GBK$Decoder
+sun/font/CMap$CMapFormat2
+sun/font/FontDesignMetrics$KeyReference
+sun/awt/image/PNGImageDecoder
+sun/awt/image/PNGFilterInputStream
+java/util/zip/InflaterInputStream
+java/util/zip/Inflater
+sun/reflect/UnsafeBooleanFieldAccessorImpl
+sun/awt/event/IgnorePaintEvent
+java/awt/image/DataBufferInt
+java/awt/image/SinglePixelPackedSampleModel
+sun/awt/image/IntegerInterleavedRaster
+sun/java2d/x11/X11RemoteOffScreenImage
+sun/awt/image/RemoteOffScreenImage
+sun/awt/image/OffScreenImage
+sun/java2d/x11/X11RemoteOffScreenImage$X11RemoteSurfaceManager
+sun/awt/image/OffScreenSurfaceManager
+sun/awt/image/CachingSurfaceManager
+sun/awt/image/RasterListener
+sun/awt/image/BufImgSurfaceData
+sun/java2d/opengl/GLXGraphicsConfig
+sun/java2d/opengl/OGLGraphicsConfig
+sun/java2d/x11/X11SurfaceData$X11PixmapSurfaceData
+sun/awt/image/WritableRasterNative
+sun/awt/image/DataBufferNative
+sun/java2d/SurfaceManagerFactory
+sun/java2d/x11/X11CachingSurfaceManager
+sun/java2d/opengl/GLXSurfaceData
+sun/java2d/opengl/OGLSurfaceData
+sun/font/CompositeGlyphMapper
+sun/java2d/loops/FontInfo
+java/util/Date
+sun/util/calendar/CalendarSystem
+sun/util/calendar/Gregorian
+sun/util/calendar/BaseCalendar
+sun/util/calendar/AbstractCalendar
+java/util/TimeZone
+java/lang/InheritableThreadLocal
+sun/util/calendar/ZoneInfo
+sun/util/calendar/ZoneInfoFile
+sun/util/calendar/ZoneInfoFile$1
+java/util/TimeZone$1
+sun/util/calendar/Gregorian$Date
+sun/util/calendar/BaseCalendar$Date
+sun/util/calendar/CalendarDate
+sun/util/calendar/CalendarUtils
+java/util/TimeZone$DisplayNames
+sun/util/TimeZoneNameUtility
+sun/util/resources/LocaleData
+sun/util/resources/LocaleData$1
+sun/util/resources/LocaleData$LocaleDataResourceBundleControl
+sun/util/LocaleDataMetaInfo
+sun/util/resources/TimeZoneNames
+sun/util/resources/TimeZoneNamesBundle
+sun/util/resources/OpenListResourceBundle
+java/util/ResourceBundle$BundleReference
+sun/util/resources/TimeZoneNames_en
+java/util/spi/TimeZoneNameProvider
+java/util/spi/LocaleServiceProvider
+sun/util/LocaleServiceProviderPool
+sun/util/LocaleServiceProviderPool$1
+java/util/ServiceLoader
+java/util/ServiceLoader$LazyIterator
+java/util/ServiceLoader$1
+java/util/LinkedHashMap$EntryIterator
+sun/misc/URLClassPath$2
+java/lang/ClassLoader$2
+sun/misc/URLClassPath$1
+java/net/URLClassLoader$3
+sun/misc/CompoundEnumeration
+java/net/URLClassLoader$3$1
+java/lang/ProcessBuilder
+java/lang/ProcessImpl
+java/lang/UNIXProcess
+java/lang/Process
+java/lang/UNIXProcess$1
+java/lang/UNIXProcess$DeferredCloseInputStream
+java/lang/UNIXProcess$2
+java/lang/UNIXProcess$2$1
+java/net/ServerSocket
+java/util/Random
+java/util/concurrent/atomic/AtomicLong
+java/lang/InternalError
+java/io/StringReader
+java/lang/SecurityException
+java/io/FilterReader
+java/lang/reflect/Proxy
+java/lang/reflect/InvocationHandler
+java/lang/NoSuchFieldException
+java/lang/InstantiationException
+java/lang/ArrayIndexOutOfBoundsException
+javax/swing/JDialog
+sun/awt/X11/XClipboard
+sun/awt/datatransfer/SunClipboard
+java/awt/datatransfer/Clipboard
+java/awt/datatransfer/SystemFlavorMap
+java/awt/datatransfer/FlavorMap
+java/awt/datatransfer/FlavorTable
+java/awt/datatransfer/SystemFlavorMap$1
+sun/net/ProgressMonitor
+sun/net/DefaultProgressMeteringPolicy
+sun/net/ProgressMeteringPolicy
+java/awt/datatransfer/SystemFlavorMap$2
+java/awt/datatransfer/MimeType
+java/io/Externalizable
+java/awt/datatransfer/MimeTypeParameterList
+sun/awt/datatransfer/DataTransferer
+java/util/Collections$SynchronizedSet
+java/util/Collections$SynchronizedCollection
+java/awt/datatransfer/DataFlavor
+java/awt/datatransfer/DataFlavor$1
+sun/awt/datatransfer/DataTransferer$CharsetComparator
+sun/awt/datatransfer/DataTransferer$IndexedComparator
+sun/nio/cs/UTF_16LE
+sun/nio/cs/UTF_16BE
+sun/nio/cs/US_ASCII
+sun/awt/datatransfer/DataTransferer$DataFlavorComparator
+java/rmi/Remote
+sun/awt/datatransfer/DataTransferer$1
+sun/awt/X11/XDataTransferer
+sun/awt/datatransfer/ToolkitThreadBlockedHandler
+javax/imageio/ImageTypeSpecifier
+sun/awt/X11/XSelection
+sun/security/action/GetIntegerAction
+sun/awt/X11/XSelection$IncrementalTransferHandler
+sun/awt/X11/XSelection$SelectionEventHandler
+java/awt/datatransfer/Transferable
+java/io/EOFException
+java/util/Vector$1
+java/util/zip/ZipFile$1
+java/util/zip/ZipFile$2
+java/util/jar/JarFile$1
+java/util/PropertyResourceBundle
+java/util/ResourceBundle$Control$1
+java/util/Hashtable$EntrySet
+java/lang/IllegalAccessError
+java/text/MessageFormat
+java/text/Format
+java/text/FieldPosition
+java/text/MessageFormat$Field
+java/text/Format$Field
+java/lang/CloneNotSupportedException
+sun/reflect/MethodAccessorGenerator
+sun/reflect/AccessorGenerator
+sun/reflect/ClassFileConstants
+java/lang/Void
+sun/reflect/ByteVectorFactory
+sun/reflect/ByteVectorImpl
+sun/reflect/ByteVector
+sun/reflect/ClassFileAssembler
+sun/reflect/UTF8
+sun/reflect/Label
+sun/reflect/Label$PatchInfo
+sun/reflect/MethodAccessorGenerator$1
+sun/reflect/ClassDefiner
+sun/reflect/ClassDefiner$1
+sun/reflect/BootstrapConstructorAccessorImpl
+java/awt/event/ActionListener
+javax/swing/Timer
+javax/swing/Timer$DoPostEvent
+javax/swing/TimerQueue
+javax/swing/TimerQueue$1
+javax/swing/ToolTipManager
+java/awt/event/MouseAdapter
+javax/swing/ToolTipManager$insideTimerAction
+javax/swing/ToolTipManager$outsideTimerAction
+javax/swing/ToolTipManager$stillInsideTimerAction
+javax/swing/ToolTipManager$Actions
+sun/swing/UIAction
+javax/swing/Action
+javax/swing/ToolTipManager$MoveBeforeEnterListener
+java/awt/event/MouseMotionAdapter
+java/util/Hashtable$ValueCollection
+javax/swing/event/CaretListener
+javax/swing/JToolBar
+javax/swing/JSplitPane
+javax/swing/border/Border
+javax/swing/JToggleButton
+javax/swing/border/EmptyBorder
+javax/swing/border/AbstractBorder
+javax/swing/DefaultButtonModel
+javax/swing/ButtonModel
+javax/swing/AbstractButton$Handler
+javax/swing/event/ChangeListener
+java/awt/event/ItemListener
+javax/swing/plaf/metal/MetalButtonUI
+javax/swing/plaf/basic/BasicButtonUI
+javax/swing/plaf/ButtonUI
+javax/swing/plaf/metal/MetalBorders
+javax/swing/plaf/BorderUIResource$CompoundBorderUIResource
+javax/swing/border/CompoundBorder
+javax/swing/plaf/metal/MetalBorders$ButtonBorder
+javax/swing/plaf/basic/BasicBorders$MarginBorder
+javax/swing/plaf/basic/BasicButtonListener
+java/awt/AWTEventMulticaster
+java/awt/event/WindowFocusListener
+java/awt/event/WindowStateListener
+java/awt/event/AdjustmentListener
+java/awt/event/TextListener
+javax/swing/event/AncestorListener
+java/beans/VetoableChangeListener
+javax/swing/ButtonGroup
+javax/swing/JToggleButton$ToggleButtonModel
+javax/swing/plaf/metal/MetalToggleButtonUI
+javax/swing/plaf/basic/BasicToggleButtonUI
+javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder
+java/awt/CardLayout
+javax/swing/Box
+javax/swing/plaf/metal/MetalBorders$TextFieldBorder
+javax/swing/plaf/metal/MetalBorders$Flush3DBorder
+javax/swing/BoxLayout
+javax/swing/JMenuBar
+javax/swing/DefaultSingleSelectionModel
+javax/swing/SingleSelectionModel
+javax/swing/plaf/basic/BasicMenuBarUI
+javax/swing/plaf/MenuBarUI
+javax/swing/plaf/basic/DefaultMenuLayout
+javax/swing/plaf/metal/MetalBorders$MenuBarBorder
+javax/swing/plaf/basic/BasicMenuBarUI$Handler
+javax/swing/KeyboardManager
+javax/swing/event/MenuEvent
+javax/swing/JMenu$MenuChangeListener
+javax/swing/JMenuItem$MenuItemFocusListener
+javax/swing/plaf/basic/BasicMenuUI
+javax/swing/plaf/basic/BasicMenuItemUI
+javax/swing/plaf/MenuItemUI
+javax/swing/plaf/metal/MetalBorders$MenuItemBorder
+javax/swing/plaf/metal/MetalIconFactory
+javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon
+javax/swing/plaf/basic/BasicMenuUI$Handler
+javax/swing/event/MenuKeyListener
+javax/swing/plaf/basic/BasicMenuItemUI$Handler
+javax/swing/event/MenuDragMouseListener
+javax/swing/event/MouseInputListener
+javax/swing/event/ChangeEvent
+java/awt/event/ContainerEvent
+javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon
+javax/swing/JPopupMenu
+javax/swing/plaf/basic/BasicPopupMenuUI
+javax/swing/plaf/PopupMenuUI
+javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper
+java/awt/event/AWTEventListenerProxy
+java/awt/Toolkit$SelectiveAWTEventListener
+java/awt/Toolkit$ToolkitEventMulticaster
+javax/swing/plaf/basic/BasicLookAndFeel$1
+javax/swing/plaf/metal/MetalBorders$PopupMenuBorder
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener
+javax/swing/event/PopupMenuListener
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener
+javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber
+javax/swing/MenuSelectionManager
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1
+java/awt/event/FocusAdapter
+javax/swing/JMenu$WinListener
+java/awt/event/WindowAdapter
+javax/swing/JPopupMenu$Separator
+javax/swing/JSeparator
+javax/swing/plaf/metal/MetalPopupMenuSeparatorUI
+javax/swing/plaf/metal/MetalSeparatorUI
+javax/swing/plaf/basic/BasicSeparatorUI
+javax/swing/plaf/SeparatorUI
+javax/swing/JComboBox
+javax/swing/event/ListDataListener
+javax/swing/event/CaretEvent
+javax/swing/text/TabExpander
+javax/swing/JScrollBar
+java/awt/Adjustable
+javax/swing/event/MouseInputAdapter
+javax/swing/JScrollBar$ModelListener
+javax/swing/DefaultBoundedRangeModel
+javax/swing/BoundedRangeModel
+javax/swing/plaf/metal/MetalScrollBarUI
+javax/swing/plaf/basic/BasicScrollBarUI
+javax/swing/plaf/ScrollBarUI
+javax/swing/plaf/metal/MetalBumps
+javax/swing/plaf/metal/MetalScrollButton
+javax/swing/plaf/basic/BasicArrowButton
+javax/swing/plaf/basic/BasicScrollBarUI$TrackListener
+javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener
+javax/swing/plaf/basic/BasicScrollBarUI$ModelListener
+javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener
+javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicScrollBarUI$Handler
+javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener
+javax/swing/CellRendererPane
+javax/swing/border/MatteBorder
+sun/font/StandardGlyphVector
+java/awt/font/GlyphVector
+sun/font/StandardGlyphVector$GlyphStrike
+sun/font/CoreMetrics
+sun/font/FontLineMetrics
+java/awt/font/LineMetrics
+javax/swing/ComboBoxModel
+javax/swing/ListModel
+javax/swing/ListCellRenderer
+javax/swing/DefaultComboBoxModel
+javax/swing/MutableComboBoxModel
+javax/swing/AbstractListModel
+javax/swing/JComboBox$1
+javax/swing/AncestorNotifier
+javax/swing/plaf/metal/MetalComboBoxUI
+javax/swing/plaf/basic/BasicComboBoxUI
+javax/swing/plaf/ComboBoxUI
+javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager
+javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager
+javax/swing/plaf/basic/BasicComboPopup
+javax/swing/plaf/basic/ComboPopup
+javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass
+javax/swing/border/LineBorder
+javax/swing/plaf/basic/BasicComboPopup$1
+javax/swing/JList
+javax/swing/DropMode
+javax/swing/DefaultListSelectionModel
+javax/swing/ListSelectionModel
+javax/swing/plaf/basic/BasicListUI
+javax/swing/plaf/ListUI
+javax/swing/plaf/basic/BasicListUI$ListTransferHandler
+javax/swing/TransferHandler
+javax/swing/TransferHandler$TransferAction
+javax/swing/DefaultListCellRenderer$UIResource
+javax/swing/DefaultListCellRenderer
+javax/swing/TransferHandler$SwingDropTarget
+java/awt/dnd/DropTargetContext
+javax/swing/TransferHandler$DropHandler
+javax/swing/TransferHandler$TransferSupport
+javax/swing/plaf/basic/BasicListUI$Handler
+javax/swing/event/ListSelectionListener
+javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag
+javax/swing/plaf/basic/BasicComboPopup$Handler
+javax/swing/JScrollPane
+javax/swing/ScrollPaneConstants
+javax/swing/ScrollPaneLayout$UIResource
+javax/swing/ScrollPaneLayout
+javax/swing/JViewport
+javax/swing/ViewportLayout
+javax/swing/plaf/basic/BasicViewportUI
+javax/swing/plaf/ViewportUI
+javax/swing/JScrollPane$ScrollBar
+javax/swing/JViewport$ViewListener
+java/awt/event/ComponentAdapter
+javax/swing/plaf/metal/MetalScrollPaneUI
+javax/swing/plaf/basic/BasicScrollPaneUI
+javax/swing/plaf/ScrollPaneUI
+javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder
+javax/swing/plaf/basic/BasicScrollPaneUI$Handler
+javax/swing/plaf/metal/MetalScrollPaneUI$1
+javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource
+javax/swing/plaf/basic/BasicComboBoxRenderer
+javax/swing/plaf/metal/MetalComboBoxEditor$UIResource
+javax/swing/plaf/metal/MetalComboBoxEditor
+javax/swing/plaf/basic/BasicComboBoxEditor
+javax/swing/ComboBoxEditor
+javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField
+javax/swing/JTextField$NotifyAction
+javax/swing/text/TextAction
+javax/swing/AbstractAction
+javax/swing/text/JTextComponent$MutableCaretEvent
+javax/swing/plaf/metal/MetalTextFieldUI
+javax/swing/plaf/basic/BasicTextFieldUI
+javax/swing/plaf/basic/BasicTextUI
+javax/swing/text/ViewFactory
+javax/swing/plaf/TextUI
+javax/swing/plaf/basic/BasicTextUI$BasicCursor
+javax/swing/text/DefaultEditorKit
+javax/swing/text/EditorKit
+javax/swing/text/DefaultEditorKit$InsertContentAction
+javax/swing/text/DefaultEditorKit$DeletePrevCharAction
+javax/swing/text/DefaultEditorKit$DeleteNextCharAction
+javax/swing/text/DefaultEditorKit$ReadOnlyAction
+javax/swing/text/DefaultEditorKit$DeleteWordAction
+javax/swing/text/DefaultEditorKit$WritableAction
+javax/swing/text/DefaultEditorKit$CutAction
+javax/swing/text/DefaultEditorKit$CopyAction
+javax/swing/text/DefaultEditorKit$PasteAction
+javax/swing/text/DefaultEditorKit$VerticalPageAction
+javax/swing/text/DefaultEditorKit$PageAction
+javax/swing/text/DefaultEditorKit$InsertBreakAction
+javax/swing/text/DefaultEditorKit$BeepAction
+javax/swing/text/DefaultEditorKit$NextVisualPositionAction
+javax/swing/text/DefaultEditorKit$BeginWordAction
+javax/swing/text/DefaultEditorKit$EndWordAction
+javax/swing/text/DefaultEditorKit$PreviousWordAction
+javax/swing/text/DefaultEditorKit$NextWordAction
+javax/swing/text/DefaultEditorKit$BeginLineAction
+javax/swing/text/DefaultEditorKit$EndLineAction
+javax/swing/text/DefaultEditorKit$BeginParagraphAction
+javax/swing/text/DefaultEditorKit$EndParagraphAction
+javax/swing/text/DefaultEditorKit$BeginAction
+javax/swing/text/DefaultEditorKit$EndAction
+javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction
+javax/swing/text/DefaultEditorKit$InsertTabAction
+javax/swing/text/DefaultEditorKit$SelectWordAction
+javax/swing/text/DefaultEditorKit$SelectLineAction
+javax/swing/text/DefaultEditorKit$SelectParagraphAction
+javax/swing/text/DefaultEditorKit$SelectAllAction
+javax/swing/text/DefaultEditorKit$UnselectAction
+javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction
+javax/swing/text/DefaultEditorKit$DumpModelAction
+javax/swing/plaf/basic/BasicTextUI$TextTransferHandler
+javax/swing/text/Position$Bias
+javax/swing/plaf/basic/BasicTextUI$RootView
+javax/swing/text/View
+javax/swing/plaf/basic/BasicTextUI$UpdateHandler
+javax/swing/event/DocumentListener
+javax/swing/plaf/basic/BasicTextUI$DragListener
+javax/swing/plaf/basic/BasicComboBoxEditor$UIResource
+javax/swing/plaf/basic/BasicTextUI$BasicCaret
+javax/swing/text/DefaultCaret
+javax/swing/text/Caret
+javax/swing/text/DefaultCaret$Handler
+java/awt/datatransfer/ClipboardOwner
+javax/swing/plaf/basic/BasicTextUI$BasicHighlighter
+javax/swing/text/DefaultHighlighter
+javax/swing/text/LayeredHighlighter
+javax/swing/text/Highlighter
+javax/swing/text/Highlighter$Highlight
+javax/swing/text/DefaultHighlighter$DefaultHighlightPainter
+javax/swing/text/LayeredHighlighter$LayerPainter
+javax/swing/text/Highlighter$HighlightPainter
+javax/swing/text/DefaultHighlighter$SafeDamager
+javax/swing/text/FieldView
+javax/swing/text/PlainView
+javax/swing/text/JTextComponent$DefaultKeymap
+javax/swing/text/Keymap
+javax/swing/text/JTextComponent$KeymapWrapper
+javax/swing/text/JTextComponent$KeymapActionMap
+javax/swing/plaf/basic/BasicTextUI$FocusAction
+javax/swing/plaf/basic/BasicTextUI$TextActionWrapper
+javax/swing/JTextArea
+javax/swing/JEditorPane
+javax/swing/JTextField$ScrollRepainter
+javax/swing/plaf/metal/MetalComboBoxEditor$1
+javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder
+javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener
+javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicComboBoxUI$Handler
+javax/swing/plaf/metal/MetalComboBoxButton
+javax/swing/plaf/metal/MetalComboBoxIcon
+javax/swing/plaf/metal/MetalComboBoxButton$1
+javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager
+javax/swing/JComboBox$KeySelectionManager
+javax/swing/JToolBar$DefaultToolBarLayout
+javax/swing/plaf/metal/MetalToolBarUI
+javax/swing/plaf/basic/BasicToolBarUI
+javax/swing/plaf/ToolBarUI
+javax/swing/plaf/metal/MetalBorders$ToolBarBorder
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
+javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder
+javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder
+javax/swing/plaf/basic/BasicBorders$RadioButtonBorder
+javax/swing/plaf/basic/BasicBorders$ButtonBorder
+javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder
+javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener
+javax/swing/plaf/basic/BasicToolBarUI$DockingListener
+javax/swing/plaf/basic/BasicToolBarUI$Handler
+javax/swing/border/EtchedBorder
+javax/swing/JToolBar$Separator
+javax/swing/plaf/basic/BasicToolBarSeparatorUI
+sun/font/FontDesignMetrics$MetricsKey
+sun/awt/color/CMM
+javax/swing/KeyboardManager$ComponentKeyStrokePair
+sun/awt/EmbeddedFrame
+sun/awt/im/InputMethodContext
+java/awt/im/spi/InputMethodContext
+sun/awt/im/InputContext
+sun/awt/im/InputMethodManager
+sun/awt/im/ExecutableInputMethodManager
+sun/awt/X11/XInputMethodDescriptor
+sun/awt/X11InputMethodDescriptor
+java/awt/im/spi/InputMethodDescriptor
+sun/awt/im/InputMethodLocator
+sun/awt/im/ExecutableInputMethodManager$2
+sun/misc/Service
+sun/misc/Service$LazyIterator
+java/util/TreeSet
+java/util/NavigableSet
+java/util/SortedSet
+javax/swing/SizeRequirements
+javax/swing/plaf/basic/BasicGraphicsUtils
+java/awt/event/AdjustmentEvent
+java/awt/MenuBar
+sun/awt/X11/XComponentPeer$2
+java/awt/SequencedEvent
+java/beans/PropertyVetoException
+java/awt/DefaultKeyboardFocusManager$TypeAheadMarker
+java/awt/KeyboardFocusManager$HeavyweightFocusRequest
+java/awt/KeyboardFocusManager$LightweightFocusRequest
+sun/awt/X11/XFocusChangeEvent
+sun/awt/X11/XComponentPeer$1
+sun/awt/X11/XTranslateCoordinates
+sun/awt/KeyboardFocusManagerPeerImpl
+sun/awt/SunToolkit$7
+java/awt/Window$1DisposeAction
+java/awt/LightweightDispatcher$2
+sun/awt/X11/XUnmapEvent
+java/io/StringWriter
+javax/swing/JWindow
+java/io/UnsupportedEncodingException
+java/net/UnknownHostException
+java/nio/channels/SocketChannel
+java/nio/channels/spi/AbstractSelectableChannel
+java/nio/channels/SelectableChannel
+java/net/SocketImplFactory
+javax/swing/UnsupportedLookAndFeelException
+java/lang/UnsatisfiedLinkError
+javax/swing/Box$Filler
+javax/swing/JComponent$2
+sun/net/www/MimeTable
+java/net/FileNameMap
+sun/net/www/MimeTable$1
+sun/net/www/MimeTable$2
+sun/net/www/MimeEntry
+java/net/URLConnection$1
+java/text/SimpleDateFormat
+java/text/DateFormat
+java/text/DateFormat$Field
+java/util/Calendar
+java/util/GregorianCalendar
+sun/util/resources/CalendarData
+sun/util/resources/LocaleNamesBundle
+sun/util/resources/CalendarData_en
+java/text/DateFormatSymbols
+java/text/spi/DateFormatSymbolsProvider
+sun/text/resources/FormatData
+sun/text/resources/FormatData_en
+sun/text/resources/FormatData_en_US
+java/text/NumberFormat
+java/text/spi/NumberFormatProvider
+java/text/DecimalFormatSymbols
+java/text/spi/DecimalFormatSymbolsProvider
+java/util/Currency
+java/util/Currency$1
+java/util/CurrencyData
+java/util/spi/CurrencyNameProvider
+sun/util/resources/CurrencyNames
+sun/util/resources/CurrencyNames_en_US
+java/text/DecimalFormat
+java/text/DigitList
+java/math/RoundingMode
+java/text/DontCareFieldPosition
+java/text/DontCareFieldPosition$1
+java/text/Format$FieldDelegate
+javax/swing/plaf/BorderUIResource
+javax/swing/BorderFactory
+javax/swing/border/BevelBorder
+javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon
+javax/swing/plaf/metal/MetalIconFactory$FolderIcon16
+java/util/zip/ZipInputStream
+java/io/PushbackInputStream
+java/util/zip/CRC32
+java/util/zip/Checksum
+java/lang/Thread$State
+javax/swing/SwingUtilities$SharedOwnerFrame
+javax/swing/JTable
+javax/swing/event/TableModelListener
+javax/swing/event/TableColumnModelListener
+javax/swing/event/CellEditorListener
+javax/swing/event/RowSorterListener
+java/awt/GraphicsCallback$PaintCallback
+java/awt/GraphicsCallback
+sun/awt/SunGraphicsCallback
+javax/swing/BufferStrategyPaintManager$BufferInfo
+java/awt/Component$BltSubRegionBufferStrategy
+sun/awt/SubRegionShowable
+java/awt/Component$BltBufferStrategy
+sun/awt/image/SunVolatileImage
+sun/awt/image/BufferedImageGraphicsConfig
+sun/print/PrinterGraphicsConfig
+sun/awt/image/VolatileSurfaceManager
+javax/swing/JRadioButton
+java/lang/ClassFormatError
+java/awt/print/PrinterGraphics
+java/awt/PrintGraphics
+javax/swing/JTabbedPane
+javax/swing/JTabbedPane$ModelListener
+javax/swing/plaf/metal/MetalTabbedPaneUI
+javax/swing/plaf/basic/BasicTabbedPaneUI
+javax/swing/plaf/TabbedPaneUI
+javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$Handler
+sun/swing/ImageIconUIResource
+javax/swing/GrayFilter
+java/awt/image/RGBImageFilter
+java/awt/image/ImageFilter
+java/awt/image/FilteredImageSource
+org/w3c/dom/Node
+org/xml/sax/SAXException
+javax/xml/parsers/ParserConfigurationException
+org/xml/sax/EntityResolver
+java/security/NoSuchAlgorithmException
+java/security/GeneralSecurityException
+java/util/zip/GZIPInputStream
+java/util/zip/DeflaterOutputStream
+org/xml/sax/InputSource
+javax/xml/parsers/DocumentBuilderFactory
+javax/xml/parsers/FactoryFinder
+javax/xml/parsers/SecuritySupport
+javax/xml/parsers/SecuritySupport$2
+javax/xml/parsers/SecuritySupport$5
+javax/xml/parsers/SecuritySupport$1
+javax/xml/parsers/SecuritySupport$4
+javax/xml/parsers/DocumentBuilder
+org/w3c/dom/Document
+org/xml/sax/helpers/DefaultHandler
+org/xml/sax/DTDHandler
+org/xml/sax/ContentHandler
+org/xml/sax/ErrorHandler
+org/xml/sax/SAXNotSupportedException
+org/xml/sax/Locator
+org/xml/sax/SAXNotRecognizedException
+org/xml/sax/SAXParseException
+org/w3c/dom/NodeList
+org/w3c/dom/events/EventTarget
+org/w3c/dom/traversal/DocumentTraversal
+org/w3c/dom/events/DocumentEvent
+org/w3c/dom/ranges/DocumentRange
+org/w3c/dom/Entity
+org/w3c/dom/Element
+org/w3c/dom/CharacterData
+org/w3c/dom/CDATASection
+org/w3c/dom/Text
+org/xml/sax/AttributeList
+org/w3c/dom/DOMException
+org/w3c/dom/Notation
+org/w3c/dom/DocumentType
+org/w3c/dom/Attr
+org/w3c/dom/EntityReference
+org/w3c/dom/ProcessingInstruction
+org/w3c/dom/Comment
+org/w3c/dom/DocumentFragment
+org/w3c/dom/events/Event
+org/w3c/dom/events/MutationEvent
+org/w3c/dom/traversal/TreeWalker
+org/w3c/dom/ranges/Range
+org/w3c/dom/traversal/NodeIterator
+org/w3c/dom/events/EventException
+org/w3c/dom/NamedNodeMap
+java/awt/GridLayout
+javax/swing/plaf/metal/MetalRadioButtonUI
+javax/swing/plaf/basic/BasicRadioButtonUI
+javax/swing/plaf/basic/BasicBorders
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon
+java/awt/event/ItemEvent
+java/awt/CardLayout$Card
+javax/swing/JCheckBox
+javax/swing/event/ListSelectionEvent
+javax/swing/plaf/metal/MetalCheckBoxUI
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon
+java/lang/ExceptionInInitializerError
+com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
+javax/swing/JProgressBar
+javax/swing/JProgressBar$ModelListener
+javax/swing/plaf/metal/MetalProgressBarUI
+javax/swing/plaf/basic/BasicProgressBarUI
+javax/swing/plaf/ProgressBarUI
+javax/swing/plaf/BorderUIResource$LineBorderUIResource
+javax/swing/plaf/basic/BasicProgressBarUI$Handler
+javax/swing/tree/TreeModel
+javax/swing/table/TableCellRenderer
+javax/swing/table/JTableHeader
+javax/swing/event/TreeExpansionListener
+javax/swing/table/AbstractTableModel
+javax/swing/table/TableModel
+javax/swing/table/DefaultTableCellRenderer
+javax/swing/JTree
+javax/swing/tree/TreeSelectionModel
+javax/swing/tree/DefaultTreeCellRenderer
+javax/swing/tree/TreeCellRenderer
+javax/swing/table/TableCellEditor
+javax/swing/CellEditor
+javax/swing/JToolTip
+javax/swing/table/TableColumn
+javax/swing/table/DefaultTableColumnModel
+javax/swing/table/TableColumnModel
+javax/swing/table/DefaultTableModel
+javax/swing/event/TableModelEvent
+sun/swing/table/DefaultTableCellHeaderRenderer
+javax/swing/plaf/basic/BasicTableHeaderUI
+javax/swing/plaf/TableHeaderUI
+javax/swing/plaf/basic/BasicTableHeaderUI$1
+javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler
+javax/swing/DefaultCellEditor
+javax/swing/tree/TreeCellEditor
+javax/swing/AbstractCellEditor
+javax/swing/plaf/basic/BasicTableUI
+javax/swing/plaf/TableUI
+javax/swing/plaf/basic/BasicTableUI$TableTransferHandler
+javax/swing/plaf/basic/BasicTableUI$Handler
+javax/swing/tree/DefaultTreeSelectionModel
+javax/swing/tree/TreePath
+javax/swing/plaf/metal/MetalTreeUI
+javax/swing/plaf/basic/BasicTreeUI
+javax/swing/plaf/TreeUI
+javax/swing/plaf/basic/BasicTreeUI$Actions
+javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler
+javax/swing/plaf/metal/MetalTreeUI$LineListener
+javax/swing/plaf/basic/BasicTreeUI$Handler
+javax/swing/event/TreeModelListener
+javax/swing/event/TreeSelectionListener
+javax/swing/event/SwingPropertyChangeSupport
+javax/swing/tree/VariableHeightLayoutCache
+javax/swing/tree/AbstractLayoutCache
+javax/swing/tree/RowMapper
+javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler
+javax/swing/tree/AbstractLayoutCache$NodeDimensions
+javax/swing/JTree$TreeModelHandler
+javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
+javax/swing/tree/DefaultMutableTreeNode
+javax/swing/tree/MutableTreeNode
+javax/swing/tree/DefaultMutableTreeNode$1
+javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
+javax/swing/event/TableColumnModelEvent
+java/text/ParseException
+java/text/NumberFormat$Field
+javax/swing/event/UndoableEditListener
+javax/swing/filechooser/FileFilter
+javax/swing/tree/DefaultTreeModel
+javax/swing/tree/DefaultTreeCellEditor
+javax/swing/tree/DefaultTreeCellEditor$1
+javax/swing/tree/DefaultTreeCellEditor$DefaultTextField
+javax/swing/DefaultCellEditor$1
+javax/swing/DefaultCellEditor$EditorDelegate
+javax/swing/tree/DefaultTreeCellEditor$EditorContainer
+javax/swing/JTree$TreeSelectionRedirector
+javax/swing/event/TreeModelEvent
+javax/swing/plaf/metal/MetalSplitPaneUI
+javax/swing/plaf/basic/BasicSplitPaneUI
+javax/swing/plaf/SplitPaneUI
+javax/swing/plaf/basic/BasicSplitPaneDivider
+javax/swing/plaf/basic/BasicBorders$SplitPaneBorder
+javax/swing/plaf/metal/MetalSplitPaneDivider
+javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout
+javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler
+javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder
+javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager
+javax/swing/plaf/basic/BasicSplitPaneUI$1
+javax/swing/plaf/basic/BasicSplitPaneUI$Handler
+javax/swing/plaf/metal/MetalSplitPaneDivider$1
+javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler
+javax/swing/plaf/metal/MetalSplitPaneDivider$2
+javax/swing/border/TitledBorder
+javax/swing/plaf/basic/BasicTextAreaUI
+java/util/Collections$UnmodifiableCollection$1
+java/io/InterruptedIOException
+java/net/NoRouteToHostException
+java/net/BindException
+javax/swing/tree/PathPlaceHolder
+javax/swing/event/TreeSelectionEvent
+javax/swing/JList$3
+javax/swing/JList$ListSelectionHandler
+javax/swing/JSlider
+javax/swing/JSlider$ModelListener
+javax/swing/plaf/metal/MetalSliderUI
+javax/swing/plaf/basic/BasicSliderUI
+javax/swing/plaf/SliderUI
+javax/swing/plaf/basic/BasicSliderUI$Actions
+javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon
+javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon
+javax/swing/plaf/basic/BasicSliderUI$TrackListener
+javax/swing/plaf/basic/BasicSliderUI$Handler
+javax/swing/plaf/basic/BasicSliderUI$ScrollListener
+javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener
+javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
+java/util/Hashtable$KeySet
+sun/java2d/SunGraphicsEnvironment$5
+sun/font/Type1Font$1
+java/nio/channels/FileChannel$MapMode
+sun/nio/ch/FileChannelImpl$Unmapper
+sun/nio/ch/Util$3
+java/nio/DirectByteBufferR
+sun/nio/cs/US_ASCII$Decoder
+sun/font/Type1Font$2
+sun/font/Type1GlyphMapper
+javax/swing/DefaultListModel
+javax/swing/event/ListDataEvent
+javax/sound/sampled/DataLine
+javax/sound/sampled/Line
+javax/sound/sampled/Line$Info
+javax/sound/sampled/DataLine$Info
+javax/sound/sampled/Control$Type
+javax/sound/sampled/FloatControl$Type
+javax/sound/sampled/LineUnavailableException
+javax/sound/sampled/UnsupportedAudioFileException
+javax/swing/JRadioButtonMenuItem
+javax/swing/JMenuItem$AccessibleJMenuItem
+javax/swing/AbstractButton$AccessibleAbstractButton
+javax/accessibility/AccessibleAction
+javax/accessibility/AccessibleValue
+javax/accessibility/AccessibleText
+javax/accessibility/AccessibleExtendedComponent
+javax/accessibility/AccessibleComponent
+javax/swing/JComponent$AccessibleJComponent
+java/awt/Container$AccessibleAWTContainer
+java/awt/Component$AccessibleAWTComponent
+javax/accessibility/AccessibleRelationSet
+javax/accessibility/AccessibleState
+javax/accessibility/AccessibleBundle
+javax/swing/plaf/basic/BasicCheckBoxMenuItemUI
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon
+javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem
+javax/swing/plaf/basic/BasicRadioButtonMenuItemUI
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon
+sun/awt/image/ImageDecoder$1
+javax/swing/JTabbedPane$Page
+java/net/DatagramSocket
+java/net/MulticastSocket
+java/net/DatagramPacket
+sun/net/InetAddressCachePolicy
+sun/net/InetAddressCachePolicy$1
+sun/net/InetAddressCachePolicy$2
+java/net/InetAddress$CacheEntry
+java/net/PlainDatagramSocketImpl
+java/net/DatagramSocketImpl
+java/net/NetworkInterface
+java/net/InterfaceAddress
+java/text/Collator
+java/text/spi/CollatorProvider
+sun/text/resources/CollationData
+sun/text/resources/CollationData_en
+sun/util/EmptyListResourceBundle
+java/text/RuleBasedCollator
+java/text/CollationRules
+java/text/RBCollationTables
+java/text/RBTableBuilder
+java/text/RBCollationTables$BuildAPI
+sun/text/IntHashtable
+sun/text/UCompactIntArray
+sun/text/normalizer/NormalizerImpl
+sun/text/normalizer/ICUData
+sun/text/normalizer/NormalizerDataReader
+sun/text/normalizer/ICUBinary$Authenticate
+sun/text/normalizer/ICUBinary
+sun/text/normalizer/NormalizerImpl$FCDTrieImpl
+sun/text/normalizer/Trie$DataManipulate
+sun/text/normalizer/NormalizerImpl$NormTrieImpl
+sun/text/normalizer/NormalizerImpl$AuxTrieImpl
+sun/text/normalizer/IntTrie
+sun/text/normalizer/Trie
+sun/text/normalizer/CharTrie
+sun/text/normalizer/CharTrie$FriendAgent
+sun/text/normalizer/UnicodeSet
+sun/text/normalizer/UnicodeMatcher
+sun/text/normalizer/NormalizerImpl$DecomposeArgs
+java/text/MergeCollation
+java/text/PatternEntry$Parser
+java/text/PatternEntry
+java/text/EntryPair
+sun/text/ComposedCharIter
+sun/text/normalizer/UTF16
+sun/net/www/protocol/http/Handler
+java/io/ObjectInputStream$BlockDataInputStream
+java/io/ObjectInputStream$PeekInputStream
+java/io/ObjectInputStream$HandleTable
+java/io/ObjectInputStream$HandleTable$HandleList
+java/io/ObjectInputStream$ValidationList
+java/io/Bits
+java/io/ObjectStreamClass$Caches
+java/io/ObjectStreamClass$WeakClassKey
+java/io/ObjectStreamClass$EntryFuture
+java/io/ObjectStreamClass$2
+sun/reflect/SerializationConstructorAccessorImpl
+java/io/ObjectStreamClass$FieldReflectorKey
+java/io/ObjectStreamClass$FieldReflector
+java/io/ObjectStreamClass$1
+java/io/DataOutputStream
+java/io/ObjectStreamClass$MemberSignature
+java/io/ObjectStreamClass$3
+java/io/ObjectStreamClass$4
+java/io/ObjectStreamClass$5
+java/security/MessageDigest
+java/security/MessageDigestSpi
+sun/security/jca/GetInstance
+sun/security/jca/Providers
+sun/security/jca/ProviderList
+sun/security/jca/ProviderConfig
+sun/security/jca/ProviderList$3
+sun/security/jca/ProviderList$1
+sun/security/jca/ProviderList$2
+sun/security/jca/ProviderConfig$2
+sun/security/jca/ProviderConfig$4
+sun/security/util/PropertyExpander
+sun/security/jca/ProviderConfig$1
+sun/security/jca/ProviderConfig$3
+sun/security/util/ManifestDigester
+sun/security/util/ManifestDigester$Position
+sun/security/util/ManifestDigester$Entry
+sun/security/pkcs/PKCS7
+sun/security/util/DerInputStream
+sun/security/util/DerIndefLenConverter
+sun/security/util/DerInputBuffer
+sun/security/pkcs/ContentInfo
+sun/security/util/ObjectIdentifier
+sun/security/util/DerValue
+sun/security/util/DerOutputStream
+sun/security/util/DerEncoder
+sun/security/util/ByteArrayLexOrder
+sun/security/util/ByteArrayTagOrder
+java/math/BigInteger
+sun/security/x509/AlgorithmId
+java/security/cert/CertificateFactory
+java/security/cert/CertificateFactorySpi
+java/security/Provider$Service
+java/security/Provider$UString
+sun/security/provider/X509Factory
+sun/security/util/Cache
+sun/security/util/MemoryCache
+sun/security/jca/GetInstance$Instance
+java/security/cert/X509Certificate
+java/security/cert/X509Extension
+sun/security/util/Cache$EqualByteArray
+sun/security/x509/X509CertImpl
+sun/security/x509/X509CertInfo
+sun/security/x509/CertAttrSet
+sun/security/x509/CertificateVersion
+sun/security/x509/CertificateSerialNumber
+sun/security/x509/SerialNumber
+sun/security/x509/CertificateAlgorithmId
+sun/security/x509/CertificateIssuerName
+sun/security/x509/X500Name
+sun/security/x509/GeneralNameInterface
+sun/security/x509/X500Name$1
+javax/security/auth/x500/X500Principal
+sun/security/x509/RDN
+sun/security/x509/AVA
+sun/security/x509/CertificateValidity
+sun/security/x509/CertificateSubjectName
+sun/security/x509/CertificateX509Key
+sun/security/x509/X509Key
+java/security/PublicKey
+java/security/Key
+sun/security/util/BitArray
+java/security/spec/X509EncodedKeySpec
+java/security/spec/EncodedKeySpec
+java/security/spec/KeySpec
+java/security/KeyFactory
+sun/security/jca/ProviderList$ServiceList
+sun/security/jca/ProviderList$ServiceList$1
+sun/security/rsa/SunRsaSign
+sun/security/rsa/RSAKeyFactory
+java/security/KeyFactorySpi
+java/security/spec/RSAPublicKeySpec
+java/security/spec/RSAPrivateKeySpec
+java/security/spec/RSAPrivateCrtKeySpec
+java/security/spec/PKCS8EncodedKeySpec
+sun/security/rsa/RSAPublicKeyImpl
+java/security/interfaces/RSAPublicKey
+java/security/interfaces/RSAKey
+sun/security/rsa/RSAPrivateCrtKeyImpl
+java/security/interfaces/RSAPrivateCrtKey
+java/security/interfaces/RSAPrivateKey
+java/security/PrivateKey
+sun/security/pkcs/PKCS8Key
+sun/security/x509/CertificateExtensions
+sun/security/x509/Extension
+sun/security/x509/OIDMap
+sun/security/x509/PKIXExtensions
+sun/security/x509/OIDMap$OIDInfo
+sun/security/x509/NetscapeCertTypeExtension
+sun/security/x509/NetscapeCertTypeExtension$MapEntry
+sun/security/x509/KeyUsageExtension
+sun/security/x509/SubjectKeyIdentifierExtension
+sun/security/x509/KeyIdentifier
+sun/security/x509/AuthorityKeyIdentifierExtension
+sun/security/x509/GeneralNames
+sun/security/x509/SubjectAlternativeNameExtension
+sun/security/x509/GeneralName
+sun/security/x509/RFC822Name
+sun/security/x509/X509AttributeName
+sun/security/util/MemoryCache$SoftCacheEntry
+sun/security/util/MemoryCache$CacheEntry
+java/security/AlgorithmParameters
+java/security/AlgorithmParametersSpi
+sun/security/provider/DSAParameters
+sun/security/provider/DSAKeyFactory
+java/security/spec/DSAPublicKeySpec
+sun/security/provider/DSAPublicKeyImpl
+sun/security/provider/DSAPublicKey
+java/security/interfaces/DSAPublicKey
+java/security/interfaces/DSAKey
+sun/security/x509/BasicConstraintsExtension
+sun/security/pkcs/SignerInfo
+java/security/Signature
+java/security/SignatureSpi
+sun/security/jca/ServiceId
+java/security/Signature$Delegate
+sun/security/x509/AVAKeyword
+sun/security/pkcs/PKCS9Attribute
+java/text/Normalizer$Form
+java/text/Normalizer
+sun/text/normalizer/NormalizerBase
+sun/text/normalizer/NormalizerBase$Mode
+sun/text/normalizer/NormalizerBase$NFDMode
+sun/text/normalizer/NormalizerBase$NFKDMode
+sun/text/normalizer/NormalizerBase$NFCMode
+sun/text/normalizer/NormalizerBase$NFKCMode
+sun/text/normalizer/NormalizerBase$QuickCheckResult
+sun/text/normalizer/NormalizerBase$1
+sun/security/rsa/RSASignature$SHA1withRSA
+sun/security/rsa/RSASignature
+sun/security/provider/SHA
+sun/security/provider/DigestBase
+java/security/MessageDigest$Delegate
+sun/security/rsa/RSACore
+sun/security/rsa/RSAPadding
+sun/security/provider/ByteArrayAccess
+java/math/MutableBigInteger
+sun/security/provider/certpath/X509CertPath
+java/security/cert/CertPath
+java/security/CodeSigner
+sun/misc/CEStreamExhausted
+java/util/jar/JarVerifier$VerifierStream
+java/security/AuthProvider
+java/security/SecurityPermission
+javax/security/auth/login/LoginException
+javax/security/auth/login/FailedLoginException
+java/security/ProviderException
+java/io/StreamTokenizer
+java/lang/AssertionError
+java/io/NotSerializableException
+java/io/ObjectStreamException
+java/security/InvalidParameterException
+java/util/Collections$EmptySet$1
+java/io/ObjectStreamClass$ClassDataSlot
+java/io/ObjectInputStream$CallbackContext
+sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
+java/io/ObjectOutputStream$BlockDataOutputStream
+java/io/ObjectOutputStream$HandleTable
+java/io/ObjectOutputStream$ReplaceTable
+java/security/SignatureException
+java/security/InvalidKeyException
+java/security/KeyException
+java/security/interfaces/DSAParams
+java/io/InvalidClassException
+java/io/ObjectInputStream$GetFieldImpl
+java/io/ObjectInputStream$GetField
+java/security/interfaces/DSAPrivateKey
+java/security/spec/InvalidKeySpecException
+java/security/spec/DSAParameterSpec
+java/security/spec/AlgorithmParameterSpec
+javax/crypto/SecretKey
+sun/security/util/MemoryCache$HardCacheEntry
+java/awt/EventQueue$1AWTInvocationLock
+javax/swing/SystemEventQueueUtilities$RunnableCanvas
+javax/swing/SystemEventQueueUtilities$RunnableCanvasGraphics
+java/awt/Component$FlipBufferStrategy
+java/awt/SentEvent
+sun/awt/X11/XDestroyWindowEvent
+sun/awt/X11/XDropTargetRegistry
+sun/awt/X11/XEmbeddedFramePeer
+sun/awt/X11/XDragAndDropProtocols
+sun/awt/X11/XDropTargetContextPeer
+sun/awt/dnd/SunDropTargetContextPeer
+java/awt/dnd/peer/DropTargetContextPeer
+sun/awt/X11/XDropTargetContextPeer$XDropTargetProtocolListenerImpl
+sun/awt/X11/XDropTargetProtocolListener
+sun/awt/X11/XDnDDragSourceProtocol
+sun/awt/X11/XDragSourceProtocol
+sun/awt/X11/MotifDnDDragSourceProtocol
+sun/awt/X11/XDnDDropTargetProtocol
+sun/awt/X11/XDropTargetProtocol
+sun/awt/X11/MotifDnDDropTargetProtocol
+sun/awt/X11/XDnDConstants
+sun/awt/X11/MotifDnDConstants
+javax/swing/JTable$2
+javax/swing/JTable$Resizable3
+javax/swing/JTable$Resizable2
+javax/swing/JTable$5
+javax/swing/event/AncestorEvent
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel
+javax/swing/plaf/synth/SynthLookAndFeel
+javax/swing/plaf/synth/DefaultSynthStyleFactory
+javax/swing/plaf/synth/SynthStyleFactory
+sun/swing/BakedArrayList
+javax/swing/plaf/synth/SynthLookAndFeel$Handler
+javax/swing/plaf/synth/SynthDefaultLookup
+com/sun/java/swing/plaf/gtk/GTKEngine
+com/sun/java/swing/plaf/gtk/GTKNativeEngine
+javax/swing/plaf/synth/Region
+com/sun/java/swing/plaf/gtk/GTKNativeEngine$WidgetType
+com/sun/java/swing/plaf/gtk/GTKRegion
+sun/swing/ImageCache
+com/sun/java/swing/plaf/gtk/GTKEngine$Settings
+com/sun/java/swing/plaf/gtk/GTKStyleFactory
+com/sun/java/swing/plaf/gtk/PangoFonts
+sun/font/FontManager$FontConfigInfo
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel$WeakPCL
+javax/swing/plaf/synth/SynthLookAndFeel$AATextListener
+com/sun/java/swing/plaf/gtk/GTKNativeStyle
+com/sun/java/swing/plaf/gtk/GTKStyle
+com/sun/java/swing/plaf/gtk/GTKConstants
+javax/swing/plaf/synth/SynthStyle
+javax/swing/plaf/synth/SynthGraphicsUtils
+com/sun/java/swing/plaf/gtk/GTKGraphicsUtils
+com/sun/java/swing/plaf/gtk/GTKStyle$GTKStockIcon
+sun/swing/plaf/synth/SynthIcon
+com/sun/java/swing/plaf/gtk/GTKColorType
+javax/swing/plaf/synth/ColorType
+com/sun/java/swing/plaf/gtk/GTKConstants$StateType
+com/sun/java/swing/plaf/gtk/resources/gtk
+com/sun/swing/internal/plaf/synth/resources/synth
+com/sun/java/swing/plaf/gtk/GTKStyle$GTKLazyValue
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel$1FontLazyValue
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel$2
+com/sun/java/swing/plaf/gtk/GTKLookAndFeel$3
+javax/swing/plaf/synth/SynthPanelUI
+sun/swing/plaf/synth/SynthUI
+javax/swing/plaf/synth/SynthConstants
+javax/swing/plaf/synth/SynthContext
+javax/swing/plaf/synth/SynthBorder
+javax/swing/plaf/synth/SynthRootPaneUI
+javax/swing/plaf/synth/SynthLabelUI
+sun/java2d/x11/X11VolatileSurfaceManager
+javax/swing/plaf/synth/SynthButtonUI
+javax/swing/plaf/synth/SynthToggleButtonUI
+javax/swing/plaf/basic/BasicBorders$FieldBorder
+javax/swing/plaf/synth/SynthMenuBarUI
+javax/swing/plaf/synth/DefaultMenuLayout
+javax/swing/plaf/synth/SynthMenuUI
+com/sun/java/swing/plaf/gtk/GTKIconFactory
+com/sun/java/swing/plaf/gtk/GTKIconFactory$MenuArrowIcon
+com/sun/java/swing/plaf/gtk/GTKIconFactory$DelegatingIcon
+com/sun/java/swing/plaf/gtk/GTKConstants$ArrowType
+javax/swing/plaf/basic/BasicIconFactory
+javax/swing/plaf/basic/BasicIconFactory$MenuItemCheckIcon
+javax/swing/plaf/synth/SynthMenuItemUI
+javax/swing/plaf/synth/SynthPopupMenuUI
+javax/swing/plaf/synth/SynthSeparatorUI
+javax/swing/plaf/synth/SynthScrollBarUI
+javax/swing/plaf/synth/SynthArrowButton
+javax/swing/plaf/synth/SynthArrowButton$SynthArrowButtonUI
+javax/swing/plaf/synth/SynthComboBoxUI
+javax/swing/plaf/synth/SynthComboPopup
+javax/swing/plaf/synth/SynthListUI
+javax/swing/plaf/synth/SynthListUI$SynthListCellRenderer
+javax/swing/plaf/synth/SynthViewportUI
+javax/swing/plaf/synth/SynthScrollPaneUI
+javax/swing/plaf/synth/SynthScrollPaneUI$ViewportBorder
+javax/swing/plaf/synth/SynthComboBoxUI$SynthComboBoxRenderer
+javax/swing/plaf/synth/SynthComboBoxUI$SynthComboBoxEditor
+javax/swing/plaf/synth/SynthTextFieldUI
+javax/swing/plaf/synth/SynthToolBarUI
+javax/swing/plaf/synth/SynthToolBarUI$SynthToolBarLayoutManager
+com/sun/java/swing/plaf/gtk/GTKIconFactory$ToolBarHandleIcon
+com/sun/java/swing/plaf/gtk/GTKConstants$Orientation
+com/sun/java/swing/plaf/gtk/GTKPainter
+javax/swing/plaf/synth/SynthPainter
+javax/swing/plaf/synth/SynthPainter$1
+com/sun/java/swing/plaf/gtk/GTKConstants$PositionType
+com/sun/java/swing/plaf/gtk/GTKConstants$ShadowType
+sun/applet/Main
+sun/applet/AppletMessageHandler
+sun/applet/resources/MsgAppletViewer
+sun/applet/AppletSecurity
+sun/awt/AWTSecurityManager
+java/lang/SecurityManager
+java/security/DomainCombiner
+sun/applet/AppletSecurity$1
+java/lang/SecurityManager$1
+java/util/PropertyPermission
+sun/applet/AppletViewer
+java/applet/AppletContext
+java/awt/print/Printable
+sun/security/util/SecurityConstants
+java/awt/AWTPermission
+java/net/NetPermission
+java/net/SocketPermission
+javax/security/auth/AuthPermission
+java/lang/Thread$1
+java/util/logging/LogManager$5
+java/util/logging/LogManager$6
+sun/applet/StdAppletViewerFactory
+sun/applet/AppletViewerFactory
+sun/applet/AppletViewer$UserActionListener
+sun/applet/AppletViewerPanel
+sun/applet/AppletPanel
+java/applet/AppletStub
+sun/misc/MessageUtils
+sun/applet/AppletPanel$10
+java/security/Policy$1
+sun/security/provider/PolicyFile$1
+sun/security/provider/PolicyInfo
+sun/security/provider/PolicyFile$3
+sun/security/provider/PolicyParser
+sun/security/util/PolicyUtil
+sun/security/provider/PolicyParser$GrantEntry
+sun/security/provider/PolicyParser$PermissionEntry
+sun/security/provider/PolicyFile$PolicyEntry
+sun/security/provider/PolicyFile$6
+sun/security/provider/PolicyFile$7
+sun/security/provider/SelfPermission
+java/net/SocketPermissionCollection
+java/util/PropertyPermissionCollection
+sun/applet/AppletPanel$9
+sun/applet/AppletClassLoader
+sun/applet/AppletClassLoader$4
+sun/applet/AppletThreadGroup
+sun/applet/AppContextCreator
+sun/applet/AppletPanel$1
+sun/awt/X11/XMenuBarPeer
+java/awt/peer/MenuBarPeer
+java/awt/peer/MenuComponentPeer
+sun/awt/X11/XBaseMenuWindow
+sun/awt/X11/XMenuPeer
+java/awt/peer/MenuPeer
+java/awt/peer/MenuItemPeer
+sun/awt/X11/XMenuItemPeer
+java/awt/MenuShortcut
+sun/awt/X11/XMenuWindow
+sun/awt/X11/XMenuBarPeer$1
+sun/awt/AppContext$3
+sun/awt/MostRecentThreadAppContext
+sun/awt/X11/XMenuItemPeer$TextMetrics
+sun/awt/X11/XMenuBarPeer$MappingData
+sun/awt/X11/XBaseMenuWindow$MappingData
+sun/applet/AppletViewer$1
+sun/applet/AppletViewer$1AppletEventListener
+sun/applet/AppletListener
+sun/applet/AppletEventMulticaster
+sun/awt/X11/XBaseMenuWindow$3
+java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent
+sun/awt/CausedFocusEvent
+sun/awt/X11/XWindow$1
+sun/misc/Queue
+sun/misc/QueueElement
+sun/applet/AppletEvent
+sun/applet/AppletClassLoader$1
+java/net/URLClassLoader$4
+sun/applet/AppletClassLoader$2
+javax/swing/JApplet
+java/lang/ClassLoader$1
+sun/security/provider/PolicyFile$5
+java/security/PermissionsEnumerator
+java/util/Collections$1
+sun/applet/AppletPanel$11
+sun/applet/AppletPanel$8
+sun/applet/AppletPanel$2
+sun/applet/AppletPanel$3
+sun/applet/AppletPanel$6
+javax/swing/BufferStrategyPaintManager$1
+# 8662ff6d6adccb91
diff --git a/jdk/make/tools/sharing/classlist.windows b/jdk/make/tools/sharing/classlist.windows
new file mode 100644
index 0000000..6459f9e
--- /dev/null
+++ b/jdk/make/tools/sharing/classlist.windows
@@ -0,0 +1,2263 @@
+java/lang/Object
+java/lang/String
+java/io/Serializable
+java/lang/Comparable
+java/lang/CharSequence
+java/lang/Class
+java/lang/reflect/GenericDeclaration
+java/lang/reflect/Type
+java/lang/reflect/AnnotatedElement
+java/lang/Cloneable
+java/lang/ClassLoader
+java/lang/System
+java/lang/Throwable
+java/lang/Error
+java/lang/ThreadDeath
+java/lang/Exception
+java/lang/RuntimeException
+java/security/ProtectionDomain
+java/security/AccessControlContext
+java/lang/ClassNotFoundException
+java/lang/NoClassDefFoundError
+java/lang/LinkageError
+java/lang/ClassCastException
+java/lang/ArrayStoreException
+java/lang/VirtualMachineError
+java/lang/OutOfMemoryError
+java/lang/StackOverflowError
+java/lang/IllegalMonitorStateException
+java/lang/ref/Reference
+java/lang/ref/SoftReference
+java/lang/ref/WeakReference
+java/lang/ref/FinalReference
+java/lang/ref/PhantomReference
+java/lang/ref/Finalizer
+java/lang/Thread
+java/lang/Runnable
+java/lang/ThreadGroup
+java/lang/Thread$UncaughtExceptionHandler
+java/util/Properties
+java/util/Hashtable
+java/util/Map
+java/util/Dictionary
+java/lang/reflect/AccessibleObject
+java/lang/reflect/Field
+java/lang/reflect/Member
+java/lang/reflect/Method
+java/lang/reflect/Constructor
+sun/reflect/MagicAccessorImpl
+sun/reflect/MethodAccessorImpl
+sun/reflect/MethodAccessor
+sun/reflect/ConstructorAccessorImpl
+sun/reflect/ConstructorAccessor
+sun/reflect/DelegatingClassLoader
+sun/reflect/ConstantPool
+sun/reflect/UnsafeStaticFieldAccessorImpl
+sun/reflect/UnsafeFieldAccessorImpl
+sun/reflect/FieldAccessorImpl
+sun/reflect/FieldAccessor
+java/util/Vector
+java/util/List
+java/util/Collection
+java/lang/Iterable
+java/util/RandomAccess
+java/util/AbstractList
+java/util/AbstractCollection
+java/lang/StringBuffer
+java/lang/AbstractStringBuilder
+java/lang/Appendable
+java/lang/StackTraceElement
+java/nio/Buffer
+java/lang/Boolean
+java/lang/Character
+java/lang/Float
+java/lang/Number
+java/lang/Double
+java/lang/Byte
+java/lang/Short
+java/lang/Integer
+java/lang/Long
+java/lang/NullPointerException
+java/lang/ArithmeticException
+java/io/ObjectStreamField
+java/lang/String$CaseInsensitiveComparator
+java/util/Comparator
+java/lang/RuntimePermission
+java/security/BasicPermission
+java/security/Permission
+java/security/Guard
+sun/misc/SoftCache
+java/util/AbstractMap
+java/lang/ref/ReferenceQueue
+java/lang/ref/ReferenceQueue$Null
+java/lang/ref/ReferenceQueue$Lock
+java/util/HashMap
+java/lang/annotation/Annotation
+java/util/HashMap$Entry
+java/util/Map$Entry
+java/security/AccessController
+java/lang/reflect/ReflectPermission
+sun/reflect/ReflectionFactory$GetReflectionFactoryAction
+java/security/PrivilegedAction
+java/util/Stack
+sun/reflect/ReflectionFactory
+java/lang/ref/Reference$Lock
+java/lang/ref/Reference$ReferenceHandler
+java/lang/ref/Finalizer$FinalizerThread
+java/util/Hashtable$EmptyEnumerator
+java/util/Enumeration
+java/util/Hashtable$EmptyIterator
+java/util/Iterator
+java/util/Hashtable$Entry
+sun/misc/Version
+java/io/FileInputStream
+java/io/InputStream
+java/io/Closeable
+java/io/FileDescriptor
+java/io/FileOutputStream
+java/io/OutputStream
+java/io/Flushable
+java/io/BufferedInputStream
+java/io/FilterInputStream
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
+sun/misc/Unsafe
+java/lang/NoSuchMethodError
+java/lang/IncompatibleClassChangeError
+sun/reflect/Reflection
+java/util/Collections
+java/util/Collections$EmptySet
+java/util/AbstractSet
+java/util/Set
+java/util/Collections$EmptyList
+java/util/Collections$EmptyMap
+java/util/Collections$ReverseComparator
+java/util/Collections$SynchronizedMap
+java/lang/Class$3
+java/lang/reflect/Modifier
+java/lang/reflect/ReflectAccess
+sun/reflect/LangReflectAccess
+sun/reflect/misc/ReflectUtil
+java/io/PrintStream
+java/io/FilterOutputStream
+java/io/BufferedOutputStream
+java/io/OutputStreamWriter
+java/io/Writer
+sun/nio/cs/StreamEncoder
+java/nio/charset/Charset
+sun/nio/cs/StandardCharsets
+sun/nio/cs/FastCharsetProvider
+java/nio/charset/spi/CharsetProvider
+sun/nio/cs/StandardCharsets$Aliases
+sun/util/PreHashedMap
+sun/nio/cs/StandardCharsets$Classes
+sun/nio/cs/StandardCharsets$Cache
+java/lang/ThreadLocal
+java/util/concurrent/atomic/AtomicInteger
+sun/security/action/GetPropertyAction
+java/util/Arrays
+java/lang/Math
+java/lang/StringBuilder
+sun/nio/cs/MS1252
+sun/nio/cs/HistoricallyNamedCharset
+java/lang/Class$1
+sun/reflect/ReflectionFactory$1
+sun/reflect/NativeConstructorAccessorImpl
+sun/reflect/DelegatingConstructorAccessorImpl
+sun/misc/VM
+sun/nio/cs/MS1252$Encoder
+sun/nio/cs/SingleByteEncoder
+java/nio/charset/CharsetEncoder
+java/nio/charset/CodingErrorAction
+sun/nio/cs/MS1252$Decoder
+sun/nio/cs/SingleByteDecoder
+java/nio/charset/CharsetDecoder
+java/nio/ByteBuffer
+java/nio/HeapByteBuffer
+java/nio/Bits
+java/lang/Runtime
+java/nio/ByteOrder
+java/nio/CharBuffer
+java/lang/Readable
+java/nio/HeapCharBuffer
+java/nio/charset/CoderResult
+java/nio/charset/CoderResult$1
+java/nio/charset/CoderResult$Cache
+java/nio/charset/CoderResult$2
+sun/nio/cs/Surrogate$Parser
+sun/nio/cs/Surrogate
+java/io/BufferedWriter
+java/io/File
+java/io/FileSystem
+java/io/WinNTFileSystem
+java/io/Win32FileSystem
+java/io/ExpiringCache
+java/io/ExpiringCache$1
+java/util/LinkedHashMap
+java/util/LinkedHashMap$Entry
+java/io/File$1
+sun/misc/JavaIODeleteOnExitAccess
+sun/misc/SharedSecrets
+java/lang/ClassLoader$3
+java/io/ExpiringCache$Entry
+java/lang/ClassLoader$NativeLibrary
+java/lang/Terminator
+java/lang/Terminator$1
+sun/misc/SignalHandler
+sun/misc/Signal
+sun/misc/NativeSignalHandler
+java/io/Console
+java/io/Console$1
+sun/misc/JavaIOAccess
+java/io/Console$1$1
+java/lang/Shutdown
+java/util/ArrayList
+java/lang/Shutdown$Lock
+java/lang/ApplicationShutdownHooks
+java/util/IdentityHashMap
+sun/misc/OSEnvironment
+sun/io/Win32ErrorMode
+java/lang/System$2
+sun/misc/JavaLangAccess
+java/lang/Compiler
+java/lang/Compiler$1
+sun/misc/Launcher
+sun/misc/Launcher$Factory
+java/net/URLStreamHandlerFactory
+sun/misc/Launcher$ExtClassLoader
+java/net/URLClassLoader
+java/security/SecureClassLoader
+sun/security/util/Debug
+java/net/URLClassLoader$7
+sun/misc/JavaNetAccess
+java/util/StringTokenizer
+sun/misc/Launcher$ExtClassLoader$1
+java/security/PrivilegedExceptionAction
+sun/misc/MetaIndex
+java/io/BufferedReader
+java/io/Reader
+java/io/FileReader
+java/io/InputStreamReader
+sun/nio/cs/StreamDecoder
+java/lang/reflect/Array
+java/util/Locale
+java/util/concurrent/ConcurrentHashMap
+java/util/concurrent/ConcurrentMap
+java/util/concurrent/ConcurrentHashMap$Segment
+java/util/concurrent/locks/ReentrantLock
+java/util/concurrent/locks/Lock
+java/util/concurrent/locks/ReentrantLock$NonfairSync
+java/util/concurrent/locks/ReentrantLock$Sync
+java/util/concurrent/locks/AbstractQueuedSynchronizer
+java/util/concurrent/locks/AbstractOwnableSynchronizer
+java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
+java/util/concurrent/ConcurrentHashMap$HashEntry
+java/lang/CharacterDataLatin1
+java/io/ObjectStreamClass
+sun/net/www/ParseUtil
+java/util/BitSet
+java/net/URL
+java/net/Parts
+sun/net/www/protocol/file/Handler
+java/net/URLStreamHandler
+java/util/HashSet
+sun/misc/URLClassPath
+sun/net/www/protocol/jar/Handler
+sun/misc/Launcher$AppClassLoader
+sun/misc/Launcher$AppClassLoader$1
+java/lang/SystemClassLoaderAction
+java/lang/StringCoding
+java/lang/ThreadLocal$ThreadLocalMap
+java/lang/ThreadLocal$ThreadLocalMap$Entry
+java/lang/StringCoding$StringDecoder
+java/net/URLClassLoader$1
+sun/misc/URLClassPath$3
+sun/misc/URLClassPath$JarLoader
+sun/misc/URLClassPath$Loader
+java/security/PrivilegedActionException
+sun/misc/URLClassPath$FileLoader
+sun/misc/URLClassPath$FileLoader$1
+sun/misc/Resource
+sun/nio/ByteBuffered
+java/security/CodeSource
+java/security/Permissions
+java/security/PermissionCollection
+sun/net/www/protocol/file/FileURLConnection
+sun/net/www/URLConnection
+java/net/URLConnection
+java/net/UnknownContentHandler
+java/net/ContentHandler
+sun/net/www/MessageHeader
+java/io/FilePermission
+java/io/FilePermission$1
+sun/security/provider/PolicyFile
+java/security/Policy
+java/security/Policy$UnsupportedEmptyCollection
+java/io/FilePermissionCollection
+java/security/AllPermission
+java/security/UnresolvedPermission
+java/security/BasicPermissionCollection
+java/security/Principal
+java/security/cert/Certificate
+java/util/AbstractList$Itr
+java/util/IdentityHashMap$KeySet
+java/util/IdentityHashMap$KeyIterator
+java/util/IdentityHashMap$IdentityHashMapIterator
+java/io/DeleteOnExitHook
+java/util/LinkedHashSet
+java/util/HashMap$KeySet
+java/util/LinkedHashMap$KeyIterator
+java/util/LinkedHashMap$LinkedHashIterator
+java/awt/Frame
+java/awt/MenuContainer
+java/awt/Window
+javax/accessibility/Accessible
+java/awt/Container
+java/awt/Component
+java/awt/image/ImageObserver
+java/lang/InterruptedException
+java/awt/Label
+java/util/logging/Logger
+java/util/logging/Handler
+java/util/logging/Level
+java/util/logging/LogManager
+java/util/logging/LogManager$1
+java/beans/PropertyChangeSupport
+java/util/logging/LogManager$LogNode
+java/util/logging/LoggingPermission
+java/util/logging/LogManager$Cleaner
+java/util/logging/LogManager$RootLogger
+java/util/logging/LogManager$2
+java/util/Properties$LineReader
+java/util/Hashtable$Enumerator
+java/beans/PropertyChangeEvent
+java/util/EventObject
+java/awt/Component$AWTTreeLock
+sun/awt/DebugHelper
+sun/awt/NativeLibLoader
+sun/security/action/LoadLibraryAction
+sun/awt/DebugHelperStub
+java/awt/Toolkit
+java/awt/Toolkit$3
+sun/util/CoreResourceBundleControl
+java/util/ResourceBundle$Control
+java/util/Arrays$ArrayList
+java/util/Collections$UnmodifiableRandomAccessList
+java/util/Collections$UnmodifiableList
+java/util/Collections$UnmodifiableCollection
+java/util/ResourceBundle
+java/util/ResourceBundle$1
+java/util/ResourceBundle$RBClassLoader
+java/util/ResourceBundle$RBClassLoader$1
+java/util/ResourceBundle$CacheKey
+java/util/ResourceBundle$LoaderReference
+java/util/ResourceBundle$CacheKeyReference
+java/util/ResourceBundle$SingleFormatControl
+sun/awt/resources/awt
+java/util/ListResourceBundle
+java/awt/Toolkit$1
+java/io/FileNotFoundException
+java/io/IOException
+java/awt/GraphicsEnvironment
+java/awt/GraphicsEnvironment$1
+java/awt/Insets
+sun/awt/windows/WComponentPeer
+java/awt/peer/ComponentPeer
+java/awt/dnd/peer/DropTargetPeer
+sun/awt/DisplayChangedListener
+java/util/EventListener
+sun/awt/windows/WObjectPeer
+java/awt/Font
+java/awt/geom/AffineTransform
+sun/font/AttributeValues
+sun/font/EAttribute
+java/lang/Enum
+java/text/AttributedCharacterIterator$Attribute
+java/lang/Class$4
+sun/reflect/NativeMethodAccessorImpl
+sun/reflect/DelegatingMethodAccessorImpl
+java/awt/font/TextAttribute
+java/lang/Integer$IntegerCache
+java/util/WeakHashMap
+java/util/WeakHashMap$Entry
+java/awt/AWTEvent
+java/awt/Component$DummyRequestFocusController
+sun/awt/RequestFocusController
+java/awt/LayoutManager
+java/awt/LightweightDispatcher
+java/awt/event/AWTEventListener
+java/awt/Dimension
+java/awt/geom/Dimension2D
+java/util/concurrent/atomic/AtomicBoolean
+java/awt/ComponentOrientation
+java/awt/Component$2
+java/lang/NoSuchMethodException
+sun/awt/AppContext
+sun/awt/AppContext$1
+sun/awt/AppContext$2
+sun/awt/MostRecentKeyValue
+java/awt/Cursor
+java/awt/Point
+java/awt/geom/Point2D
+sun/awt/Win32GraphicsEnvironment
+sun/java2d/SunGraphicsEnvironment
+sun/java2d/FontSupport
+sun/java2d/SunGraphicsEnvironment$TTFilter
+java/io/FilenameFilter
+sun/java2d/SunGraphicsEnvironment$T1Filter
+sun/awt/windows/WToolkit
+sun/awt/SunToolkit
+sun/awt/WindowClosingSupport
+sun/awt/WindowClosingListener
+sun/awt/ComponentFactory
+sun/awt/InputMethodSupport
+java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
+java/util/concurrent/locks/Condition
+sun/awt/AWTAutoShutdown
+sun/awt/AWTAutoShutdown$PeerMap
+sun/awt/SunToolkit$6
+java/awt/Dialog$ModalExclusionType
+java/awt/Dialog
+java/awt/Dialog$ModalityType
+java/awt/ModalEventFilter
+java/awt/EventFilter
+sun/reflect/UnsafeFieldAccessorFactory
+sun/awt/windows/WWindowPeer
+java/awt/peer/WindowPeer
+java/awt/peer/ContainerPeer
+sun/awt/windows/WPanelPeer
+java/awt/peer/PanelPeer
+sun/awt/windows/WCanvasPeer
+java/awt/peer/CanvasPeer
+sun/awt/windows/WToolkit$5
+java/awt/Color
+java/awt/Paint
+java/awt/Transparency
+java/awt/GraphicsConfiguration
+java/awt/image/BufferStrategy
+java/awt/dnd/DropTarget
+java/awt/dnd/DropTargetListener
+java/awt/event/ComponentListener
+java/awt/event/FocusListener
+java/awt/event/HierarchyListener
+java/awt/event/HierarchyBoundsListener
+java/awt/event/KeyListener
+java/awt/event/MouseListener
+java/awt/event/MouseMotionListener
+java/awt/event/MouseWheelListener
+java/awt/event/InputMethodListener
+java/awt/EventQueueItem
+java/awt/Component$NativeInLightFixer
+java/awt/event/ContainerListener
+javax/accessibility/AccessibleContext
+sun/awt/windows/WToolkit$6
+java/io/ObjectOutputStream
+java/io/ObjectOutput
+java/io/DataOutput
+java/io/ObjectStreamConstants
+java/io/ObjectInputStream
+java/io/ObjectInput
+java/io/DataInput
+java/awt/HeadlessException
+java/lang/UnsupportedOperationException
+java/awt/Rectangle
+java/awt/Shape
+java/awt/geom/Rectangle2D
+java/awt/geom/RectangularShape
+java/awt/Image
+java/awt/event/KeyEvent
+java/awt/event/InputEvent
+java/awt/event/ComponentEvent
+java/awt/Event
+java/awt/im/InputContext
+java/awt/event/WindowListener
+java/awt/event/WindowStateListener
+java/awt/event/WindowFocusListener
+java/awt/event/WindowEvent
+java/lang/SecurityException
+java/beans/PropertyChangeListener
+java/awt/event/MouseWheelEvent
+java/awt/event/MouseEvent
+java/awt/BufferCapabilities
+java/awt/AWTException
+sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
+sun/java2d/SurfaceData
+sun/java2d/DisposerTarget
+sun/java2d/InvalidPipeException
+java/lang/IllegalStateException
+sun/java2d/NullSurfaceData
+sun/java2d/loops/SurfaceType
+sun/awt/image/PixelConverter
+sun/awt/image/PixelConverter$Xrgb
+sun/awt/image/PixelConverter$Argb
+sun/awt/image/PixelConverter$ArgbPre
+sun/awt/image/PixelConverter$Xbgr
+sun/awt/image/PixelConverter$Rgba
+sun/awt/image/PixelConverter$RgbaPre
+sun/awt/image/PixelConverter$Ushort565Rgb
+sun/awt/image/PixelConverter$Ushort555Rgb
+sun/awt/image/PixelConverter$Ushort555Rgbx
+sun/awt/image/PixelConverter$Ushort4444Argb
+sun/awt/image/PixelConverter$ByteGray
+sun/awt/image/PixelConverter$UshortGray
+sun/awt/image/PixelConverter$Rgbx
+sun/awt/image/PixelConverter$Bgrx
+sun/awt/image/PixelConverter$ArgbBm
+java/awt/image/ColorModel
+java/awt/image/DirectColorModel
+java/awt/image/PackedColorModel
+java/awt/color/ColorSpace
+java/awt/color/ICC_Profile
+sun/awt/color/ProfileDeferralInfo
+sun/awt/color/ProfileDeferralMgr
+java/awt/color/ICC_ProfileRGB
+java/awt/color/ICC_Profile$1
+sun/awt/color/ProfileActivator
+java/awt/color/ICC_ColorSpace
+sun/java2d/pipe/NullPipe
+sun/java2d/pipe/PixelDrawPipe
+sun/java2d/pipe/PixelFillPipe
+sun/java2d/pipe/ShapeDrawPipe
+sun/java2d/pipe/TextPipe
+sun/java2d/pipe/DrawImagePipe
+java/awt/image/IndexColorModel
+sun/java2d/pipe/LoopPipe
+sun/java2d/pipe/OutlineTextRenderer
+sun/java2d/pipe/SolidTextRenderer
+sun/java2d/pipe/GlyphListLoopPipe
+sun/java2d/pipe/GlyphListPipe
+sun/java2d/pipe/AATextRenderer
+sun/java2d/pipe/LCDTextRenderer
+sun/java2d/pipe/AlphaColorPipe
+sun/java2d/pipe/CompositePipe
+sun/java2d/pipe/PixelToShapeConverter
+sun/java2d/pipe/TextRenderer
+sun/java2d/pipe/SpanClipRenderer
+sun/java2d/pipe/Region
+sun/java2d/pipe/RegionIterator
+sun/java2d/pipe/DuctusShapeRenderer
+sun/java2d/pipe/DuctusRenderer
+sun/java2d/pipe/AlphaPaintPipe
+sun/java2d/pipe/SpanShapeRenderer$Composite
+sun/java2d/pipe/SpanShapeRenderer
+sun/java2d/pipe/GeneralCompositePipe
+sun/java2d/pipe/DrawImage
+sun/java2d/loops/RenderCache
+sun/java2d/loops/RenderCache$Entry
+sun/awt/image/SunVolatileImage
+java/awt/image/VolatileImage
+java/awt/ImageCapabilities
+java/awt/Image$1
+sun/awt/image/SurfaceManager$ImageAccessor
+sun/awt/image/SurfaceManager
+sun/awt/image/VolatileSurfaceManager
+sun/java2d/windows/Win32OffScreenSurfaceData
+sun/java2d/windows/WindowsFlags
+sun/java2d/windows/WindowsFlags$1
+sun/java2d/windows/DDBlitLoops
+sun/java2d/loops/Blit
+sun/java2d/loops/GraphicsPrimitive
+sun/java2d/loops/GraphicsPrimitiveMgr
+sun/java2d/loops/CompositeType
+sun/java2d/SunGraphics2D
+sun/awt/ConstrainableGraphics
+java/awt/Graphics2D
+java/awt/Graphics
+sun/java2d/loops/XORComposite
+java/awt/Composite
+java/awt/AlphaComposite
+java/awt/geom/Path2D
+java/awt/geom/Path2D$Float
+sun/awt/SunHints
+sun/java2d/loops/BlitBg
+sun/java2d/loops/ScaledBlit
+sun/java2d/loops/FillRect
+sun/java2d/loops/FillSpans
+sun/java2d/loops/DrawLine
+sun/java2d/loops/DrawRect
+sun/java2d/loops/DrawPolygons
+sun/java2d/loops/DrawPath
+sun/java2d/loops/FillPath
+sun/java2d/loops/MaskBlit
+sun/java2d/loops/MaskFill
+sun/java2d/loops/DrawGlyphList
+sun/java2d/loops/DrawGlyphListAA
+sun/java2d/loops/DrawGlyphListLCD
+sun/java2d/loops/TransformHelper
+java/awt/BasicStroke
+java/awt/Stroke
+sun/misc/PerformanceLogger
+sun/misc/PerformanceLogger$TimeData
+sun/java2d/pipe/ValidatePipe
+sun/awt/SunHints$Key
+java/awt/RenderingHints$Key
+sun/awt/SunHints$Value
+sun/awt/SunHints$LCDContrastKey
+sun/java2d/loops/CustomComponent
+sun/java2d/loops/GraphicsPrimitiveProxy
+sun/java2d/loops/GeneralRenderer
+sun/java2d/loops/GraphicsPrimitiveMgr$1
+sun/java2d/loops/GraphicsPrimitiveMgr$2
+sun/java2d/windows/Win32SurfaceData
+sun/java2d/windows/GDIBlitLoops
+sun/java2d/windows/GDIRenderer
+sun/java2d/windows/DDBlitLoops$DelegateBlitBgLoop
+sun/java2d/windows/DDRenderer
+sun/awt/windows/WToolkit$1
+sun/awt/SunDisplayChanger
+sun/java2d/SunGraphicsEnvironment$1
+sun/font/FontManager
+sun/font/FileFont
+sun/font/PhysicalFont
+sun/font/Font2D
+sun/font/CompositeFont
+java/util/HashMap$Values
+java/util/HashMap$ValueIterator
+java/util/HashMap$HashIterator
+sun/font/FontManager$1
+sun/font/TrueTypeFont
+java/awt/font/FontRenderContext
+java/awt/RenderingHints
+sun/font/Type1Font
+java/awt/geom/Point2D$Float
+sun/font/StrikeMetrics
+java/awt/geom/Rectangle2D$Float
+java/awt/geom/GeneralPath
+sun/font/CharToGlyphMapper
+sun/font/PhysicalStrike
+sun/font/FontStrike
+sun/font/GlyphList
+sun/font/StrikeCache
+sun/java2d/Disposer
+sun/java2d/Disposer$1
+sun/font/StrikeCache$1
+sun/font/FontManager$FontRegistrationInfo
+sun/awt/windows/WFontConfiguration
+sun/awt/FontConfiguration
+sun/awt/FontDescriptor
+java/io/DataInputStream
+java/lang/Short$ShortCache
+java/util/HashMap$KeyIterator
+sun/font/CompositeFontDescriptor
+sun/font/Font2DHandle
+sun/font/FontFamily
+java/awt/GraphicsDevice
+sun/awt/Win32GraphicsDevice
+sun/awt/Win32GraphicsConfig
+java/awt/BorderLayout
+java/awt/LayoutManager2
+java/awt/Toolkit$2
+sun/awt/SunToolkit$ModalityListenerList
+sun/awt/ModalityListener
+sun/awt/SunToolkit$1
+java/util/MissingResourceException
+java/awt/EventQueue
+java/awt/Queue
+sun/awt/PostEventQueue
+sun/awt/windows/WToolkit$ToolkitDisposer
+sun/java2d/DisposerRecord
+sun/awt/windows/WToolkit$2
+sun/awt/windows/WToolkit$3
+java/awt/Window$WindowDisposerRecord
+java/awt/KeyboardFocusManager
+java/awt/KeyEventDispatcher
+java/awt/KeyEventPostProcessor
+java/awt/event/NativeLibLoader
+java/awt/AWTKeyStroke
+java/awt/AWTKeyStroke$1
+java/util/LinkedList
+java/util/Deque
+java/util/Queue
+java/util/AbstractSequentialList
+java/util/LinkedList$Entry
+java/awt/DefaultKeyboardFocusManager
+java/awt/DefaultFocusTraversalPolicy
+java/awt/ContainerOrderFocusTraversalPolicy
+java/awt/FocusTraversalPolicy
+java/awt/MutableBoolean
+java/util/Collections$UnmodifiableSet
+sun/awt/HeadlessToolkit
+sun/awt/KeyboardFocusManagerPeerImpl
+java/awt/peer/KeyboardFocusManagerPeer
+sun/awt/windows/WFramePeer
+java/awt/peer/FramePeer
+sun/awt/RepaintArea
+sun/awt/EmbeddedFrame
+sun/awt/im/InputMethodWindow
+sun/awt/windows/WComponentPeer$2
+sun/awt/PaintEventDispatcher
+java/awt/event/InvocationEvent
+java/awt/ActiveEvent
+java/awt/MenuComponent
+sun/awt/EventQueueItem
+sun/awt/SunToolkit$3
+java/util/EmptyStackException
+java/lang/reflect/InvocationTargetException
+java/awt/event/PaintEvent
+java/awt/EventDispatchThread
+sun/awt/PeerEvent
+java/awt/EventQueue$1
+sun/java2d/loops/RenderLoops
+java/awt/EventDispatchThread$1
+java/awt/Conditional
+java/awt/EventDispatchThread$HierarchyEventFilter
+java/awt/EventFilter$FilterAction
+sun/awt/dnd/SunDragSourceContextPeer
+java/awt/dnd/peer/DragSourceContextPeer
+java/awt/event/InputMethodEvent
+java/awt/event/ActionEvent
+sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
+sun/awt/windows/WFileDialogPeer
+java/awt/peer/FileDialogPeer
+java/awt/peer/DialogPeer
+sun/awt/windows/WPrintDialogPeer
+sun/java2d/DefaultDisposerRecord
+sun/awt/windows/WColor
+sun/awt/windows/WFontPeer
+sun/awt/PlatformFont
+java/awt/peer/FontPeer
+sun/awt/FontConfiguration$1
+sun/awt/windows/WingDings
+sun/awt/windows/WingDings$Encoder
+sun/awt/Symbol
+sun/awt/Symbol$Encoder
+sun/awt/im/InputMethodManager
+sun/awt/im/ExecutableInputMethodManager
+sun/awt/windows/WInputMethodDescriptor
+java/awt/im/spi/InputMethodDescriptor
+sun/awt/im/InputMethodLocator
+sun/awt/im/ExecutableInputMethodManager$2
+sun/misc/Service
+sun/misc/Service$LazyIterator
+java/util/TreeSet
+java/util/NavigableSet
+java/util/SortedSet
+java/util/TreeMap
+java/util/NavigableMap
+java/util/SortedMap
+sun/misc/Launcher$1
+sun/misc/URLClassPath$2
+java/lang/ClassLoader$2
+sun/misc/URLClassPath$1
+java/net/URLClassLoader$3
+sun/misc/CompoundEnumeration
+sun/misc/URLClassPath$JarLoader$1
+sun/misc/FileURLMapper
+java/net/URLClassLoader$3$1
+sun/awt/SunToolkit$2
+sun/reflect/UnsafeObjectFieldAccessorImpl
+java/awt/peer/LightweightPeer
+sun/awt/windows/WLabelPeer
+java/awt/peer/LabelPeer
+java/awt/PopupMenu
+java/awt/Menu
+java/awt/MenuItem
+java/io/PrintWriter
+sun/awt/CausedFocusEvent$Cause
+java/awt/PointerInfo
+java/awt/Component$BaselineResizeBehavior
+java/awt/FontMetrics
+java/awt/image/ImageProducer
+java/awt/im/InputMethodRequests
+java/awt/event/FocusEvent
+java/awt/event/HierarchyEvent
+javax/accessibility/AccessibleStateSet
+java/awt/SequencedEvent
+sun/awt/PlatformFont$PlatformFontCache
+sun/awt/windows/WGlobalCursorManager
+sun/awt/GlobalCursorManager
+sun/awt/GlobalCursorManager$NativeUpdater
+sun/nio/cs/UTF_16LE
+sun/nio/cs/Unicode
+sun/nio/cs/UTF_16LE$Encoder
+sun/nio/cs/UnicodeEncoder
+sun/nio/cs/UTF_16LE$Decoder
+sun/nio/cs/UnicodeDecoder
+sun/awt/event/IgnorePaintEvent
+sun/awt/dnd/SunDropTargetEvent
+java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent
+java/awt/SentEvent
+java/awt/KeyboardFocusManager$HeavyweightFocusRequest
+java/util/LinkedList$ListItr
+java/util/ListIterator
+java/awt/DefaultKeyboardFocusManager$TypeAheadMarker
+java/awt/KeyboardFocusManager$LightweightFocusRequest
+javax/swing/JFrame
+javax/swing/WindowConstants
+javax/swing/RootPaneContainer
+javax/swing/TransferHandler$HasGetTransferHandler
+javax/swing/JLabel
+javax/swing/SwingConstants
+javax/swing/JComponent
+javax/swing/JComponent$1
+javax/swing/SwingUtilities
+javax/swing/JRootPane
+sun/security/action/GetBooleanAction
+javax/swing/event/EventListenerList
+javax/swing/JPanel
+java/awt/FlowLayout
+javax/swing/UIManager
+javax/swing/UIManager$LookAndFeelInfo
+sun/awt/windows/WDesktopProperties
+sun/awt/windows/WDesktopProperties$WinPlaySound
+sun/awt/shell/Win32ShellFolderManager2
+sun/awt/shell/ShellFolderManager
+sun/swing/SwingUtilities2
+sun/swing/SwingUtilities2$LSBCacheEntry
+javax/swing/UIManager$LAFState
+javax/swing/UIDefaults
+javax/swing/MultiUIDefaults
+javax/swing/UIManager$1
+javax/swing/plaf/metal/MetalLookAndFeel
+javax/swing/plaf/basic/BasicLookAndFeel
+javax/swing/LookAndFeel
+sun/swing/DefaultLookup
+javax/swing/plaf/metal/OceanTheme
+javax/swing/plaf/metal/DefaultMetalTheme
+javax/swing/plaf/metal/MetalTheme
+javax/swing/plaf/ColorUIResource
+javax/swing/plaf/UIResource
+sun/swing/PrintColorUIResource
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate
+javax/swing/plaf/FontUIResource
+sun/swing/SwingLazyValue
+javax/swing/UIDefaults$LazyValue
+javax/swing/UIDefaults$ActiveValue
+javax/swing/plaf/InsetsUIResource
+sun/swing/SwingUtilities2$2
+javax/swing/plaf/basic/BasicLookAndFeel$2
+javax/swing/plaf/DimensionUIResource
+javax/swing/UIDefaults$LazyInputMap
+java/lang/Character$CharacterCache
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
+javax/swing/plaf/metal/MetalLookAndFeel$FontActiveValue
+sun/swing/SwingUtilities2$AATextInfo
+java/util/HashMap$EntrySet
+java/util/HashMap$EntryIterator
+javax/swing/plaf/metal/MetalLookAndFeel$AATextListener
+java/beans/PropertyChangeListenerProxy
+java/util/EventListenerProxy
+sun/awt/EventListenerAggregate
+javax/swing/UIDefaults$ProxyLazyValue
+javax/swing/plaf/metal/OceanTheme$1
+javax/swing/plaf/metal/OceanTheme$2
+javax/swing/plaf/metal/OceanTheme$3
+javax/swing/plaf/metal/OceanTheme$4
+javax/swing/plaf/metal/OceanTheme$5
+javax/swing/plaf/metal/OceanTheme$6
+javax/swing/FocusManager
+javax/swing/LayoutFocusTraversalPolicy
+javax/swing/SortingFocusTraversalPolicy
+javax/swing/InternalFrameFocusTraversalPolicy
+javax/swing/SwingContainerOrderFocusTraversalPolicy
+javax/swing/SwingDefaultFocusTraversalPolicy
+javax/swing/LayoutComparator
+javax/swing/RepaintManager
+javax/swing/RepaintManager$DisplayChangedHandler
+javax/swing/SwingPaintEventDispatcher
+javax/swing/UIManager$2
+javax/swing/UIManager$3
+com/sun/swing/internal/plaf/metal/resources/metal
+sun/util/ResourceBundleEnumeration
+com/sun/swing/internal/plaf/basic/resources/basic
+javax/swing/plaf/basic/BasicPanelUI
+javax/swing/plaf/PanelUI
+javax/swing/plaf/ComponentUI
+sun/reflect/misc/MethodUtil
+sun/reflect/misc/MethodUtil$1
+java/util/jar/JarFile
+java/util/zip/ZipFile
+java/util/zip/ZipConstants
+java/util/jar/JavaUtilJarAccessImpl
+sun/misc/JavaUtilJarAccess
+sun/misc/JarIndex
+java/util/zip/ZipEntry
+java/util/jar/JarFile$JarFileEntry
+java/util/jar/JarEntry
+sun/misc/URLClassPath$JarLoader$2
+sun/net/www/protocol/jar/JarURLConnection
+java/net/JarURLConnection
+sun/net/www/protocol/jar/JarFileFactory
+sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
+java/net/HttpURLConnection
+sun/net/www/protocol/jar/URLJarFile
+sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry
+sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream
+java/util/zip/ZipFile$ZipFileInputStream
+java/security/AllPermissionCollection
+java/lang/IllegalAccessException
+javax/swing/JPasswordField
+javax/swing/JTextField
+javax/swing/text/JTextComponent
+javax/swing/Scrollable
+javax/swing/JLayeredPane
+javax/swing/JRootPane$1
+javax/swing/ArrayTable
+javax/swing/JInternalFrame
+javax/swing/JRootPane$RootLayout
+javax/swing/BufferStrategyPaintManager
+javax/swing/RepaintManager$PaintManager
+javax/swing/plaf/metal/MetalRootPaneUI
+javax/swing/plaf/basic/BasicRootPaneUI
+javax/swing/plaf/RootPaneUI
+javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap
+javax/swing/plaf/ComponentInputMapUIResource
+javax/swing/ComponentInputMap
+javax/swing/InputMap
+javax/swing/plaf/InputMapUIResource
+javax/swing/KeyStroke
+java/awt/VKCollection
+sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl
+javax/swing/plaf/basic/LazyActionMap
+javax/swing/plaf/ActionMapUIResource
+javax/swing/ActionMap
+javax/swing/plaf/metal/MetalLabelUI
+javax/swing/plaf/basic/BasicLabelUI
+javax/swing/plaf/LabelUI
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
+java/util/Hashtable$ValueCollection
+java/util/Collections$SynchronizedCollection
+javax/swing/plaf/basic/BasicHTML
+sun/awt/AppContext$PostShutdownEventRunnable
+sun/awt/AWTAutoShutdown$1
+javax/swing/SystemEventQueueUtilities
+javax/swing/SystemEventQueueUtilities$ComponentWorkRequest
+javax/swing/SystemEventQueueUtilities$SystemEventQueue
+sun/awt/NullComponentPeer
+java/awt/GraphicsCallback$PaintCallback
+java/awt/GraphicsCallback
+sun/awt/SunGraphicsCallback
+java/util/jar/Manifest
+java/io/ByteArrayInputStream
+java/util/jar/Attributes
+java/util/jar/Manifest$FastInputStream
+sun/nio/cs/UTF_8
+sun/nio/cs/UTF_8$Decoder
+sun/nio/cs/Surrogate$Generator
+java/util/jar/Attributes$Name
+sun/misc/ASCIICaseInsensitiveComparator
+java/util/jar/JarVerifier
+java/io/ByteArrayOutputStream
+sun/misc/ExtensionDependency
+java/lang/Package
+sun/security/util/ManifestEntryVerifier
+sun/security/provider/Sun
+java/security/Provider
+java/security/Provider$ServiceKey
+java/security/Provider$EngineDescription
+sun/security/provider/Sun$1
+java/security/Security
+java/security/Security$1
+sun/misc/FloatingDecimal
+sun/misc/FloatingDecimal$1
+java/util/regex/Pattern
+java/util/regex/Pattern$8
+java/util/regex/Pattern$Node
+java/util/regex/Pattern$LastNode
+java/util/regex/Pattern$GroupHead
+java/util/regex/Pattern$GroupTail
+java/util/regex/Pattern$BitClass
+java/util/regex/Pattern$BmpCharProperty
+java/util/regex/Pattern$CharProperty
+java/util/regex/Pattern$Ques
+java/util/regex/Pattern$BranchConn
+java/util/regex/Pattern$Branch
+java/util/regex/Pattern$5
+java/util/regex/Pattern$CharPropertyNames
+java/util/regex/Pattern$CharPropertyNames$1
+java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory
+java/util/regex/Pattern$CharPropertyNames$2
+java/util/regex/Pattern$CharPropertyNames$5
+java/util/regex/Pattern$CharPropertyNames$3
+java/util/regex/Pattern$CharPropertyNames$6
+java/util/regex/Pattern$CharPropertyNames$CloneableProperty
+java/util/regex/Pattern$CharPropertyNames$4
+java/util/regex/Pattern$CharPropertyNames$7
+java/util/regex/Pattern$CharPropertyNames$8
+java/util/regex/Pattern$CharPropertyNames$9
+java/util/regex/Pattern$CharPropertyNames$10
+java/util/regex/Pattern$CharPropertyNames$11
+java/util/regex/Pattern$CharPropertyNames$12
+java/util/regex/Pattern$CharPropertyNames$13
+java/util/regex/Pattern$CharPropertyNames$14
+java/util/regex/Pattern$CharPropertyNames$15
+java/util/regex/Pattern$CharPropertyNames$16
+java/util/regex/Pattern$CharPropertyNames$17
+java/util/regex/Pattern$CharPropertyNames$18
+java/util/regex/Pattern$CharPropertyNames$19
+java/util/regex/Pattern$CharPropertyNames$20
+java/util/regex/Pattern$CharPropertyNames$21
+java/util/regex/Pattern$Ctype
+java/util/regex/Pattern$Curly
+java/util/regex/Pattern$6
+java/util/regex/Pattern$Slice
+java/util/regex/Pattern$Begin
+java/util/regex/Pattern$First
+java/util/regex/Pattern$Start
+java/util/regex/Pattern$TreeInfo
+java/lang/StrictMath
+sun/security/provider/NativePRNG
+sun/misc/BASE64Decoder
+sun/misc/CharacterDecoder
+sun/security/util/SignatureFileVerifier
+java/awt/event/KeyAdapter
+java/lang/NumberFormatException
+java/lang/IllegalArgumentException
+java/io/FileWriter
+java/net/Authenticator
+java/net/MalformedURLException
+javax/swing/text/Element
+javax/swing/text/Document
+javax/swing/text/PlainDocument
+javax/swing/text/AbstractDocument
+javax/swing/text/GapContent
+javax/swing/text/AbstractDocument$Content
+javax/swing/text/GapVector
+javax/swing/text/GapContent$MarkVector
+javax/swing/text/GapContent$MarkData
+javax/swing/text/StyleContext
+javax/swing/text/AbstractDocument$AttributeContext
+javax/swing/text/StyleConstants
+javax/swing/text/StyleConstants$CharacterConstants
+javax/swing/text/AttributeSet$CharacterAttribute
+javax/swing/text/StyleConstants$FontConstants
+javax/swing/text/AttributeSet$FontAttribute
+javax/swing/text/StyleConstants$ColorConstants
+javax/swing/text/AttributeSet$ColorAttribute
+javax/swing/text/StyleConstants$ParagraphConstants
+javax/swing/text/AttributeSet$ParagraphAttribute
+javax/swing/text/StyleContext$FontKey
+javax/swing/text/SimpleAttributeSet
+javax/swing/text/MutableAttributeSet
+javax/swing/text/AttributeSet
+javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
+javax/swing/text/StyleContext$NamedStyle
+javax/swing/text/Style
+javax/swing/text/SimpleAttributeSet$1
+javax/swing/text/StyleContext$SmallAttributeSet
+javax/swing/text/AbstractDocument$BidiRootElement
+javax/swing/text/AbstractDocument$BranchElement
+javax/swing/text/AbstractDocument$AbstractElement
+javax/swing/tree/TreeNode
+javax/swing/text/AbstractDocument$1
+javax/swing/text/AbstractDocument$BidiElement
+javax/swing/text/AbstractDocument$LeafElement
+javax/swing/text/GapContent$StickyPosition
+javax/swing/text/Position
+javax/swing/text/StyleContext$KeyEnumeration
+javax/swing/text/GapContent$InsertUndo
+javax/swing/undo/AbstractUndoableEdit
+javax/swing/undo/UndoableEdit
+javax/swing/text/AbstractDocument$DefaultDocumentEvent
+javax/swing/event/DocumentEvent
+javax/swing/undo/CompoundEdit
+javax/swing/event/DocumentEvent$EventType
+javax/swing/text/Segment
+java/text/CharacterIterator
+javax/swing/text/Utilities
+javax/swing/text/SegmentCache
+javax/swing/text/SegmentCache$CachedSegment
+javax/swing/event/UndoableEditEvent
+javax/swing/text/AbstractDocument$ElementEdit
+javax/swing/event/DocumentEvent$ElementChange
+javax/swing/JMenu
+javax/swing/MenuElement
+javax/swing/JMenuItem
+javax/swing/AbstractButton
+java/awt/ItemSelectable
+javax/swing/event/MenuListener
+javax/swing/JCheckBoxMenuItem
+javax/swing/Icon
+javax/swing/JButton
+java/net/URLClassLoader$2
+javax/swing/ImageIcon
+javax/swing/ImageIcon$1
+java/awt/MediaTracker
+sun/misc/SoftCache$ValueCell
+sun/awt/image/URLImageSource
+sun/awt/image/InputStreamImageSource
+sun/awt/image/ImageFetchable
+sun/awt/image/ToolkitImage
+sun/awt/image/NativeLibLoader
+java/awt/ImageMediaEntry
+java/awt/MediaEntry
+sun/awt/image/ImageRepresentation
+java/awt/image/ImageConsumer
+sun/awt/image/ImageWatched
+sun/awt/image/ImageWatched$Link
+sun/awt/image/ImageWatched$WeakLink
+sun/awt/image/ImageConsumerQueue
+sun/awt/image/ImageFetcher
+sun/awt/image/FetcherInfo
+sun/awt/image/ImageFetcher$1
+sun/awt/image/GifImageDecoder
+sun/awt/image/ImageDecoder
+sun/awt/image/GifFrame
+java/awt/image/Raster
+java/awt/image/DataBufferByte
+java/awt/image/DataBuffer
+java/awt/image/PixelInterleavedSampleModel
+java/awt/image/ComponentSampleModel
+java/awt/image/SampleModel
+sun/awt/image/ByteInterleavedRaster
+sun/awt/image/ByteComponentRaster
+sun/awt/image/SunWritableRaster
+java/awt/image/WritableRaster
+java/awt/image/BufferedImage
+java/awt/image/WritableRenderedImage
+java/awt/image/RenderedImage
+sun/awt/image/IntegerComponentRaster
+sun/awt/image/BytePackedRaster
+java/awt/Canvas
+sun/font/FontDesignMetrics
+sun/font/FontStrikeDesc
+sun/font/CompositeStrike
+sun/font/FontStrikeDisposer
+sun/font/StrikeCache$SoftDisposerRef
+sun/font/StrikeCache$DisposableStrike
+sun/font/TrueTypeFont$TTDisposerRecord
+sun/font/TrueTypeFont$1
+java/io/RandomAccessFile
+sun/nio/ch/FileChannelImpl
+java/nio/channels/FileChannel
+java/nio/channels/ByteChannel
+java/nio/channels/ReadableByteChannel
+java/nio/channels/Channel
+java/nio/channels/WritableByteChannel
+java/nio/channels/GatheringByteChannel
+java/nio/channels/ScatteringByteChannel
+java/nio/channels/spi/AbstractInterruptibleChannel
+java/nio/channels/InterruptibleChannel
+sun/nio/ch/Util
+sun/nio/ch/IOUtil
+sun/nio/ch/FileDispatcher
+sun/nio/ch/NativeDispatcher
+sun/nio/ch/Reflect
+java/nio/MappedByteBuffer
+sun/nio/ch/Reflect$1
+sun/nio/ch/NativeThreadSet
+java/nio/channels/spi/AbstractInterruptibleChannel$1
+sun/nio/ch/Interruptible
+sun/nio/ch/NativeThread
+sun/nio/ch/IOStatus
+sun/nio/ch/DirectBuffer
+java/nio/DirectByteBuffer
+java/nio/DirectByteBuffer$Deallocator
+sun/misc/Cleaner
+java/nio/ByteBufferAsIntBufferB
+java/nio/IntBuffer
+sun/font/TrueTypeFont$DirectoryEntry
+java/nio/ByteBufferAsShortBufferB
+java/nio/ShortBuffer
+sun/nio/cs/UTF_16
+sun/nio/cs/UTF_16$Decoder
+sun/font/FileFontStrike
+sun/font/FileFont$FileFontDisposer
+sun/font/TrueTypeGlyphMapper
+sun/font/CMap
+sun/font/CMap$NullCMapClass
+sun/font/CMap$CMapFormat4
+java/nio/ByteBufferAsCharBufferB
+sun/font/FontDesignMetrics$KeyReference
+sun/awt/image/PNGImageDecoder
+sun/awt/image/PNGFilterInputStream
+java/util/zip/InflaterInputStream
+java/util/zip/Inflater
+javax/swing/Popup$HeavyWeightWindow
+sun/awt/ModalExclude
+javax/swing/JWindow
+com/sun/java/swing/plaf/windows/WindowsPopupWindow
+java/awt/Cursor$CursorDisposer
+java/awt/AWTEvent$1
+sun/reflect/UnsafeBooleanFieldAccessorImpl
+java/awt/image/DataBufferInt
+java/awt/image/SinglePixelPackedSampleModel
+sun/awt/image/IntegerInterleavedRaster
+java/util/Date
+sun/util/calendar/CalendarSystem
+sun/awt/image/OffScreenImage
+sun/java2d/SurfaceManagerFactory
+sun/java2d/windows/WinCachingSurfaceManager
+sun/awt/image/CachingSurfaceManager
+sun/awt/image/RasterListener
+sun/util/calendar/Gregorian
+sun/util/calendar/BaseCalendar
+sun/util/calendar/AbstractCalendar
+java/util/TimeZone
+java/lang/InheritableThreadLocal
+sun/awt/image/BufImgSurfaceData
+sun/font/CompositeGlyphMapper
+sun/util/calendar/ZoneInfo
+sun/util/calendar/ZoneInfoFile
+sun/util/calendar/ZoneInfoFile$1
+sun/java2d/loops/FontInfo
+java/util/TimeZone$1
+sun/util/calendar/Gregorian$Date
+sun/util/calendar/BaseCalendar$Date
+sun/util/calendar/CalendarDate
+sun/util/calendar/CalendarUtils
+java/util/TimeZone$DisplayNames
+sun/util/TimeZoneNameUtility
+sun/util/resources/LocaleData
+sun/util/resources/LocaleData$1
+sun/util/resources/LocaleData$LocaleDataResourceBundleControl
+sun/util/LocaleDataMetaInfo
+sun/util/resources/TimeZoneNames
+sun/util/resources/TimeZoneNamesBundle
+sun/util/resources/OpenListResourceBundle
+java/util/ResourceBundle$BundleReference
+sun/util/resources/TimeZoneNames_en
+java/util/spi/TimeZoneNameProvider
+java/util/spi/LocaleServiceProvider
+sun/util/LocaleServiceProviderPool
+sun/util/LocaleServiceProviderPool$1
+java/util/ServiceLoader
+java/util/ServiceLoader$LazyIterator
+java/util/ServiceLoader$1
+java/util/LinkedHashMap$EntryIterator
+java/net/ServerSocket
+java/net/InetAddress
+java/net/InetAddress$Cache
+java/net/InetAddress$Cache$Type
+java/net/InetAddressImplFactory
+java/net/Inet4AddressImpl
+java/net/InetAddressImpl
+java/net/InetAddress$1
+sun/net/spi/nameservice/NameService
+sun/net/util/IPAddressUtil
+java/util/regex/Matcher
+java/util/regex/MatchResult
+java/util/RandomAccessSubList
+java/util/SubList
+java/util/SubList$1
+java/util/AbstractList$ListItr
+java/net/Inet4Address
+java/net/SocksSocketImpl
+java/net/SocksConsts
+java/net/PlainSocketImpl
+java/net/SocketImpl
+java/net/SocketOptions
+java/net/InetSocketAddress
+java/net/SocketAddress
+java/util/Random
+java/util/concurrent/atomic/AtomicLong
+java/lang/InternalError
+java/io/StringReader
+java/io/FilterReader
+java/lang/reflect/Proxy
+java/lang/reflect/InvocationHandler
+java/lang/NoSuchFieldException
+java/lang/InstantiationException
+java/lang/ArrayIndexOutOfBoundsException
+java/lang/IndexOutOfBoundsException
+javax/swing/JDialog
+java/io/EOFException
+java/util/Vector$1
+javax/swing/filechooser/FileSystemView
+javax/swing/filechooser/FileSystemView$1
+javax/swing/event/SwingPropertyChangeSupport
+javax/swing/filechooser/WindowsFileSystemView
+java/util/zip/ZipFile$1
+java/util/zip/ZipFile$2
+java/util/jar/JarFile$1
+java/util/PropertyResourceBundle
+java/util/ResourceBundle$Control$1
+java/util/Hashtable$EntrySet
+java/util/Collections$SynchronizedSet
+java/lang/IllegalAccessError
+java/text/MessageFormat
+java/text/Format
+java/text/FieldPosition
+java/text/MessageFormat$Field
+java/text/Format$Field
+java/lang/CloneNotSupportedException
+sun/reflect/MethodAccessorGenerator
+sun/reflect/AccessorGenerator
+sun/reflect/ClassFileConstants
+java/lang/Void
+sun/reflect/ByteVectorFactory
+sun/reflect/ByteVectorImpl
+sun/reflect/ByteVector
+sun/reflect/ClassFileAssembler
+sun/reflect/UTF8
+sun/reflect/Label
+sun/reflect/Label$PatchInfo
+sun/reflect/MethodAccessorGenerator$1
+sun/reflect/ClassDefiner
+sun/reflect/ClassDefiner$1
+sun/reflect/BootstrapConstructorAccessorImpl
+java/awt/event/ActionListener
+javax/swing/Timer
+javax/swing/Timer$DoPostEvent
+javax/swing/TimerQueue
+javax/swing/TimerQueue$1
+javax/swing/ToolTipManager
+java/awt/event/MouseAdapter
+javax/swing/ToolTipManager$insideTimerAction
+javax/swing/ToolTipManager$outsideTimerAction
+javax/swing/ToolTipManager$stillInsideTimerAction
+javax/swing/ToolTipManager$Actions
+sun/swing/UIAction
+javax/swing/Action
+javax/swing/ToolTipManager$MoveBeforeEnterListener
+java/awt/event/MouseMotionAdapter
+javax/swing/event/CaretListener
+javax/swing/JToolBar
+javax/swing/JSplitPane
+javax/swing/border/Border
+javax/swing/JToggleButton
+javax/swing/border/EmptyBorder
+javax/swing/border/AbstractBorder
+javax/swing/DefaultButtonModel
+javax/swing/ButtonModel
+javax/swing/AbstractButton$Handler
+javax/swing/event/ChangeListener
+java/awt/event/ItemListener
+javax/swing/plaf/metal/MetalButtonUI
+javax/swing/plaf/basic/BasicButtonUI
+javax/swing/plaf/ButtonUI
+javax/swing/plaf/metal/MetalBorders
+javax/swing/plaf/BorderUIResource$CompoundBorderUIResource
+javax/swing/border/CompoundBorder
+javax/swing/plaf/metal/MetalBorders$ButtonBorder
+javax/swing/plaf/basic/BasicBorders$MarginBorder
+javax/swing/plaf/basic/BasicButtonListener
+java/awt/AWTEventMulticaster
+java/awt/event/AdjustmentListener
+java/awt/event/TextListener
+javax/swing/event/AncestorListener
+java/beans/VetoableChangeListener
+javax/swing/ButtonGroup
+javax/swing/JToggleButton$ToggleButtonModel
+javax/swing/plaf/metal/MetalToggleButtonUI
+javax/swing/plaf/basic/BasicToggleButtonUI
+javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder
+java/awt/CardLayout
+javax/swing/Box
+javax/swing/plaf/metal/MetalBorders$TextFieldBorder
+javax/swing/plaf/metal/MetalBorders$Flush3DBorder
+javax/swing/BoxLayout
+javax/swing/JMenuBar
+javax/swing/DefaultSingleSelectionModel
+javax/swing/SingleSelectionModel
+javax/swing/plaf/basic/BasicMenuBarUI
+javax/swing/plaf/MenuBarUI
+javax/swing/plaf/basic/DefaultMenuLayout
+javax/swing/plaf/metal/MetalBorders$MenuBarBorder
+javax/swing/plaf/basic/BasicMenuBarUI$Handler
+javax/swing/KeyboardManager
+javax/swing/event/MenuEvent
+javax/swing/JMenu$MenuChangeListener
+javax/swing/JMenuItem$MenuItemFocusListener
+javax/swing/plaf/basic/BasicMenuUI
+javax/swing/plaf/basic/BasicMenuItemUI
+javax/swing/plaf/MenuItemUI
+javax/swing/plaf/metal/MetalBorders$MenuItemBorder
+javax/swing/plaf/metal/MetalIconFactory
+javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon
+javax/swing/plaf/basic/BasicMenuUI$Handler
+javax/swing/event/MenuKeyListener
+javax/swing/plaf/basic/BasicMenuItemUI$Handler
+javax/swing/event/MenuDragMouseListener
+javax/swing/event/MouseInputListener
+javax/swing/event/ChangeEvent
+java/awt/event/ContainerEvent
+javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon
+javax/swing/JPopupMenu
+javax/swing/plaf/basic/BasicPopupMenuUI
+javax/swing/plaf/PopupMenuUI
+javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper
+java/awt/event/AWTEventListenerProxy
+java/awt/Toolkit$SelectiveAWTEventListener
+java/awt/Toolkit$ToolkitEventMulticaster
+javax/swing/plaf/basic/BasicLookAndFeel$1
+javax/swing/plaf/metal/MetalBorders$PopupMenuBorder
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener
+javax/swing/event/PopupMenuListener
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener
+javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber
+javax/swing/MenuSelectionManager
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1
+java/awt/event/FocusAdapter
+javax/swing/JMenu$WinListener
+java/awt/event/WindowAdapter
+javax/swing/JPopupMenu$Separator
+javax/swing/JSeparator
+javax/swing/plaf/metal/MetalPopupMenuSeparatorUI
+javax/swing/plaf/metal/MetalSeparatorUI
+javax/swing/plaf/basic/BasicSeparatorUI
+javax/swing/plaf/SeparatorUI
+javax/swing/JComboBox
+javax/swing/event/ListDataListener
+javax/swing/event/CaretEvent
+javax/swing/text/TabExpander
+javax/swing/JScrollBar
+java/awt/Adjustable
+javax/swing/event/MouseInputAdapter
+javax/swing/JScrollBar$ModelListener
+javax/swing/DefaultBoundedRangeModel
+javax/swing/BoundedRangeModel
+javax/swing/plaf/metal/MetalScrollBarUI
+javax/swing/plaf/basic/BasicScrollBarUI
+javax/swing/plaf/ScrollBarUI
+javax/swing/plaf/metal/MetalBumps
+javax/swing/plaf/metal/MetalScrollButton
+javax/swing/plaf/basic/BasicArrowButton
+javax/swing/plaf/basic/BasicScrollBarUI$TrackListener
+javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener
+javax/swing/plaf/basic/BasicScrollBarUI$ModelListener
+javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener
+javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicScrollBarUI$Handler
+javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener
+javax/swing/CellRendererPane
+javax/swing/border/MatteBorder
+sun/font/StandardGlyphVector
+java/awt/font/GlyphVector
+sun/font/StandardGlyphVector$GlyphStrike
+sun/font/CoreMetrics
+sun/font/FontLineMetrics
+java/awt/font/LineMetrics
+javax/swing/ComboBoxModel
+javax/swing/ListModel
+javax/swing/ListCellRenderer
+javax/swing/DefaultComboBoxModel
+javax/swing/MutableComboBoxModel
+javax/swing/AbstractListModel
+javax/swing/JComboBox$1
+javax/swing/AncestorNotifier
+javax/swing/plaf/metal/MetalComboBoxUI
+javax/swing/plaf/basic/BasicComboBoxUI
+javax/swing/plaf/ComboBoxUI
+javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager
+javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager
+javax/swing/plaf/basic/BasicComboPopup
+javax/swing/plaf/basic/ComboPopup
+javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass
+javax/swing/border/LineBorder
+javax/swing/plaf/basic/BasicComboPopup$1
+javax/swing/JList
+javax/swing/DropMode
+javax/swing/DefaultListSelectionModel
+javax/swing/ListSelectionModel
+javax/swing/plaf/basic/BasicListUI
+javax/swing/plaf/ListUI
+javax/swing/plaf/basic/BasicListUI$ListTransferHandler
+javax/swing/TransferHandler
+javax/swing/TransferHandler$TransferAction
+javax/swing/DefaultListCellRenderer$UIResource
+javax/swing/DefaultListCellRenderer
+javax/swing/TransferHandler$SwingDropTarget
+java/awt/dnd/DropTargetContext
+java/awt/datatransfer/SystemFlavorMap
+java/awt/datatransfer/FlavorMap
+java/awt/datatransfer/FlavorTable
+java/awt/datatransfer/SystemFlavorMap$1
+java/net/URI
+java/net/URI$Parser
+sun/net/ProgressMonitor
+sun/net/DefaultProgressMeteringPolicy
+sun/net/ProgressMeteringPolicy
+sun/nio/cs/ISO_8859_1
+sun/nio/cs/ISO_8859_1$Decoder
+java/awt/datatransfer/SystemFlavorMap$2
+java/awt/datatransfer/MimeType
+java/io/Externalizable
+java/awt/datatransfer/MimeTypeParameterList
+sun/awt/datatransfer/DataTransferer
+java/awt/datatransfer/DataFlavor
+java/awt/datatransfer/DataFlavor$1
+sun/awt/datatransfer/DataTransferer$CharsetComparator
+sun/awt/datatransfer/DataTransferer$IndexedComparator
+sun/nio/cs/UTF_16BE
+sun/nio/cs/US_ASCII
+java/util/Collections$UnmodifiableMap
+sun/awt/datatransfer/DataTransferer$DataFlavorComparator
+java/rmi/Remote
+sun/awt/datatransfer/DataTransferer$1
+sun/awt/windows/WDataTransferer
+java/lang/Long$LongCache
+java/awt/datatransfer/Transferable
+sun/awt/datatransfer/ToolkitThreadBlockedHandler
+sun/awt/windows/WToolkitThreadBlockedHandler
+sun/awt/Mutex
+javax/swing/TransferHandler$DropHandler
+javax/swing/TransferHandler$TransferSupport
+javax/swing/plaf/basic/BasicListUI$Handler
+javax/swing/event/ListSelectionListener
+javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag
+javax/swing/plaf/basic/BasicComboPopup$Handler
+javax/swing/JScrollPane
+javax/swing/ScrollPaneConstants
+javax/swing/ScrollPaneLayout$UIResource
+javax/swing/ScrollPaneLayout
+javax/swing/JViewport
+javax/swing/ViewportLayout
+javax/swing/plaf/basic/BasicViewportUI
+javax/swing/plaf/ViewportUI
+javax/swing/JScrollPane$ScrollBar
+javax/swing/JViewport$ViewListener
+java/awt/event/ComponentAdapter
+javax/swing/plaf/metal/MetalScrollPaneUI
+javax/swing/plaf/basic/BasicScrollPaneUI
+javax/swing/plaf/ScrollPaneUI
+javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder
+javax/swing/plaf/basic/BasicScrollPaneUI$Handler
+javax/swing/plaf/metal/MetalScrollPaneUI$1
+javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource
+javax/swing/plaf/basic/BasicComboBoxRenderer
+javax/swing/plaf/metal/MetalComboBoxEditor$UIResource
+javax/swing/plaf/metal/MetalComboBoxEditor
+javax/swing/plaf/basic/BasicComboBoxEditor
+javax/swing/ComboBoxEditor
+javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField
+javax/swing/JTextField$NotifyAction
+javax/swing/text/TextAction
+javax/swing/AbstractAction
+javax/swing/text/JTextComponent$MutableCaretEvent
+javax/swing/plaf/metal/MetalTextFieldUI
+javax/swing/plaf/basic/BasicTextFieldUI
+javax/swing/plaf/basic/BasicTextUI
+javax/swing/text/ViewFactory
+javax/swing/plaf/TextUI
+javax/swing/plaf/basic/BasicTextUI$BasicCursor
+javax/swing/text/DefaultEditorKit
+javax/swing/text/EditorKit
+javax/swing/text/DefaultEditorKit$InsertContentAction
+javax/swing/text/DefaultEditorKit$DeletePrevCharAction
+javax/swing/text/DefaultEditorKit$DeleteNextCharAction
+javax/swing/text/DefaultEditorKit$ReadOnlyAction
+javax/swing/text/DefaultEditorKit$DeleteWordAction
+javax/swing/text/DefaultEditorKit$WritableAction
+javax/swing/text/DefaultEditorKit$CutAction
+javax/swing/text/DefaultEditorKit$CopyAction
+javax/swing/text/DefaultEditorKit$PasteAction
+javax/swing/text/DefaultEditorKit$VerticalPageAction
+javax/swing/text/DefaultEditorKit$PageAction
+javax/swing/text/DefaultEditorKit$InsertBreakAction
+javax/swing/text/DefaultEditorKit$BeepAction
+javax/swing/text/DefaultEditorKit$NextVisualPositionAction
+javax/swing/text/DefaultEditorKit$BeginWordAction
+javax/swing/text/DefaultEditorKit$EndWordAction
+javax/swing/text/DefaultEditorKit$PreviousWordAction
+javax/swing/text/DefaultEditorKit$NextWordAction
+javax/swing/text/DefaultEditorKit$BeginLineAction
+javax/swing/text/DefaultEditorKit$EndLineAction
+javax/swing/text/DefaultEditorKit$BeginParagraphAction
+javax/swing/text/DefaultEditorKit$EndParagraphAction
+javax/swing/text/DefaultEditorKit$BeginAction
+javax/swing/text/DefaultEditorKit$EndAction
+javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction
+javax/swing/text/DefaultEditorKit$InsertTabAction
+javax/swing/text/DefaultEditorKit$SelectWordAction
+javax/swing/text/DefaultEditorKit$SelectLineAction
+javax/swing/text/DefaultEditorKit$SelectParagraphAction
+javax/swing/text/DefaultEditorKit$SelectAllAction
+javax/swing/text/DefaultEditorKit$UnselectAction
+javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction
+javax/swing/text/DefaultEditorKit$DumpModelAction
+javax/swing/plaf/basic/BasicTextUI$TextTransferHandler
+javax/swing/text/Position$Bias
+javax/swing/plaf/basic/BasicTextUI$RootView
+javax/swing/text/View
+javax/swing/plaf/basic/BasicTextUI$UpdateHandler
+javax/swing/event/DocumentListener
+javax/swing/plaf/basic/BasicTextUI$DragListener
+javax/swing/plaf/basic/BasicComboBoxEditor$UIResource
+javax/swing/plaf/basic/BasicTextUI$BasicCaret
+javax/swing/text/DefaultCaret
+javax/swing/text/Caret
+javax/swing/text/DefaultCaret$Handler
+java/awt/datatransfer/ClipboardOwner
+javax/swing/plaf/basic/BasicTextUI$BasicHighlighter
+javax/swing/text/DefaultHighlighter
+javax/swing/text/LayeredHighlighter
+javax/swing/text/Highlighter
+javax/swing/text/Highlighter$Highlight
+javax/swing/text/DefaultHighlighter$DefaultHighlightPainter
+javax/swing/text/LayeredHighlighter$LayerPainter
+javax/swing/text/Highlighter$HighlightPainter
+javax/swing/text/DefaultHighlighter$SafeDamager
+javax/swing/text/FieldView
+javax/swing/text/PlainView
+javax/swing/text/JTextComponent$DefaultKeymap
+javax/swing/text/Keymap
+javax/swing/text/JTextComponent$KeymapWrapper
+javax/swing/text/JTextComponent$KeymapActionMap
+javax/swing/plaf/basic/BasicTextUI$FocusAction
+javax/swing/plaf/basic/BasicTextUI$TextActionWrapper
+javax/swing/JTextArea
+javax/swing/JEditorPane
+javax/swing/JTextField$ScrollRepainter
+javax/swing/plaf/metal/MetalComboBoxEditor$1
+javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder
+javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener
+javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicComboBoxUI$Handler
+javax/swing/plaf/metal/MetalComboBoxButton
+javax/swing/plaf/metal/MetalComboBoxIcon
+javax/swing/plaf/metal/MetalComboBoxButton$1
+javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager
+javax/swing/JComboBox$KeySelectionManager
+javax/swing/JToolBar$DefaultToolBarLayout
+javax/swing/plaf/metal/MetalToolBarUI
+javax/swing/plaf/basic/BasicToolBarUI
+javax/swing/plaf/ToolBarUI
+javax/swing/plaf/metal/MetalBorders$ToolBarBorder
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
+javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder
+javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder
+javax/swing/plaf/basic/BasicBorders$RadioButtonBorder
+javax/swing/plaf/basic/BasicBorders$ButtonBorder
+javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder
+javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener
+javax/swing/plaf/basic/BasicToolBarUI$DockingListener
+javax/swing/plaf/basic/BasicToolBarUI$Handler
+javax/swing/border/EtchedBorder
+javax/swing/JToolBar$Separator
+javax/swing/plaf/basic/BasicToolBarSeparatorUI
+sun/font/FontDesignMetrics$MetricsKey
+java/applet/Applet
+java/awt/Panel
+javax/swing/KeyboardManager$ComponentKeyStrokePair
+sun/awt/im/InputMethodContext
+java/awt/im/spi/InputMethodContext
+sun/awt/im/InputContext
+sun/awt/windows/WInputMethod
+sun/awt/im/InputMethodAdapter
+java/awt/im/spi/InputMethod
+javax/swing/SizeRequirements
+javax/swing/plaf/basic/BasicGraphicsUtils
+java/awt/event/AdjustmentEvent
+java/awt/MenuBar
+java/awt/Window$1DisposeAction
+java/io/StringWriter
+java/io/UnsupportedEncodingException
+java/lang/StringCoding$StringEncoder
+java/net/UnknownHostException
+java/net/Socket
+java/nio/channels/SocketChannel
+java/nio/channels/spi/AbstractSelectableChannel
+java/nio/channels/SelectableChannel
+java/net/SocketException
+java/net/SocketImplFactory
+java/net/Proxy
+java/net/SocksSocketImpl$5
+java/net/ProxySelector
+sun/net/spi/DefaultProxySelector
+sun/net/spi/DefaultProxySelector$1
+sun/net/NetProperties
+sun/net/NetProperties$1
+sun/net/spi/DefaultProxySelector$NonProxyInfo
+java/util/regex/ASCII
+java/util/regex/Pattern$GroupCurly
+java/net/Inet6Address
+java/net/Proxy$Type
+java/net/SocketTimeoutException
+java/io/InterruptedIOException
+javax/swing/UnsupportedLookAndFeelException
+java/lang/UnsatisfiedLinkError
+javax/swing/Box$Filler
+javax/swing/JComponent$2
+sun/net/www/MimeTable
+java/net/FileNameMap
+sun/net/www/MimeTable$1
+sun/net/www/MimeTable$2
+sun/net/www/MimeEntry
+java/net/URLConnection$1
+java/text/SimpleDateFormat
+java/text/DateFormat
+java/text/DateFormat$Field
+java/util/Calendar
+java/util/GregorianCalendar
+sun/util/resources/CalendarData
+sun/util/resources/LocaleNamesBundle
+sun/util/resources/CalendarData_en
+java/text/DateFormatSymbols
+java/text/spi/DateFormatSymbolsProvider
+sun/text/resources/FormatData
+sun/text/resources/FormatData_en
+sun/text/resources/FormatData_en_US
+java/text/NumberFormat
+java/text/spi/NumberFormatProvider
+java/text/DecimalFormatSymbols
+java/text/spi/DecimalFormatSymbolsProvider
+java/util/Currency
+java/util/Currency$1
+java/util/CurrencyData
+java/util/spi/CurrencyNameProvider
+sun/util/resources/CurrencyNames
+sun/util/resources/CurrencyNames_en_US
+java/text/DecimalFormat
+java/text/DigitList
+java/math/RoundingMode
+java/text/DontCareFieldPosition
+java/text/DontCareFieldPosition$1
+java/text/Format$FieldDelegate
+javax/swing/plaf/BorderUIResource
+javax/swing/BorderFactory
+javax/swing/border/BevelBorder
+javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon
+javax/swing/plaf/metal/MetalIconFactory$FolderIcon16
+java/util/zip/ZipInputStream
+java/io/PushbackInputStream
+java/util/zip/CRC32
+java/util/zip/Checksum
+java/awt/TrayIcon
+java/awt/EventDispatchThread$StopDispatchEvent
+java/lang/Thread$State
+javax/swing/SwingUtilities$SharedOwnerFrame
+javax/swing/JTable
+javax/swing/event/TableModelListener
+javax/swing/event/TableColumnModelListener
+javax/swing/event/CellEditorListener
+javax/swing/event/RowSorterListener
+java/awt/Component$BltSubRegionBufferStrategy
+sun/awt/SubRegionShowable
+java/awt/Component$BltBufferStrategy
+sun/print/PrinterGraphicsConfig
+javax/swing/JRadioButton
+java/lang/ClassFormatError
+sun/java2d/opengl/OGLGraphicsConfig
+sun/java2d/windows/WinVolatileSurfaceManager
+java/awt/print/PrinterGraphics
+java/awt/PrintGraphics
+javax/swing/JTabbedPane
+javax/swing/JTabbedPane$ModelListener
+javax/swing/plaf/metal/MetalTabbedPaneUI
+javax/swing/plaf/basic/BasicTabbedPaneUI
+javax/swing/plaf/TabbedPaneUI
+javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$Handler
+sun/swing/ImageIconUIResource
+javax/swing/GrayFilter
+java/awt/image/RGBImageFilter
+java/awt/image/ImageFilter
+java/awt/image/FilteredImageSource
+org/w3c/dom/Node
+org/xml/sax/SAXException
+javax/xml/parsers/ParserConfigurationException
+org/xml/sax/EntityResolver
+java/security/NoSuchAlgorithmException
+java/security/GeneralSecurityException
+java/util/zip/GZIPInputStream
+java/util/zip/DeflaterOutputStream
+org/xml/sax/InputSource
+javax/xml/parsers/DocumentBuilderFactory
+javax/xml/parsers/FactoryFinder
+javax/xml/parsers/SecuritySupport
+javax/xml/parsers/SecuritySupport$2
+javax/xml/parsers/SecuritySupport$5
+javax/xml/parsers/SecuritySupport$1
+javax/xml/parsers/SecuritySupport$4
+javax/xml/parsers/DocumentBuilder
+org/w3c/dom/Document
+org/xml/sax/helpers/DefaultHandler
+org/xml/sax/DTDHandler
+org/xml/sax/ContentHandler
+org/xml/sax/ErrorHandler
+org/xml/sax/SAXNotSupportedException
+org/xml/sax/Locator
+org/xml/sax/SAXNotRecognizedException
+org/xml/sax/SAXParseException
+org/w3c/dom/NodeList
+org/w3c/dom/events/EventTarget
+org/w3c/dom/traversal/DocumentTraversal
+org/w3c/dom/events/DocumentEvent
+org/w3c/dom/ranges/DocumentRange
+org/w3c/dom/Entity
+org/w3c/dom/Element
+org/w3c/dom/CharacterData
+org/w3c/dom/CDATASection
+org/w3c/dom/Text
+org/xml/sax/AttributeList
+org/w3c/dom/DOMException
+org/w3c/dom/Notation
+org/w3c/dom/DocumentType
+org/w3c/dom/Attr
+org/w3c/dom/EntityReference
+org/w3c/dom/ProcessingInstruction
+org/w3c/dom/Comment
+org/w3c/dom/DocumentFragment
+org/w3c/dom/events/Event
+org/w3c/dom/events/MutationEvent
+org/w3c/dom/traversal/TreeWalker
+org/w3c/dom/ranges/Range
+org/w3c/dom/traversal/NodeIterator
+org/w3c/dom/events/EventException
+org/w3c/dom/NamedNodeMap
+java/lang/StringIndexOutOfBoundsException
+java/awt/GridLayout
+javax/swing/plaf/metal/MetalRadioButtonUI
+javax/swing/plaf/basic/BasicRadioButtonUI
+javax/swing/plaf/basic/BasicBorders
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon
+java/awt/event/ItemEvent
+java/awt/CardLayout$Card
+javax/swing/JCheckBox
+javax/swing/event/ListSelectionEvent
+javax/swing/plaf/metal/MetalCheckBoxUI
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon
+java/lang/ExceptionInInitializerError
+com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
+javax/swing/JProgressBar
+javax/swing/JProgressBar$ModelListener
+javax/swing/plaf/metal/MetalProgressBarUI
+javax/swing/plaf/basic/BasicProgressBarUI
+javax/swing/plaf/ProgressBarUI
+javax/swing/plaf/BorderUIResource$LineBorderUIResource
+javax/swing/plaf/basic/BasicProgressBarUI$Handler
+javax/swing/tree/TreeModel
+javax/swing/table/TableCellRenderer
+javax/swing/table/JTableHeader
+javax/swing/event/TreeExpansionListener
+javax/swing/table/AbstractTableModel
+javax/swing/table/TableModel
+javax/swing/table/DefaultTableCellRenderer
+javax/swing/JTree
+javax/swing/tree/TreeSelectionModel
+javax/swing/tree/DefaultTreeCellRenderer
+javax/swing/tree/TreeCellRenderer
+javax/swing/table/TableCellEditor
+javax/swing/CellEditor
+javax/swing/JToolTip
+javax/swing/table/TableColumn
+javax/swing/table/DefaultTableColumnModel
+javax/swing/table/TableColumnModel
+javax/swing/table/DefaultTableModel
+javax/swing/event/TableModelEvent
+sun/swing/table/DefaultTableCellHeaderRenderer
+javax/swing/plaf/basic/BasicTableHeaderUI
+javax/swing/plaf/TableHeaderUI
+javax/swing/plaf/basic/BasicTableHeaderUI$1
+javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler
+javax/swing/DefaultCellEditor
+javax/swing/tree/TreeCellEditor
+javax/swing/AbstractCellEditor
+javax/swing/plaf/basic/BasicTableUI
+javax/swing/plaf/TableUI
+javax/swing/plaf/basic/BasicTableUI$TableTransferHandler
+javax/swing/plaf/basic/BasicTableUI$Handler
+javax/swing/tree/DefaultTreeSelectionModel
+javax/swing/tree/TreePath
+javax/swing/plaf/metal/MetalTreeUI
+javax/swing/plaf/basic/BasicTreeUI
+javax/swing/plaf/TreeUI
+javax/swing/plaf/basic/BasicTreeUI$Actions
+javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler
+javax/swing/plaf/metal/MetalTreeUI$LineListener
+javax/swing/plaf/basic/BasicTreeUI$Handler
+javax/swing/event/TreeModelListener
+javax/swing/event/TreeSelectionListener
+javax/swing/tree/VariableHeightLayoutCache
+javax/swing/tree/AbstractLayoutCache
+javax/swing/tree/RowMapper
+javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler
+javax/swing/tree/AbstractLayoutCache$NodeDimensions
+javax/swing/JTree$TreeModelHandler
+javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
+javax/swing/tree/DefaultMutableTreeNode
+javax/swing/tree/MutableTreeNode
+javax/swing/tree/DefaultMutableTreeNode$1
+javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
+javax/swing/event/TableColumnModelEvent
+java/text/ParseException
+java/text/NumberFormat$Field
+javax/swing/event/UndoableEditListener
+javax/swing/filechooser/FileFilter
+javax/swing/tree/DefaultTreeModel
+javax/swing/tree/DefaultTreeCellEditor
+javax/swing/tree/DefaultTreeCellEditor$1
+javax/swing/tree/DefaultTreeCellEditor$DefaultTextField
+javax/swing/DefaultCellEditor$1
+javax/swing/DefaultCellEditor$EditorDelegate
+javax/swing/tree/DefaultTreeCellEditor$EditorContainer
+javax/swing/JTree$TreeSelectionRedirector
+javax/swing/event/TreeModelEvent
+javax/swing/plaf/metal/MetalSplitPaneUI
+javax/swing/plaf/basic/BasicSplitPaneUI
+javax/swing/plaf/SplitPaneUI
+javax/swing/plaf/basic/BasicSplitPaneDivider
+javax/swing/plaf/basic/BasicBorders$SplitPaneBorder
+javax/swing/plaf/metal/MetalSplitPaneDivider
+javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout
+javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler
+javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder
+javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager
+javax/swing/plaf/basic/BasicSplitPaneUI$1
+javax/swing/plaf/basic/BasicSplitPaneUI$Handler
+javax/swing/plaf/metal/MetalSplitPaneDivider$1
+javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler
+javax/swing/plaf/metal/MetalSplitPaneDivider$2
+javax/swing/border/TitledBorder
+javax/swing/plaf/basic/BasicTextAreaUI
+java/util/Collections$UnmodifiableCollection$1
+java/net/NoRouteToHostException
+java/net/BindException
+javax/swing/tree/PathPlaceHolder
+javax/swing/event/TreeSelectionEvent
+javax/swing/JList$3
+javax/swing/JList$ListSelectionHandler
+javax/swing/JSlider
+javax/swing/JSlider$ModelListener
+javax/swing/plaf/metal/MetalSliderUI
+javax/swing/plaf/basic/BasicSliderUI
+javax/swing/plaf/SliderUI
+javax/swing/plaf/basic/BasicSliderUI$Actions
+javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon
+javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon
+javax/swing/plaf/basic/BasicSliderUI$TrackListener
+javax/swing/plaf/basic/BasicSliderUI$Handler
+javax/swing/plaf/basic/BasicSliderUI$ScrollListener
+javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener
+javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
+sun/java2d/HeadlessGraphicsEnvironment
+java/util/Hashtable$KeySet
+sun/font/FontManager$2
+sun/java2d/SunGraphicsEnvironment$2
+sun/java2d/SunGraphicsEnvironment$3
+javax/swing/DefaultListModel
+javax/swing/event/ListDataEvent
+javax/sound/sampled/DataLine
+javax/sound/sampled/Line
+javax/sound/sampled/Line$Info
+javax/sound/sampled/DataLine$Info
+javax/sound/sampled/Control$Type
+javax/sound/sampled/FloatControl$Type
+javax/sound/sampled/LineUnavailableException
+javax/sound/sampled/UnsupportedAudioFileException
+javax/swing/JRadioButtonMenuItem
+javax/swing/JMenuItem$AccessibleJMenuItem
+javax/swing/AbstractButton$AccessibleAbstractButton
+javax/accessibility/AccessibleAction
+javax/accessibility/AccessibleValue
+javax/accessibility/AccessibleText
+javax/accessibility/AccessibleExtendedComponent
+javax/accessibility/AccessibleComponent
+javax/swing/JComponent$AccessibleJComponent
+java/awt/Container$AccessibleAWTContainer
+java/awt/Component$AccessibleAWTComponent
+javax/accessibility/AccessibleRelationSet
+javax/accessibility/AccessibleState
+javax/accessibility/AccessibleBundle
+javax/swing/plaf/basic/BasicCheckBoxMenuItemUI
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon
+javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem
+javax/swing/plaf/basic/BasicRadioButtonMenuItemUI
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon
+sun/awt/image/ImageDecoder$1
+javax/swing/JTabbedPane$Page
+java/net/DatagramSocket
+java/net/MulticastSocket
+java/net/DatagramPacket
+sun/net/InetAddressCachePolicy$1
+sun/security/action/GetIntegerAction
+sun/net/InetAddressCachePolicy$2
+java/net/InetAddress$CacheEntry
+java/net/PlainDatagramSocketImpl
+java/net/DatagramSocketImpl
+java/text/Collator
+java/text/spi/CollatorProvider
+sun/text/resources/CollationData
+sun/text/resources/CollationData_en
+sun/util/EmptyListResourceBundle
+java/text/RuleBasedCollator
+java/text/CollationRules
+java/text/RBCollationTables
+java/text/RBTableBuilder
+java/text/RBCollationTables$BuildAPI
+sun/text/IntHashtable
+sun/text/UCompactIntArray
+sun/text/normalizer/NormalizerImpl
+sun/text/normalizer/ICUData
+sun/text/normalizer/NormalizerDataReader
+sun/text/normalizer/ICUBinary$Authenticate
+sun/text/normalizer/ICUBinary
+sun/text/normalizer/NormalizerImpl$FCDTrieImpl
+sun/text/normalizer/Trie$DataManipulate
+sun/text/normalizer/NormalizerImpl$NormTrieImpl
+sun/text/normalizer/NormalizerImpl$AuxTrieImpl
+sun/text/normalizer/IntTrie
+sun/text/normalizer/Trie
+sun/text/normalizer/CharTrie
+sun/text/normalizer/CharTrie$FriendAgent
+sun/text/normalizer/UnicodeSet
+sun/text/normalizer/UnicodeMatcher
+sun/text/normalizer/NormalizerImpl$DecomposeArgs
+java/text/MergeCollation
+java/text/PatternEntry$Parser
+java/text/PatternEntry
+java/text/EntryPair
+sun/text/ComposedCharIter
+sun/text/normalizer/UTF16
+sun/net/www/protocol/http/Handler
+java/security/SignatureException
+java/security/InvalidKeyException
+java/security/KeyException
+java/security/Signature
+java/security/SignatureSpi
+java/io/ObjectInputStream$BlockDataInputStream
+java/io/ObjectInputStream$PeekInputStream
+java/io/ObjectInputStream$HandleTable
+java/io/ObjectInputStream$HandleTable$HandleList
+java/io/ObjectInputStream$ValidationList
+sun/security/provider/DSAPublicKey
+java/security/interfaces/DSAPublicKey
+java/security/interfaces/DSAKey
+java/security/PublicKey
+java/security/Key
+sun/security/x509/X509Key
+java/io/ObjectStreamClass$Caches
+java/io/ObjectStreamClass$WeakClassKey
+java/io/ObjectStreamClass$EntryFuture
+java/io/ObjectStreamClass$2
+sun/security/x509/AlgorithmId
+sun/security/util/DerEncoder
+sun/security/util/BitArray
+sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
+sun/security/util/DerOutputStream
+sun/security/util/DerValue
+java/io/ObjectStreamClass$FieldReflectorKey
+java/io/ObjectStreamClass$FieldReflector
+java/io/ObjectStreamClass$1
+java/io/DataOutputStream
+java/io/ObjectStreamClass$MemberSignature
+java/math/BigInteger
+java/security/interfaces/DSAParams
+java/io/ObjectStreamClass$ClassDataSlot
+java/io/ObjectInputStream$CallbackContext
+java/io/ObjectStreamClass$4
+java/io/ObjectStreamClass$5
+java/security/MessageDigest
+java/security/MessageDigestSpi
+sun/security/jca/GetInstance
+sun/security/util/DerInputStream
+sun/security/jca/Providers
+sun/security/jca/ProviderList
+sun/security/jca/ProviderConfig
+sun/security/jca/ProviderList$3
+sun/security/jca/ProviderList$1
+sun/security/util/DerInputBuffer
+sun/security/jca/ProviderList$2
+sun/security/jca/ProviderConfig$1
+sun/security/util/ObjectIdentifier
+sun/security/jca/ProviderConfig$3
+java/security/Provider$Service
+java/security/Provider$UString
+java/security/AlgorithmParameters
+java/security/AlgorithmParametersSpi
+sun/security/provider/DSAParameters
+sun/security/provider/SHA
+sun/security/provider/DigestBase
+sun/security/jca/GetInstance$Instance
+sun/security/util/ByteArrayLexOrder
+sun/security/util/ByteArrayTagOrder
+java/security/MessageDigest$Delegate
+sun/security/provider/ByteArrayAccess
+sun/security/util/DerIndefLenConverter
+java/io/InvalidClassException
+java/io/ObjectStreamException
+java/io/ObjectInputStream$GetFieldImpl
+java/io/ObjectInputStream$GetField
+java/io/ObjectOutputStream$ReplaceTable
+sun/security/jca/ServiceId
+sun/security/jca/ProviderList$ServiceList
+sun/security/jca/ProviderList$ServiceList$1
+java/security/Signature$Delegate
+java/security/interfaces/DSAPrivateKey
+sun/security/provider/DSA$SHA1withDSA
+sun/security/provider/DSA
+java/security/spec/DSAParameterSpec
+java/math/MutableBigInteger
+java/math/SignedMutableBigInteger
+java/awt/EventQueue$1AWTInvocationLock
+javax/swing/SystemEventQueueUtilities$RunnableCanvas
+javax/swing/SystemEventQueueUtilities$RunnableCanvasGraphics
+java/awt/LightweightDispatcher$2
+java/awt/Component$FlipBufferStrategy
+javax/swing/JTable$2
+javax/swing/JTable$Resizable3
+javax/swing/JTable$Resizable2
+javax/swing/JTable$5
+javax/swing/event/AncestorEvent
+com/sun/java/swing/plaf/windows/WindowsLookAndFeel
+com/sun/java/swing/plaf/windows/XPStyle
+com/sun/java/swing/plaf/windows/XPStyle$SkinPainter
+sun/swing/CachedPainter
+sun/swing/ImageCache
+com/sun/java/swing/plaf/windows/WindowsRootPaneUI
+com/sun/java/swing/plaf/windows/WindowsRootPaneUI$AltProcessor
+java/awt/SystemColor
+com/sun/java/swing/plaf/windows/WindowsTreeUI$ExpandedIcon
+com/sun/java/swing/plaf/windows/WindowsTreeUI$CollapsedIcon
+com/sun/java/swing/plaf/windows/DesktopProperty
+com/sun/java/swing/plaf/windows/WindowsLookAndFeel$XPColorValue
+com/sun/java/swing/plaf/windows/WindowsLookAndFeel$XPValue
+com/sun/java/swing/plaf/windows/TMSchema$Part
+com/sun/java/swing/plaf/windows/TMSchema$Control
+com/sun/java/swing/plaf/windows/TMSchema$Prop
+com/sun/java/swing/plaf/windows/WindowsLookAndFeel$XPColorValue$XPColorValueKey
+com/sun/java/swing/plaf/windows/XPStyle$Skin
+com/sun/java/swing/plaf/windows/WindowsLookAndFeel$WindowsFontProperty
+com/sun/java/swing/plaf/windows/WindowsLookAndFeel$FontDesktopProperty
+com/sun/java/swing/plaf/windows/WindowsLookAndFeel$TriggerDesktopProperty
+com/sun/java/swing/plaf/windows/DesktopProperty$WeakPCL
+com/sun/java/swing/plaf/windows/WindowsClassicLookAndFeel
+com/sun/java/swing/plaf/windows/TMSchema$State
+com/sun/java/swing/plaf/windows/WindowsLookAndFeel$LazyWindowsIcon
+com/sun/java/swing/plaf/windows/WindowsLookAndFeel$XPBorderValue
+com/sun/java/swing/plaf/windows/WindowsIconFactory
+com/sun/java/swing/plaf/windows/WindowsIconFactory$FrameButtonIcon
+com/sun/java/swing/plaf/windows/WindowsLookAndFeel$XPDLUValue
+com/sun/java/swing/plaf/windows/WindowsLookAndFeel$ActiveWindowsIcon
+sun/swing/SwingUtilities2$2$1
+sun/awt/image/ByteArrayImageSource
+com/sun/java/swing/plaf/windows/resources/windows
+com/sun/java/swing/plaf/windows/WindowsLabelUI
+com/sun/java/swing/plaf/windows/WindowsButtonUI
+sun/awt/windows/ThemeReader
+java/util/EnumMap
+com/sun/java/swing/plaf/windows/TMSchema$TypeEnum
+com/sun/java/swing/plaf/windows/XPStyle$XPEmptyBorder
+com/sun/java/swing/plaf/windows/WindowsToggleButtonUI
+com/sun/java/swing/plaf/windows/XPStyle$XPFillBorder
+com/sun/java/swing/plaf/windows/WindowsMenuBarUI
+javax/swing/plaf/basic/BasicBorders$MenuBarBorder
+com/sun/java/swing/plaf/windows/WindowsMenuBarUI$TakeFocus
+javax/swing/plaf/basic/BasicMenuBarUI$Actions
+com/sun/java/swing/plaf/windows/WindowsMenuUI
+com/sun/java/swing/plaf/windows/WindowsIconFactory$MenuArrowIcon
+javax/swing/plaf/basic/BasicIconFactory
+javax/swing/plaf/basic/BasicIconFactory$MenuItemCheckIcon
+com/sun/java/swing/plaf/windows/WindowsMenuUI$WindowsMouseInputHandler
+javax/swing/plaf/basic/BasicMenuUI$MouseInputHandler
+com/sun/java/swing/plaf/windows/WindowsMenuItemUI
+com/sun/java/swing/plaf/windows/WindowsIconFactory$MenuItemArrowIcon
+com/sun/java/swing/plaf/windows/WindowsIconFactory$MenuItemCheckIcon
+com/sun/java/swing/plaf/windows/WindowsPopupMenuUI
+javax/swing/Popup
+com/sun/java/swing/plaf/windows/WindowsPopupMenuUI$MnemonicListener
+com/sun/java/swing/plaf/windows/WindowsPopupMenuSeparatorUI
+javax/swing/plaf/basic/BasicPopupMenuSeparatorUI
+com/sun/java/swing/plaf/windows/WindowsScrollBarUI
+com/sun/java/swing/plaf/windows/WindowsScrollBarUI$Grid
+com/sun/java/swing/plaf/windows/WindowsScrollBarUI$WindowsArrowButton
+com/sun/java/swing/plaf/windows/WindowsComboBoxUI
+com/sun/java/swing/plaf/windows/WindowsComboBoxUI$1
+com/sun/java/swing/plaf/windows/WindowsComboBoxUI$2
+com/sun/java/swing/plaf/windows/XPStyle$XPStatefulFillBorder
+com/sun/java/swing/plaf/windows/WindowsComboBoxUI$WindowsComboBoxEditor
+com/sun/java/swing/plaf/windows/WindowsTextFieldUI
+com/sun/java/swing/plaf/windows/WindowsTextFieldUI$WindowsFieldCaret
+com/sun/java/swing/plaf/windows/WindowsComboBoxUI$XPComboBoxButton
+com/sun/java/swing/plaf/windows/XPStyle$GlyphButton
+com/sun/java/swing/plaf/windows/WindowsComboBoxUI$3
+com/sun/java/swing/plaf/windows/WindowsToolBarUI
+com/sun/java/swing/plaf/windows/WindowsBorders
+com/sun/java/swing/plaf/windows/WindowsBorders$ToolBarBorder
+com/sun/java/swing/plaf/windows/WindowsToolBarSeparatorUI
+com/sun/java/swing/plaf/windows/WindowsGraphicsUtils
+sun/awt/image/BufferedImageGraphicsConfig
+sun/reflect/SerializationConstructorAccessorImpl
+java/io/ObjectStreamClass$3
+java/io/ObjectOutputStream$BlockDataOutputStream
+java/io/ObjectOutputStream$HandleTable
+java/security/PrivateKey
+java/security/spec/AlgorithmParameterSpec
+sun/applet/Main
+sun/applet/AppletMessageHandler
+sun/applet/resources/MsgAppletViewer
+sun/applet/AppletSecurity
+sun/awt/AWTSecurityManager
+java/lang/SecurityManager
+java/security/DomainCombiner
+sun/applet/AppletSecurity$1
+java/lang/SecurityManager$1
+sun/net/InetAddressCachePolicy
+java/security/SecurityPermission
+java/util/PropertyPermission
+sun/applet/AppletViewer
+java/applet/AppletContext
+java/awt/print/Printable
+sun/security/util/SecurityConstants
+java/awt/AWTPermission
+java/net/NetPermission
+java/net/SocketPermission
+javax/security/auth/AuthPermission
+java/lang/Thread$1
+java/util/logging/LogManager$5
+java/util/logging/LogManager$6
+sun/applet/StdAppletViewerFactory
+sun/applet/AppletViewerFactory
+sun/applet/AppletViewer$UserActionListener
+sun/applet/AppletViewerPanel
+sun/applet/AppletPanel
+java/applet/AppletStub
+sun/misc/MessageUtils
+sun/applet/AppletPanel$10
+java/security/Policy$1
+sun/security/provider/PolicyFile$1
+sun/security/provider/PolicyInfo
+sun/security/provider/PolicyFile$3
+sun/security/util/PropertyExpander
+sun/security/provider/PolicyParser
+sun/security/util/PolicyUtil
+java/io/StreamTokenizer
+sun/security/provider/PolicyParser$GrantEntry
+sun/security/provider/PolicyParser$PermissionEntry
+sun/security/provider/PolicyFile$PolicyEntry
+sun/security/provider/PolicyParser$ParsingException
+sun/security/provider/PolicyFile$6
+sun/security/provider/PolicyFile$7
+sun/security/provider/SelfPermission
+java/net/SocketPermissionCollection
+java/util/PropertyPermissionCollection
+sun/applet/AppletPanel$9
+sun/applet/AppletClassLoader
+sun/applet/AppletClassLoader$4
+sun/applet/AppletThreadGroup
+sun/applet/AppContextCreator
+sun/applet/AppletPanel$1
+sun/awt/AppContext$3
+sun/awt/MostRecentThreadAppContext
+sun/awt/windows/WMenuBarPeer
+java/awt/peer/MenuBarPeer
+java/awt/peer/MenuComponentPeer
+sun/awt/windows/WMenuPeer
+java/awt/peer/MenuPeer
+java/awt/peer/MenuItemPeer
+sun/awt/windows/WMenuItemPeer
+sun/awt/windows/WMenuItemPeer$2
+sun/awt/windows/awtLocalization
+sun/awt/windows/WFontMetrics
+sun/applet/AppletViewer$1
+sun/applet/AppletViewer$1AppletEventListener
+sun/applet/AppletListener
+sun/applet/AppletEventMulticaster
+sun/awt/CausedFocusEvent
+sun/misc/Queue
+sun/misc/QueueElement
+sun/applet/AppletEvent
+sun/applet/AppletClassLoader$1
+java/net/URLClassLoader$4
+sun/applet/AppletClassLoader$2
+javax/swing/JApplet
+java/lang/ClassLoader$1
+sun/security/provider/PolicyFile$5
+java/security/PermissionsEnumerator
+java/util/Collections$1
+sun/applet/AppletPanel$11
+javax/swing/SwingHeavyWeight
+sun/applet/AppletPanel$8
+sun/applet/AppletPanel$2
+sun/applet/AppletPanel$3
+sun/applet/AppletPanel$6
+java/beans/PropertyVetoException
+javax/swing/BufferStrategyPaintManager$BufferInfo
+javax/swing/BufferStrategyPaintManager$1
+sun/java2d/opengl/WGLGraphicsConfig
+# dabe0c65d3c79925
diff --git a/jdk/make/tools/sharing/tests/GHello.java b/jdk/make/tools/sharing/tests/GHello.java
new file mode 100644
index 0000000..b39ccaa
--- /dev/null
+++ b/jdk/make/tools/sharing/tests/GHello.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+import java.awt.Font;
+import java.awt.Frame;
+import java.awt.Label;
+
+public class GHello extends Frame {
+
+ public static void main(String[] args) {
+ System.out.println("Hello");
+
+ new GHello().show();
+ if (args.length == 1 && args[0].equals("quit")) {
+ try {
+ Thread.currentThread().sleep(200);
+ } catch (InterruptedException e) {
+ }
+ System.exit(0);
+ }
+ }
+
+
+ GHello() {
+ Label label = new Label("Hello");
+ label.setFont(new Font("Monospaced", Font.PLAIN, 144));
+ add(label);
+ pack();
+ }
+}
diff --git a/jdk/make/tools/sharing/tests/Hello.java b/jdk/make/tools/sharing/tests/Hello.java
new file mode 100644
index 0000000..fdb9a48
--- /dev/null
+++ b/jdk/make/tools/sharing/tests/Hello.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+
+public class Hello {
+ public static void main(String[] args) {
+ System.out.println("Hello, World!");
+ }
+}
diff --git a/jdk/make/tools/sharing/tests/JHello.java b/jdk/make/tools/sharing/tests/JHello.java
new file mode 100644
index 0000000..1c13f0f
--- /dev/null
+++ b/jdk/make/tools/sharing/tests/JHello.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+import java.awt.Font;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+
+public class JHello extends JFrame {
+
+ public static void main(String[] args) {
+ System.out.println("Hello");
+
+ new JHello().show();
+ if (args.length == 1 && args[0].equals("quit")) {
+ try {
+ Thread.currentThread().sleep(1000);
+ } catch (InterruptedException e) {
+ }
+ System.exit(0);
+ }
+ }
+
+
+ JHello() {
+ JLabel jlabel = new JLabel("Hello");
+ jlabel.setFont(new Font("Monospaced", Font.PLAIN, 144));
+ getContentPane().add(jlabel);
+ pack();
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/addjsum/AddJsum.java b/jdk/make/tools/src/build/tools/addjsum/AddJsum.java
new file mode 100644
index 0000000..1061de0
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/addjsum/AddJsum.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.addjsum;
+
+import java.io.*;
+import java.util.regex.*;
+
+/** Adds a checksum ("jsum") to the end of a text file. The algorithm
+ used is known to the JVM and prevents trivial tampering with the
+ class list used for class data sharing.
+*/
+
+public class AddJsum {
+ private static final long JSUM_SEED = 0xCAFEBABEBABECAFEL;
+
+ public static void main(String[] args) throws Exception {
+ if (args.length != 2) {
+ System.err.println("Usage: java AddJsum [input file name] [output file name]");
+ System.exit(1);
+ }
+
+ try {
+ File inFile = new File(args[0]);
+ File outFile = new File(args[1]);
+ BufferedReader reader = new BufferedReader(new FileReader(inFile));
+ BufferedWriter writer = new BufferedWriter(new FileWriter(outFile));
+ Pattern p = Pattern.compile("# [0-9A-Fa-f]*");
+ long computedJsum = JSUM_SEED;
+
+ String line = null;
+ while ((line = reader.readLine()) != null) {
+ if (line.length() > 0 && line.charAt(0) == '#') {
+ Matcher m = p.matcher(line);
+ if (!m.matches()) {
+ writer.write(line);
+ writer.newLine();
+ }
+ } else {
+ computedJsum = jsum(computedJsum, line);
+ writer.write(line);
+ writer.newLine();
+ }
+ }
+ String hex = Long.toHexString(computedJsum);
+ int diff = 16 - hex.length();
+ for (int i = 0; i < diff; i++) {
+ hex = "0" + hex;
+ }
+ writer.write("# " + hex);
+ writer.newLine();
+ reader.close();
+ writer.close();
+ } catch (IOException e) {
+ System.err.println("Error reading or writing file");
+ throw(e);
+ }
+ }
+
+ private static long jsum(long start, String str) {
+ long h = start;
+ int len = str.length();
+ for (int i = 0; i < len; i++) {
+ char c = str.charAt(i);
+ if (c <= ' ') {
+ /* Skip spaces and control characters */
+ continue;
+ }
+ h = 31 * h + c;
+ }
+ return h;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/automulti/AutoMulti.java b/jdk/make/tools/src/build/tools/automulti/AutoMulti.java
new file mode 100644
index 0000000..a59edc8
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/automulti/AutoMulti.java
@@ -0,0 +1,458 @@
+/*
+ * Copyright 1998-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.automulti;
+
+import java.lang.reflect.*;
+import java.util.*;
+import java.io.*;
+
+/**
+ * Automatically generates the Multiplexing UI classes
+ * for Swing.
+ * <p>
+ * To use, type 'java AutoMulti <plafdir> <prefix>' where <plafdir>
+ * is the directory containing the source for Swing's UI classes and
+ * <prefix> is the package prefix to use before ".swing.plaf.multi".
+ * For example:
+ *
+ * <pre>
+ * cd TEST
+ * ../../../../build/solaris-sparc/bin/java AutoMulti ../../../../src/share/classes/javax/swing/plaf javax
+ * </pre>
+ *
+ * AutoMulti will scour the plaf directory for *UI.java files and
+ * generate Multi*UI.java files that do the multiplexing thing.
+ * <p>
+ * NOTE: This tool depends upon the existence of <plafdir> and on the
+ * compiled classes from <plafdir> being somewhere in the class path.
+ *
+ * @author Willie Walker
+ */
+public class AutoMulti {
+ static String importLines;
+
+ /**
+ * A silly list of parameter names to use. Skips "i" because we use
+ * it as a 'for' loop counter. If you want to get fancy, please feel
+ * to change how parameter names are obtained. This will break if
+ * someone decides to create a UI method that takes more than 8
+ * parameters. Which one is a bug (this breaking or having a method
+ * with more than eight parameters) is a subjective thing.
+ */
+ public static String[] paramNames = {"a","b","c","d","e","f","g","h"};
+
+ /**
+ * Removes the package names (e.g., javax.swing) from the name.
+ */
+ public static String unqualifyName(String name) {
+ StringTokenizer parser = new StringTokenizer(name,".");
+ String unqualifiedName = null;
+ while (parser.hasMoreTokens()) {
+ unqualifiedName = parser.nextToken();
+ }
+ return removeDollars(unqualifiedName);
+ }
+
+ /**
+ * Strips the extension from the filename.
+ */
+ public static String stripExtension(String name) {
+ StringTokenizer parser = new StringTokenizer(name,".");
+ return parser.nextToken();
+ }
+
+ /**
+ * Adds some spaces.
+ */
+ public static void indent(StringBuffer s, int i) {
+ while (i > 0) {
+ s.append(" ");
+ i--;
+ }
+ }
+
+ /**
+ * Spits out all the beginning stuff.
+ */
+ public static StringBuffer createPreamble(String prefixName) {
+ StringBuffer s = new StringBuffer();
+ s.append("/*\n");
+ s.append(" *\n");
+ s.append(" * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.\n");
+ s.append(" * \n");
+ s.append(" * This software is the proprietary information of Sun Microsystems, Inc. \n");
+ s.append(" * Use is subject to license terms.\n");
+ s.append(" * \n");
+ s.append(" */\n");
+ s.append("package " + prefixName + ".swing.plaf.multi;\n");
+ s.append("\n");
+ return s;
+ }
+
+ /**
+ * Replaces 'Xxx$Yyy' with "Xxx'. Used by addImport because you
+ * can't import nested classes directly.
+ */
+ public static String removeNestedClassName(String s) {
+ int dollarPosition = s.indexOf('$');
+
+ if (dollarPosition >= 0) { // s contains '$'
+ StringBuffer sb = new StringBuffer(s);
+ sb.setLength(dollarPosition);
+ return sb.toString();
+ } else { // no '$'
+ return s;
+ }
+ }
+
+ /**
+ * Replaces '$' with ".'. Needed for printing inner class names
+ * for argument and return types.
+ */
+ public static String removeDollars(String s) {
+ int dollarPosition = s.indexOf('$');
+
+ if (dollarPosition >= 0) { // s contains '$'
+ StringBuffer sb = new StringBuffer(s);
+ while (dollarPosition >= 0) {
+ //XXX: will there ever be more than one '$'?
+ sb.replace(dollarPosition, dollarPosition+1, ".");
+ dollarPosition = sb.indexOf("$", dollarPosition);
+ }
+ return sb.toString();
+ } else { // no $
+ return s;
+ }
+ }
+
+ /**
+ * Adds an import line to the String.
+ */
+ public static void addImport(String s, Class theClass) {
+ if (!theClass.isPrimitive() && (theClass != Object.class)) {
+ String className = removeNestedClassName(theClass.getName());
+ String importLine = new String("import " + className + ";\n");
+ if (importLines.indexOf(importLine) == -1) {
+ importLines += importLine;
+ }
+ }
+ }
+
+ /**
+ * Spits out the class header information.
+ */
+ public static void addHeader(StringBuffer s, String className) {
+ s.append("/**\n");
+ s.append(" * A multiplexing UI used to combine <code>" + className + "</code>s.\n");
+ s.append(" * \n");
+ s.append(" * <p>This file was automatically generated by AutoMulti.\n");
+ s.append(" *\n");
+ s.append(" * @author Otto Multey\n"); // Get it? I crack myself up.
+ s.append(" */\n");
+ s.append("public class Multi" + className + " extends " + className + " {\n");
+ s.append("\n");
+ s.append(" /**\n");
+ s.append(" * The vector containing the real UIs. This is populated \n");
+ s.append(" * in the call to <code>createUI</code>, and can be obtained by calling\n");
+ s.append(" * the <code>getUIs</code> method. The first element is guaranteed to be the real UI \n");
+ s.append(" * obtained from the default look and feel.\n");
+ s.append(" */\n");
+ s.append(" protected Vector uis = new Vector();\n");
+ s.append("\n");
+ s.append("////////////////////\n");
+ s.append("// Common UI methods\n");
+ s.append("////////////////////\n");
+ s.append("\n");
+ s.append(" /**\n");
+ s.append(" * Returns the list of UIs associated with this multiplexing UI. This \n");
+ s.append(" * allows processing of the UIs by an application aware of multiplexing \n");
+ s.append(" * UIs on components.\n");
+ s.append(" */\n");
+ s.append(" public ComponentUI[] getUIs() {\n");
+ s.append(" return MultiLookAndFeel.uisToArray(uis);\n");
+ s.append(" }\n");
+ }
+
+ /**
+ * Prints out the code for a method. This is pretty specific to the
+ * Multiplexing UI code, so don't get any fancy ideas.
+ */
+ public static void addMethod(StringBuffer s, Method m, String origName, String className) {
+
+ // Get the method name and the return type. Be a little careful about arrays.
+ //
+ String methodName = unqualifyName(m.getName());
+ String returnType;
+ if (!m.getReturnType().isArray()) {
+ returnType = unqualifyName(m.getReturnType().toString());
+ addImport(importLines,m.getReturnType());
+ } else {
+ returnType = unqualifyName(m.getReturnType().getComponentType().toString())
+ + "[]";
+ addImport(importLines,m.getReturnType().getComponentType());
+ }
+
+ // Print the javadoc
+ //
+ s.append("\n");
+ if (methodName.equals("createUI")) {
+ s.append(" /**\n");
+ s.append(" * Returns a multiplexing UI instance if any of the auxiliary\n");
+ s.append(" * <code>LookAndFeel</code>s supports this UI. Otherwise, just returns the \n");
+ s.append(" * UI object obtained from the default <code>LookAndFeel</code>.\n");
+ s.append(" */\n");
+ } else if (!returnType.equals("void")) {
+ s.append(" /**\n");
+ s.append(" * Invokes the <code>" + methodName + "</code> method on each UI handled by this object.\n");
+ s.append(" * \n");
+ s.append(" * @return the value obtained from the first UI, which is\n");
+ s.append(" * the UI obtained from the default <code>LookAndFeel</code>\n");
+ s.append(" */\n");
+ } else {
+ s.append(" /**\n");
+ s.append(" * Invokes the <code>" + methodName
+ + "</code> method on each UI handled by this object.\n");
+ s.append(" */\n");
+ }
+
+ // Print the method signature
+ //
+ s.append(" public");
+ if (Modifier.isStatic(m.getModifiers())) {
+ s.append(" static");
+ }
+ s.append(" " + returnType);
+ s.append(" " + methodName);
+ s.append("(");
+
+ Class[] params = m.getParameterTypes();
+ Class temp;
+ String braces;
+ for (int i = 0; i < params.length; i++) {
+ if (i > 0) {
+ s.append(", ");
+ }
+ temp = params[i];
+ braces = new String("");
+ while (temp.isArray()) {
+ braces += "[]";
+ temp = temp.getComponentType();
+ }
+ s.append(unqualifyName(temp.getName()) + braces + " " + paramNames[i]);
+ addImport(importLines,temp);
+ }
+ s.append(")");
+
+ // Don't forget about exceptions
+ //
+ Class exceptions[] = m.getExceptionTypes();
+ String throwsString = new String("");
+
+ if (exceptions.length > 0) {
+ s.append("\n");
+ indent(s,12);
+ s.append("throws ");
+ for (int i = 0; i < exceptions.length; i++) {
+ if (i > 0) {
+ s.append(", ");
+ }
+ s.append(unqualifyName(exceptions[i].getName()));
+ addImport(importLines,exceptions[i]);
+ }
+ }
+ s.append(throwsString + " {\n");
+
+ // Now print out the contents of the method. We do a special thing
+ // for the createUI method, another thing if the method returns 'void'
+ // and a third thing if we don't do either of the first two. If
+ // you want to squash this down, feel free.
+ //
+ if (methodName.equals("createUI")) {
+ indent(s,8);
+ s.append("ComponentUI mui = new Multi" + origName + "();\n");
+ indent(s,8);
+ s.append("return MultiLookAndFeel.createUIs(mui,\n");
+ indent(s,42);
+ s.append("((Multi" + origName +") mui).uis,\n");
+ indent(s,42);
+ for (int i = 0; i < params.length; i++) {
+ if (i > 0) {
+ s.append(",");
+ }
+ s.append(paramNames[i]);
+ }
+ s.append(");\n");
+ } else if (!returnType.equals("void")) {
+ indent(s,8);
+ s.append(returnType + " returnValue = \n");
+ indent(s,12);
+ s.append("((" + className + ") (uis.elementAt(0)))."
+ + methodName + "(");
+ for (int i = 0; i < params.length; i++) {
+ if (i > 0) {
+ s.append(",");
+ }
+ s.append(paramNames[i]);
+ }
+ s.append(");\n");
+ indent(s,8);
+ s.append("for (int i = 1; i < uis.size(); i++) {\n");
+ indent(s,12);
+ s.append("((" + className + ") (uis.elementAt(i)))."
+ + methodName + "(");
+ for (int i = 0; i < params.length; i++) {
+ if (i > 0) {
+ s.append(",");
+ }
+ s.append(paramNames[i]);
+ }
+ s.append(");\n");
+ indent(s,8);
+ s.append("}\n");
+ indent(s,8);
+ s.append("return returnValue;\n");
+ } else {
+ indent(s,8);
+ s.append("for (int i = 0; i < uis.size(); i++) {\n");
+ indent(s,12);
+ s.append("((" + className + ") (uis.elementAt(i)))."
+ + methodName + "(");
+ for (int i = 0; i < params.length; i++) {
+ if (i > 0) {
+ s.append(",");
+ }
+ s.append(paramNames[i]);
+ }
+ s.append(");\n");
+ indent(s,8);
+ s.append("}\n");
+ }
+ indent(s,4);
+ s.append("}\n");
+ }
+
+ /**
+ * Takes a plaf class name (e.g., "MenuUI") and generates the corresponding
+ * Multiplexing UI Java source code (e.g., "MultiMenuUI.java").
+ */
+ public static void generateFile(String prefixName, String className) {
+ try {
+ FileOutputStream fos;
+ PrintWriter outFile;
+
+ importLines = new String();
+ importLines += new String("import java.util.Vector;\n");
+
+ StringBuffer body = new StringBuffer();
+ Class wee = Class.forName(prefixName + ".swing.plaf." + className);
+ String weeName = unqualifyName(wee.getName());
+ addImport(importLines,wee);
+ while (!weeName.equals("Object")) {
+ body.append("\n");
+ body.append("////////////////////\n");
+ body.append("// " + weeName + " methods\n");
+ body.append("////////////////////\n");
+ Method[] methods = wee.getDeclaredMethods();
+ for (int i=0; i < methods.length; i++) {
+ if (Modifier.isPublic(methods[i].getModifiers())) {
+ addMethod(body,methods[i],className,weeName);
+ }
+ }
+ wee = wee.getSuperclass();
+ weeName = unqualifyName(wee.getName());
+ addImport(importLines,wee);
+ }
+
+ fos = new FileOutputStream("Multi" + className + ".java");
+ outFile = new PrintWriter(fos);
+ StringBuffer outText = createPreamble(prefixName);
+ outText.append(importLines.toString() + "\n");
+ addHeader(outText,className);
+ outText.append(body.toString());
+ outText.append("}\n");
+ outFile.write(outText.toString());
+ outFile.flush();
+ outFile.close();
+ } catch (Exception e) {
+ System.err.println(e);
+ }
+ }
+
+ /**
+ * D'Oh! Something bad happened.
+ */
+ public static void usage(String s) throws IOException {
+ System.err.println("Usage: AutoMulti <plafdir> [com.sun]");
+ throw new IllegalArgumentException(s);
+ }
+
+ /**
+ * Takes the plaf directory name and generates the multiplexing UI
+ * source code.
+ */
+ public static void main(String[] args) throws IOException {
+
+ if (args.length < 1) {
+ usage("");
+ }
+
+ String dirName = args[0];
+ File dir = new File(dirName);
+ if (!dir.isDirectory()) {
+ System.err.println("No such directory: " + dirName);
+ usage("");
+ }
+
+ String prefixName;
+ if (args.length > 1) {
+ prefixName = args[1];
+ } else {
+ prefixName = "com.sun.java";
+ }
+
+ String plafUIs[] = dir.list(new UIJavaFilter());
+ for (int i = 0; i < plafUIs.length; i++) {
+ generateFile(prefixName,stripExtension(plafUIs[i]));
+ }
+ }
+}
+
+/**
+ * Only accepts file names of the form *UI.java. The one exception
+ * is not accepting ComponentUI.java because we don't need to generate
+ * a multiplexing class for it.
+ */
+class UIJavaFilter implements FilenameFilter {
+ public boolean accept(File dir, String name) {
+ if (name.equals("ComponentUI.java")) {
+ return false;
+ } else if (name.endsWith("UI.java")) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/automulti/README.txt b/jdk/make/tools/src/build/tools/automulti/README.txt
new file mode 100644
index 0000000..b5de5af
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/automulti/README.txt
@@ -0,0 +1,36 @@
+AutoMulti is the tool that automatically generates the
+Multi*UI classes for the Multiplexing look and feel.
+Instructions for using it are in AutoMulti.java.
+
+TestALFGenerator is a tool (a variation of AutoMulti)
+that automatically generates an auxiliary look and
+feel that you can use to test the Multiplexing look
+and feel. The TestALF look and feel implements every
+method by printing the message "In the xxx method of
+the TextALFYyyUI class." and, except in the case of
+createUI, returning something meaningless (since,
+except in the case of createUI, the return value is
+ignored).
+
+TestALFLookAndFeel.java is the only non-auto-generated
+file for the TestALF L&F. If you specify a package
+argument to TestALFGenerator, you'll have to change
+the code in TestALFLookAndFeel.java to reflect the
+package name.
+
+To test any application with the TestALF, make sure the
+compiled TestALF classes are in the class path. Then add
+this to the <JDK_HOME>/lib/swing.properties file (which
+you'll probably have to create):
+
+swing.auxiliarylaf=TestALFLookAndFeel
+
+E.g., if you're running SwingSet2 against your solaris
+build, then you'd create/edit the swing.properties file
+in <wsdir>/build/solaris-sparc/lib.
+
+Then run any app. You'll see lots of thrilling "In the
+Xxxx method of the Yyy class" messages. If you get anything
+else (especially an exception), then you've found a bug.
+Probably in the default look and feel.
+
diff --git a/jdk/make/tools/src/build/tools/automulti/TestALFGenerator.java b/jdk/make/tools/src/build/tools/automulti/TestALFGenerator.java
new file mode 100644
index 0000000..9b07dbc
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/automulti/TestALFGenerator.java
@@ -0,0 +1,401 @@
+/*
+ * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.automulti;
+
+import java.lang.reflect.*;
+import java.util.*;
+import java.io.*;
+
+/**
+ * Automatically generates an auxiliary look and feel to be
+ * used for testing the Multiplexing look and feel.
+ * <p>
+ * To use, type 'java TestALFGenerator <plafdir> [<package>]' where <plafdir>
+ * is the directory containing the source for Swing's UI classes.
+ * <package> is an optional argument that specifies the package
+ * of the TestALF classes. If it's omitted, the classes are in
+ * the default package.
+ * For example:
+ *
+ * <pre>
+ * ../../../../build/solaris-sparc/bin/java TestALFGenerator ../../../../src/share/classes/javax/swing/plaf com.myco.myalaf
+ * </pre>
+ *
+ * TestALFGenerator will scour the plaf directory for *UI.java files and
+ * generate TestALF*UI.java files.
+ * <p>
+ * NOTE: This tool depends upon the existence of <plafdir> and on the
+ * compiled classes from <plafdir> being somewhere in the class path.
+ *
+ * @author Willie Walker
+ */
+public class TestALFGenerator {
+ static String importLines;
+ static String packageName;
+ static String classPrefix = "TestALF";
+
+ /**
+ * A silly list of parameter names to use. Skips "i" because we use
+ * it as a 'for' loop counter. If you want to get fancy, please feel
+ * to change how parameter names are obtained. This will break if
+ * someone decides to create a UI method that takes more than 8
+ * parameters. Which one is a bug (this breaking or having a method
+ * with more than eight parameters) is a subjective thing.
+ */
+ public static String[] paramNames = {"a","b","c","d","e","f","g","h"};
+
+ /**
+ * Removes the package names (e.g., javax.swing) from the name.
+ */
+ public static String unqualifyName(String name) {
+ StringTokenizer parser = new StringTokenizer(name,".");
+ String unqualifiedName = null;
+ while (parser.hasMoreTokens()) {
+ unqualifiedName = parser.nextToken();
+ }
+ return removeDollars(unqualifiedName);
+ }
+
+ /**
+ * Strips the extension from the filename.
+ */
+ public static String stripExtension(String name) {
+ StringTokenizer parser = new StringTokenizer(name,".");
+ return parser.nextToken();
+ }
+
+ /**
+ * Adds some spaces.
+ */
+ public static void indent(StringBuffer s, int i) {
+ while (i > 0) {
+ s.append(" ");
+ i--;
+ }
+ }
+
+ /**
+ * Spits out all the beginning stuff.
+ */
+ public static StringBuffer createPreamble(String prefixName) {
+ StringBuffer s = new StringBuffer();
+ s.append("/*\n");
+ s.append(" *\n");
+ s.append(" * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.\n");
+ s.append(" * \n");
+ s.append(" * This software is the proprietary information of Sun Microsystems, Inc. \n");
+ s.append(" * Use is subject to license terms.\n");
+ s.append(" * \n");
+ s.append(" */\n");
+ if (packageName != null) {
+ s.append("package " + packageName + ";\n");
+ s.append("\n");
+ }
+ return s;
+ }
+
+ /**
+ * Replaces 'Xxx$Yyy' with "Xxx'. Used by addImport because you
+ * can't import nested classes directly.
+ */
+ public static String removeNestedClassName(String s) {
+ int dollarPosition = s.indexOf('$');
+
+ if (dollarPosition >= 0) { // s contains '$'
+ StringBuffer sb = new StringBuffer(s);
+ sb.setLength(dollarPosition);
+ return sb.toString();
+ } else { // no '$'
+ return s;
+ }
+ }
+
+ /**
+ * Replaces '$' with ".'. Needed for printing inner class names
+ * for argument and return types.
+ */
+ public static String removeDollars(String s) {
+ int dollarPosition = s.indexOf('$');
+
+ if (dollarPosition >= 0) { // s contains '$'
+ StringBuffer sb = new StringBuffer(s);
+ while (dollarPosition >= 0) {
+ //XXX: will there ever be more than one '$'?
+ sb.replace(dollarPosition, dollarPosition+1, ".");
+ dollarPosition = sb.indexOf("$", dollarPosition);
+ }
+ return sb.toString();
+ } else { // no $
+ return s;
+ }
+ }
+
+ /**
+ * Adds an import line to the String.
+ */
+ public static void addImport(String s, Class theClass) {
+ if (!theClass.isPrimitive() && (theClass != Object.class)) {
+ String className = removeNestedClassName(theClass.getName());
+ String importLine = new String("import " + className + ";\n");
+ if (importLines.indexOf(importLine) == -1) {
+ importLines += importLine;
+ }
+ }
+ }
+
+ /**
+ * Spits out the class header information.
+ */
+ public static void addHeader(StringBuffer s, String className) {
+ s.append("/**\n");
+ s.append(" * An auxiliary UI for <code>" + className + "</code>s.\n");
+ s.append(" * \n");
+ s.append(" * <p>This file was automatically generated by TestALFGenerator.\n");
+ s.append(" *\n");
+ s.append(" * @author Otto Multey\n"); // Get it? I crack myself up.
+ s.append(" */\n");
+ s.append("public class " + classPrefix + className + " extends " + className + " {\n");
+ s.append("\n");
+ }
+
+ /**
+ * Prints out the code for a method.
+ */
+ public static void addMethod(StringBuffer s, Method m, String origName, String className) {
+
+ // Get the method name and the return type. Be a little careful about arrays.
+ //
+ String methodName = unqualifyName(m.getName());
+ String returnType;
+
+ if (!m.getReturnType().isArray()) {
+ returnType = unqualifyName(m.getReturnType().toString());
+ addImport(importLines,m.getReturnType());
+ } else {
+ returnType = unqualifyName(m.getReturnType().getComponentType().toString())
+ + "[]";
+ addImport(importLines,m.getReturnType().getComponentType());
+ }
+
+ // Print the javadoc
+ //
+ s.append("\n");
+
+ if (methodName.equals("createUI")) {
+ s.append(" /**\n");
+ s.append(" * Returns a UI object for this component.\n");
+ s.append(" */\n");
+ } else {
+ s.append(" /**\n");
+ s.append(" * Prints a message saying this method has been invoked.\n");
+ s.append(" */\n");
+ }
+
+ // Print the method signature
+ //
+ s.append(" public");
+ if (Modifier.isStatic(m.getModifiers())) {
+ s.append(" static");
+ }
+ s.append(" " + returnType);
+ s.append(" " + methodName);
+ s.append("(");
+
+ Class[] params = m.getParameterTypes();
+ Class temp;
+ String braces;
+ for (int i = 0; i < params.length; i++) {
+ if (i > 0) {
+ s.append(", ");
+ }
+ temp = params[i];
+ braces = new String("");
+ while (temp.isArray()) {
+ braces += "[]";
+ temp = temp.getComponentType();
+ }
+ s.append(unqualifyName(temp.getName()) + braces + " " + paramNames[i]);
+ addImport(importLines,temp);
+ }
+ s.append(")");
+
+ // Don't forget about exceptions
+ //
+ Class exceptions[] = m.getExceptionTypes();
+ String throwsString = new String("");
+
+ if (exceptions.length > 0) {
+ s.append("\n");
+ indent(s,12);
+ s.append("throws ");
+ for (int i = 0; i < exceptions.length; i++) {
+ if (i > 0) {
+ s.append(", ");
+ }
+ s.append(unqualifyName(exceptions[i].getName()));
+ addImport(importLines,exceptions[i]);
+ }
+ }
+ s.append(throwsString + " {\n");
+
+ // Now print out the contents of the method.
+ indent(s,8);
+ s.append("System.out.println(\"In the " + methodName
+ + " method of the "
+ + classPrefix + origName + " class.\");\n");
+ if (methodName.equals("createUI")) {
+ indent(s,8);
+ s.append("return ui;\n");
+ } else {
+ // If we have to return something, do so.
+ if (!returnType.equals("void")) {
+ Class rType = m.getReturnType();
+ indent(s,8);
+ if (!rType.isPrimitive()) {
+ s.append("return null;\n");
+ } else if (rType == Boolean.TYPE) {
+ s.append("return false;\n");
+ } else if (rType == Character.TYPE) {
+ s.append("return '0';\n");
+ } else { // byte, short, int, long, float, or double
+ s.append("return 0;\n");
+ }
+ }
+ }
+
+ indent(s,4);
+ s.append("}\n");
+ }
+
+ /**
+ * Takes a plaf class name (e.g., "MenuUI") and generates the corresponding
+ * TestALF UI Java source code (e.g., "TestALFMenuUI.java").
+ */
+ public static void generateFile(String prefixName, String className) {
+ try {
+ FileOutputStream fos;
+ PrintWriter outFile;
+
+ importLines = new String();
+ importLines += new String("import java.util.Vector;\n");
+
+ StringBuffer body = new StringBuffer();
+ Class wee = Class.forName(prefixName + ".swing.plaf." + className);
+ String weeName = unqualifyName(wee.getName());
+ String thisClassName = classPrefix + className;
+ addImport(importLines,wee);
+
+ // Declare and initialize the shared UI object.
+ body.append("\n");
+ body.append("////////////////////\n");
+ body.append("// Shared UI object\n");
+ body.append("////////////////////\n");
+ body.append("private final static " + thisClassName
+ + " ui = new " + thisClassName + "();\n");
+
+ while (!weeName.equals("Object")) {
+ body.append("\n");
+ body.append("////////////////////\n");
+ body.append("// " + weeName + " methods\n");
+ body.append("////////////////////\n");
+ Method[] methods = wee.getDeclaredMethods();
+ for (int i=0; i < methods.length; i++) {
+ if (Modifier.isPublic(methods[i].getModifiers())) {
+ addMethod(body,methods[i],className,weeName);
+ }
+ }
+ wee = wee.getSuperclass();
+ weeName = unqualifyName(wee.getName());
+ addImport(importLines,wee);
+ }
+
+ fos = new FileOutputStream(classPrefix + className + ".java");
+ outFile = new PrintWriter(fos);
+ StringBuffer outText = createPreamble(prefixName);
+ outText.append(importLines.toString() + "\n");
+ addHeader(outText,className);
+ outText.append(body.toString());
+ outText.append("}\n");
+ outFile.write(outText.toString());
+ outFile.flush();
+ outFile.close();
+ } catch (Exception e) {
+ System.err.println(e);
+ }
+ }
+
+ /**
+ * D'Oh! Something bad happened.
+ */
+ public static void usage(String s) throws IOException {
+ System.err.println("Usage: java TestALFGenerator <plafdir> [<packageName>]");
+ throw new IllegalArgumentException(s);
+ }
+
+ /**
+ * Takes the plaf directory name and generates the TestALF UI
+ * source code.
+ */
+ public static void main(String[] args) throws IOException {
+
+ if (args.length < 1) {
+ usage("");
+ }
+
+ String dirName = args[0];
+ File dir = new File(dirName);
+ if (!dir.isDirectory()) {
+ System.err.println("No such directory: " + dirName);
+ usage("");
+ }
+
+ if (args.length > 1) {
+ packageName = args[1];
+ }
+
+ String plafUIs[] = dir.list(new UIJavaFilter());
+ for (int i = 0; i < plafUIs.length; i++) {
+ generateFile("javax",stripExtension(plafUIs[i]));
+ }
+ }
+}
+
+/**
+ * Only accepts file names of the form *UI.java. The one exception
+ * is not accepting ComponentUI.java because we don't need to generate
+ * a TestALF class for it.
+ */
+class UIJavaFilter implements FilenameFilter {
+ public boolean accept(File dir, String name) {
+ if (name.equals("ComponentUI.java")) {
+ return false;
+ } else if (name.endsWith("UI.java")) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/automulti/TestALFLookAndFeel.java b/jdk/make/tools/src/build/tools/automulti/TestALFLookAndFeel.java
new file mode 100644
index 0000000..aadab48
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/automulti/TestALFLookAndFeel.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+//package com.myco.myalaf; //search for myalaf for other refs to package name
+
+
+package build.tools.automulti;
+
+import java.util.Vector;
+import java.lang.reflect.Method;
+import javax.swing.*;
+import javax.swing.plaf.*;
+
+/**
+ * <p>An auxiliary look and feel used for testing the Multiplexing
+ * look and feel.
+ * <p>
+ *
+ * @see UIManager#addAuxiliaryLookAndFeel
+ * @see javax.swing.plaf.multi
+ *
+ * @author Kathy Walrath
+ * @author Will Walker
+ */
+public class TestALFLookAndFeel extends LookAndFeel {
+
+//////////////////////////////
+// LookAndFeel methods
+//////////////////////////////
+
+ /**
+ * Returns a string, suitable for use in menus,
+ * that identifies this look and feel.
+ *
+ * @return a string such as "Test Auxiliary Look and Feel"
+ */
+ public String getName() {
+ return "Test Auxiliary Look and Feel";
+ }
+
+ /**
+ * Returns a string, suitable for use by applications/services,
+ * that identifies this look and feel.
+ *
+ * @return "TestALF"
+ */
+ public String getID() {
+ return "TestALF";
+ }
+
+ /**
+ * Returns a one-line description of this look and feel.
+ *
+ * @return a descriptive string such as "Allows multiple UI instances per component instance"
+ */
+ public String getDescription() {
+ return "Allows multiple UI instances per component instance";
+ }
+
+ /**
+ * Returns <code>false</code>;
+ * this look and feel is not native to any platform.
+ *
+ * @return <code>false</code>
+ */
+ public boolean isNativeLookAndFeel() {
+ return false;
+ }
+
+ /**
+ * Returns <code>true</code>;
+ * every platform permits this look and feel.
+ *
+ * @return <code>true</code>
+ */
+ public boolean isSupportedLookAndFeel() {
+ return true;
+ }
+
+ /**
+ * Creates, initializes, and returns
+ * the look and feel specific defaults.
+ * For this look and feel,
+ * the defaults consist solely of
+ * mappings of UI class IDs
+ * (such as "ButtonUI")
+ * to <code>ComponentUI</code> class names
+ * (such as "com.myco.myalaf.MultiButtonUI").
+ *
+ * @return an initialized <code>UIDefaults</code> object
+ * @see javax.swing.JComponent#getUIClassID
+ */
+ public UIDefaults getDefaults() {
+ System.out.println("In the TestALFLookAndFeel getDefaults method.");
+ UIDefaults table = new TestALFUIDefaults();
+ //String prefix = "com.myco.myalaf.TestALF";
+ String prefix = "TestALF";
+ Object[] uiDefaults = {
+ "ButtonUI", prefix + "ButtonUI",
+ "CheckBoxMenuItemUI", prefix + "MenuItemUI",
+ "CheckBoxUI", prefix + "ButtonUI",
+ "ColorChooserUI", prefix + "ColorChooserUI",
+ "ComboBoxUI", prefix + "ComboBoxUI",
+ "DesktopIconUI", prefix + "DesktopIconUI",
+ "DesktopPaneUI", prefix + "DesktopPaneUI",
+ "EditorPaneUI", prefix + "TextUI",
+ "FileChooserUI", prefix + "FileChooserUI",
+ "FormattedTextFieldUI", prefix + "TextUI",
+ "InternalFrameUI", prefix + "InternalFrameUI",
+ "LabelUI", prefix + "LabelUI",
+ "ListUI", prefix + "ListUI",
+ "MenuBarUI", prefix + "MenuBarUI",
+ "MenuItemUI", prefix + "MenuItemUI",
+ "MenuUI", prefix + "MenuItemUI",
+ "OptionPaneUI", prefix + "OptionPaneUI",
+ "PanelUI", prefix + "PanelUI",
+ "PasswordFieldUI", prefix + "TextUI",
+ "PopupMenuSeparatorUI", prefix + "SeparatorUI",
+ "PopupMenuUI", prefix + "PopupMenuUI",
+ "ProgressBarUI", prefix + "ProgressBarUI",
+ "RadioButtonMenuItemUI", prefix + "MenuItemUI",
+ "RadioButtonUI", prefix + "ButtonUI",
+ "RootPaneUI", prefix + "RootPaneUI",
+ "ScrollBarUI", prefix + "ScrollBarUI",
+ "ScrollPaneUI", prefix + "ScrollPaneUI",
+ "SeparatorUI", prefix + "SeparatorUI",
+ "SliderUI", prefix + "SliderUI",
+ "SpinnerUI", prefix + "SpinnerUI",
+ "SplitPaneUI", prefix + "SplitPaneUI",
+ "TabbedPaneUI", prefix + "TabbedPaneUI",
+ "TableHeaderUI", prefix + "TableHeaderUI",
+ "TableUI", prefix + "TableUI",
+ "TextAreaUI", prefix + "TextUI",
+ "TextFieldUI", prefix + "TextUI",
+ "TextPaneUI", prefix + "TextUI",
+ "ToggleButtonUI", prefix + "ButtonUI",
+ "ToolBarSeparatorUI", prefix + "SeparatorUI",
+ "ToolBarUI", prefix + "ToolBarUI",
+ "ToolTipUI", prefix + "ToolTipUI",
+ "TreeUI", prefix + "TreeUI",
+ "ViewportUI", prefix + "ViewportUI",
+ };
+
+ table.putDefaults(uiDefaults);
+ return table;
+ }
+
+}
+
+/**
+ * We want the Test auxiliary look and feel to be quiet and fallback
+ * gracefully if it cannot find a UI. This class overrides the
+ * getUIError method of UIDefaults, which is the method that
+ * emits error messages when it cannot find a UI class in the
+ * LAF.
+ */
+class TestALFUIDefaults extends UIDefaults {
+ protected void getUIError(String msg) {
+ System.err.println("Test auxiliary L&F: " + msg);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/buildmetaindex/BuildMetaIndex.java b/jdk/make/tools/src/build/tools/buildmetaindex/BuildMetaIndex.java
new file mode 100644
index 0000000..4e116c3
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/buildmetaindex/BuildMetaIndex.java
@@ -0,0 +1,371 @@
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.buildmetaindex;
+
+import java.io.*;
+import java.util.*;
+import java.util.jar.*;
+
+/** Constructs a meta-index of the specified jar files. The meta-index
+ contains prefixes of packages contained in these jars, indexed by
+ the jar file name. It is intended to be consumed by the JVM to
+ allow the boot class loader to be made lazier. For example, when
+ class data sharing is enabled, the presence of the meta-index
+ allows the JVM to skip opening rt.jar if all of the dependent
+ classes of the application are in the shared archive. A similar
+ mechanism could be useful at the application level as well, for
+ example to make the extension class loader lazier.
+
+ <p> The contents of the meta-index file for jre/lib look something
+ like this:
+
+ <PRE>
+% VERSION 2
+# charsets.jar
+sun/
+# jce.jar
+javax/
+! jsse.jar
+sun/
+com/sun/net/
+javax/
+com/sun/security/
+# management-agent.jar
+! rt.jar
+org/w3c/
+com/sun/image/
+com/sun/org/
+com/sun/imageio/
+com/sun/accessibility/
+javax/
+...
+ </PRE>
+
+ <p> It is a current invariant of the code in the JVM which
+ consumes the meta-index that the meta-index indexes only jars in
+ one directory. It is acceptable for jars in that directory to not
+ be mentioned in the meta-index. The meta-index is designed more to
+ be able to perform a quick rejection test of the presence of a
+ particular class in a particular jar file than to be a precise
+ index of the contents of the jar. */
+
+public class BuildMetaIndex {
+ public static void main(String[] args) throws IOException {
+ /* The correct usage of this class is as following:
+ * java BuildMetaIndex -o <meta-index> <a list of jar files>
+ * So the argument length should be at least 3 and the first argument should
+ * be '-o'.
+ */
+ if (args.length < 3 ||
+ !args[0].equals("-o")) {
+ printUsage();
+ System.exit(1);
+ }
+
+ try {
+ PrintStream out = new PrintStream(new FileOutputStream(args[1]));
+ out.println("% VERSION 2");
+ out.println("% WARNING: this file is auto-generated; do not edit");
+ out.println("% UNSUPPORTED: this file and its format may change and/or");
+ out.println("% may be removed in a future release");
+ for (int i = 2; i < args.length; i++) {
+ String filename = args[i];
+ JarMetaIndex jmi = new JarMetaIndex(filename);
+ HashSet<String> index = jmi.getMetaIndex();
+ if (index == null) {
+ continue;
+ }
+ /*
+ * meta-index file plays different role in JVM and JDK side.
+ * On the JVM side, meta-index file is used to speed up locating the
+ * class files only while on the JDK side, meta-index file is used to speed
+ * up the resources file and class file.
+ * To help the JVM and JDK code to better utilize the information in meta-index
+ * file, we mark the jar file differently. Here is the current rule we use (See
+ * JarFileKind.getMarkChar() method. )
+ * For jar file containing only class file, we put '!' before the jar file name;
+ * for jar file containing only resources file, we put '@' before the jar file name;
+ * for jar file containing both resources and class file, we put '#' before the jar name.
+ * Notice the fact that every jar file contains at least the manifest file, so when
+ * we say "jar file containing only class file", we don't include that file.
+ */
+
+ out.println(jmi.getJarFileKind().getMarkerChar() + " " + filename);
+ for (Iterator<String> iter = index.iterator(); iter.hasNext(); ) {
+ out.println(iter.next());
+ }
+
+ }
+ out.flush();
+ out.close();
+ } catch (FileNotFoundException fnfe) {
+ System.err.println("FileNotFoundException occurred");
+ System.exit(2);
+ }
+ }
+
+ private static void printUsage() {
+ String usage =
+ "BuildMetaIndex is used to generate a meta index file for the jar files\n" +
+ "you specified. The following is its usage:\n" +
+ " java BuildMetaIndex -o <the output meta index file> <a list of jar files> \n" +
+ " You can specify *.jar to refer to all the jar files in the current directory";
+
+ System.err.println(usage);
+ }
+}
+
+enum JarFileKind {
+
+ CLASSONLY ('!'),
+ RESOURCEONLY ('@'),
+ MIXED ('#');
+
+ private char markerChar;
+
+ JarFileKind(char markerChar) {
+ this.markerChar = markerChar;
+ }
+
+ public char getMarkerChar() {
+ return markerChar;
+ }
+}
+
+/*
+ * JarMetaIndex associates the jar file with a set of what so called
+ * "meta-index" of the jar file. Essentially, the meta-index is a list
+ * of class prefixes and the plain files contained in META-INF directory (
+ * not include the manifest file itself). This will help sun.misc.URLClassPath
+ * to quickly locate the resource file and hotspot VM to locate the class file.
+ *
+ */
+class JarMetaIndex {
+ private JarFile jar;
+ private volatile HashSet<String> indexSet;
+
+ /*
+ * A hashmap contains a mapping from the prefix string to
+ * a hashset which contains a set of the second level of prefix string.
+ */
+ private HashMap<String, HashSet<String>> knownPrefixMap = new
+ HashMap<String, HashSet<String>>();
+
+ /*
+ * We add maximum 5 second level entries to "sun", "java" and
+ * "javax" entries. Tune this parameter to get a balance on the
+ * cold start and footprint.
+ */
+ private static final int MAX_PKGS_WITH_KNOWN_PREFIX = 5;
+
+ private JarFileKind jarFileKind;
+
+ JarMetaIndex(String fileName) throws IOException {
+ jar = new JarFile(fileName);
+ knownPrefixMap.put("sun", new HashSet<String>());
+ knownPrefixMap.put("java", new HashSet<String>());
+ knownPrefixMap.put("javax", new HashSet<String>());
+ }
+
+ /* Returns a HashSet contains the meta index string. */
+ HashSet<String> getMetaIndex() {
+ if (indexSet == null) {
+ synchronized(this) {
+ if (indexSet == null) {
+ indexSet = new HashSet<String>();
+ Enumeration entries = jar.entries();
+ boolean containsOnlyClass = true;
+ boolean containsOnlyResource = true;
+ while (entries.hasMoreElements()) {
+ JarEntry entry = (JarEntry) entries.nextElement();
+ String name = entry.getName();
+ /* We only look at the non-directory entry.
+ MANIFEST file is also skipped. */
+ if (entry.isDirectory()
+ || name.equals("META-INF/MANIFEST.MF")) {
+ continue;
+ }
+
+ /* Once containsOnlyResource or containsOnlyClass
+ turns to false, no need to check the entry type.
+ */
+ if (containsOnlyResource || containsOnlyClass) {
+ if (name.endsWith(".class")) {
+ containsOnlyResource = false;
+ } else {
+ containsOnlyClass = false;
+ }
+ }
+
+ /* Add the full-qualified name of plain files under
+ META-INF directory to the indexSet.
+ */
+ if (name.startsWith("META-INF")) {
+ indexSet.add(name);
+ continue;
+ }
+
+ /* Add the prefix name to the knownPrefixMap if the
+ name starts with any string in the knownPrefix list.
+ */
+ if (isPrefixKnown(name)) {
+ continue;
+ }
+
+ String[] pkgElements = name.split("/");
+ // Last one is the class name; definitely ignoring that
+ if (pkgElements.length > 2) {
+ String meta = null;
+ // Need more information than just first two package
+ // name elements to determine that classes in
+ // deploy.jar are not in rt.jar
+ if (pkgElements.length > 3 &&
+ pkgElements[0].equals("com") &&
+ pkgElements[1].equals("sun")) {
+ // Need more precise information to disambiguate
+ // (illegal) references from applications to
+ // obsolete backported collections classes in
+ // com/sun/java/util
+ if (pkgElements.length > 4 &&
+ pkgElements[2].equals("java")) {
+ int bound = 0;
+ if (pkgElements[3].equals("util")) {
+ // Take all of the packages
+ bound = pkgElements.length - 1;
+ } else {
+ // Trim it somewhat more
+ bound = 4;
+ }
+ meta = "";
+ for (int j = 0; j < bound; j++) {
+ meta += pkgElements[j] + "/";
+ }
+ } else {
+ meta = pkgElements[0] + "/" + pkgElements[1]
+ + "/" + pkgElements[2] + "/";
+ }
+ } else {
+ meta = pkgElements[0] + "/" + pkgElements[1] + "/";
+ }
+ indexSet.add(meta);
+ }
+
+ } // end of "while" loop;
+
+ // Add the second level package names to the indexSet for
+ // the predefined names such as "sun", "java" and "javax".
+ addKnownPrefix();
+
+ /* Set "jarFileKind" attribute. */
+ if (containsOnlyClass) {
+ jarFileKind = JarFileKind.CLASSONLY;
+ } else if (containsOnlyResource) {
+ jarFileKind = JarFileKind.RESOURCEONLY;
+ } else {
+ jarFileKind = JarFileKind.MIXED;
+ }
+ }
+ }
+ }
+ return indexSet;
+ }
+
+ /*
+ * Checks to see whether the name starts with a string which is in the predefined
+ * list. If it is among one of the predefined prefixes, add it to the knowPrefixMap
+ * and returns true, otherwise, returns false.
+ * Returns true if the name is in a predefined prefix list. Otherwise, returns false.
+ */
+ boolean isPrefixKnown(String name) {
+ int firstSlashIndex = name.indexOf("/");
+ if (firstSlashIndex == -1) {
+ return false;
+ }
+
+ String firstPkgElement = name.substring(0, firstSlashIndex);
+ HashSet<String> pkgSet = knownPrefixMap.get(firstPkgElement);
+
+ /* The name does not starts with "sun", "java" or "javax". */
+ if (pkgSet == null) {
+ return false;
+ }
+
+ String secondPkgElement = name.substring(firstSlashIndex + 1,
+ name.indexOf("/",
+ firstSlashIndex + 1));
+
+ /* Add the second level package name to the corresponding hashset. */
+ if (secondPkgElement != null) {
+ pkgSet.add(secondPkgElement);
+ }
+
+ return true;
+ }
+
+ /*
+ * Adds all the second level package elements for "sun", "java" and "javax"
+ * if the corresponding jar file does not contain more than
+ * MAX_PKGS_WITH_KNOWN_PREFIX such entries.
+ */
+ void addKnownPrefix() {
+ if (indexSet == null) {
+ return;
+ }
+
+ /* Iterate through the hash map, add the second level package names
+ * to the indexSet if has any.
+ */
+ for (Iterator<String> keysIterator = knownPrefixMap.keySet().iterator();
+ keysIterator.hasNext();) {
+ String key = keysIterator.next();
+ HashSet<String> pkgSetStartsWithKey = knownPrefixMap.get(key);
+ int setSize = pkgSetStartsWithKey.size();
+
+ if (setSize == 0) {
+ continue;
+ }
+ else if (setSize > JarMetaIndex.MAX_PKGS_WITH_KNOWN_PREFIX) {
+ indexSet.add(key + "/");
+ } else {
+ /* If the set contains less than MAX_PKGS_WITH_KNOWN_PREFIX, add
+ * them to the indexSet of the MetaIndex object.
+ */
+ for (Iterator<String> secondPkgElements = pkgSetStartsWithKey.iterator();
+ secondPkgElements.hasNext();) {
+ indexSet.add(key + "/" + secondPkgElements.next());
+ }
+ }
+ } // end the outer "for"
+ }
+
+ JarFileKind getJarFileKind() {
+ // Build meta index if it hasn't.
+ if (indexSet == null) {
+ indexSet = getMetaIndex();
+ }
+ return jarFileKind;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/commentchecker/CommentChecker.java b/jdk/make/tools/src/build/tools/commentchecker/CommentChecker.java
new file mode 100644
index 0000000..288a10b
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/commentchecker/CommentChecker.java
@@ -0,0 +1,217 @@
+/*
+ * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.commentchecker;
+
+import java.io.*;
+import java.util.StringTokenizer;
+
+/**
+ * CommentChecker is a utility which verifies that there aren't
+ * "/*" or "/**" tokens inside any comment blocks in one or more
+ * Java source files. Although it is legal to have beginning
+ * comment delimiters inside of a comment block (JLS 3.7), there
+ * have been errors where a dropped end-comment delimiter in a
+ * method'd doc-comment effectively "erased" that method. We're
+ * therefore restricting beginning comment delimiters inside of
+ * JDK source (at least the Swing team is for their portion).
+ *
+ * To scan a few files, run CommentChecker as follows:
+ *
+ * java CommentChecker file1.java file2.java ...
+ *
+ * There are too many Java files in the JDK base for most shells
+ * to support listing in a single command, so CommentChecker also
+ * supports cpio and tar-style filename passing, where "-"
+ * indicates that the list of files is read from stdin:
+ *
+ * find . -name SCCS -prune -o -name '*.java' -print | \
+ * java CommentChecker -
+ *
+ * @author Thomas Ball
+ */
+public class CommentChecker {
+
+ static int errors = 0;
+
+ // Turn on this flag and recompile to dump this tool's state changes.
+ final static boolean verbose = false;
+
+ static void check(String fileName) {
+ BufferedReader in = null;
+ boolean inComment = false;
+ boolean inLineComment = false;
+ boolean inQuote = false;
+ boolean inEscape = false;
+ int lastChar = -1;
+ int lineNumber = 1;
+
+ try {
+ in = new BufferedReader(new FileReader(fileName));
+ while (true) {
+ int ch = in.read();
+ if (ch == -1) {
+ if (inQuote || inComment) {
+ error(fileName + ": premature EOF.");
+ }
+ return;
+ }
+
+ if (verbose) {
+ System.out.print((char)ch);
+ }
+
+ switch (ch) {
+ case '\n':
+ if (inQuote && !inComment) {
+ error(fileName + ":" + lineNumber +
+ " dangling quote.");
+ inQuote = false;
+ }
+ if (inLineComment) {
+ inLineComment = false;
+ if (verbose) {
+ System.out.println("\ninLineComment=false");
+ }
+ }
+ lineNumber++;
+ break;
+
+ case '\"':
+ if (!inComment && !inLineComment && !inEscape &&
+ !(!inQuote && lastChar == '\'')) {
+ inQuote = !inQuote;
+ if (verbose) {
+ System.out.println("\ninQuote=" + inQuote);
+ }
+ }
+ break;
+
+ case '/':
+ if (!inQuote && lastChar == '*') {
+ inComment = false;
+ if (verbose) {
+ System.out.println("\ninComment=false");
+ }
+ }
+ if (!inQuote && lastChar == '/') {
+ inLineComment = true;
+ if (verbose) {
+ System.out.println("\ninLineComment=true");
+ }
+ }
+ break;
+
+ case '*':
+ if (!inQuote && lastChar == '/') {
+ if (inComment) {
+ error(fileName + ":" + lineNumber +
+ " nested comment.");
+ }
+ inComment = true;
+ if (verbose) {
+ System.out.println("\ninComment=true");
+ }
+ }
+ break;
+ }
+
+ lastChar = ch;
+
+ // Watch for escaped characters, such as '\"'.
+ if (ch == '\\' && !inEscape) {
+ inEscape = true;
+ if (verbose) {
+ System.out.println("\ninEscape set");
+ }
+ } else {
+ inEscape = false;
+ }
+ }
+ } catch (FileNotFoundException fnfe) {
+ error(fileName + " not found.");
+ } catch (IOException ioe) {
+ error(fileName + ": " + ioe);
+ } finally {
+ if (in != null) {
+ try {
+ in.close();
+ } catch (IOException e) {
+ error(fileName + ": " + e);
+ }
+ }
+ }
+ }
+
+ static void error(String description) {
+ System.err.println(description);
+ errors++;
+ }
+
+ static void exit() {
+ if (errors != 1) {
+ System.out.println("There were " + errors + " errors.");
+ } else {
+ System.out.println("There was 1 error.");
+ }
+ System.exit(errors);
+ }
+
+ public static void main(String[] args) {
+ if (args.length == 0) {
+ System.err.println("usage: java CommentChecker [-] file.java ...");
+ System.exit(1);
+ }
+
+ if (args.length == 1 && args[0].equals("-")) {
+ /* read filenames in one per line from stdin, ala cpio.
+ * This is good for checking the whole JDK in one pass:
+ *
+ * cpio . -name SCCS -prune -o -name '*.java' -print | \
+ * java CommentChecker -
+ */
+ try {
+ BufferedReader br =
+ new BufferedReader(new InputStreamReader(System.in));
+ while (true) {
+ String fileName = br.readLine();
+ if (fileName == null) {
+ break;
+ }
+ check(fileName);
+ }
+ br.close();
+ } catch (Exception e) {
+ error("error reading System.in: " + e);
+ }
+ } else {
+ for (int i = 0; i < args.length; i++) {
+ check(args[i]);
+ }
+ }
+
+ exit();
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/compilefontconfig/CompileFontConfig.java b/jdk/make/tools/src/build/tools/compilefontconfig/CompileFontConfig.java
new file mode 100644
index 0000000..b0911c9
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/compilefontconfig/CompileFontConfig.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.compilefontconfig;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import sun.awt.FontConfiguration;
+
+public class CompileFontConfig {
+ public static void main(String[] argv) {
+ boolean verbose = false;
+ if (argv.length != 0 && "-verbose".equals(argv[0])) {
+ verbose = true;
+ }
+ if (verbose) {
+ if (argv.length != 3)
+ System.out.println("Usage: java CompileFontConfig [-verbose] propertiesFileName binaryFileName");
+ else
+ new CompileFontConfig(argv[1], argv[2], true);
+ } else {
+ if (argv.length != 2)
+ System.out.println("Usage: java CompileFontConfig [-verbose] propertiesFileName binaryFileNme");
+ else
+ new CompileFontConfig(argv[0], argv[1], false);
+ }
+ }
+
+ CompileFontConfig(String inFile, String outFile, boolean verbose) {
+ try {
+ FileInputStream in = new FileInputStream(inFile);
+ FileOutputStream out = new FileOutputStream(outFile);
+ FontConfiguration.verbose = verbose;
+ FontConfiguration.loadProperties(in);
+ FontConfiguration.saveBinary(out);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/compileproperties/CompileProperties.java b/jdk/make/tools/src/build/tools/compileproperties/CompileProperties.java
new file mode 100644
index 0000000..5c28387
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/compileproperties/CompileProperties.java
@@ -0,0 +1,373 @@
+/*
+ * Copyright 2002-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.compileproperties;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+
+/** Translates a .properties file into a .java file containing the
+ * definition of a java.util.Properties subclass which can then be
+ * compiled with javac. <P>
+ *
+ * Usage: java -jar compileproperties.jar [path to .properties file] [path to .java file to be output] [super class]
+ *
+ * Infers the package by looking at the common suffix of the two
+ * inputs, eliminating "classes" from it.
+ *
+ * @author Scott Violet
+ * @author Kenneth Russell
+ */
+
+public class CompileProperties {
+ private static final String FORMAT =
+ "{0}" +
+ "import java.util.ListResourceBundle;\n\n" +
+ "public final class {1} extends {2} '{'\n" +
+ " protected final Object[][] getContents() '{'\n" +
+ " return new Object[][] '{'\n" +
+ "{3}" +
+ " };\n" +
+ " }\n" +
+ "}\n";
+
+
+ // This comes from Properties
+ private static final char[] hexDigit = {
+ '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
+ };
+
+ // Note: different from that in Properties
+ private static final String specialSaveChars = "\"";
+
+ // This comes from Properties
+ private static char toHex(int nibble) {
+ return hexDigit[(nibble & 0xF)];
+ }
+
+ private static void error(String msg, Exception e) {
+ System.err.println("ERROR: compileproperties: " + msg);
+ if ( e != null ) {
+ System.err.println("EXCEPTION: " + e.toString());
+ e.printStackTrace();
+ }
+ }
+
+ private static String propfiles[];
+ private static String outfiles[] ;
+ private static String supers[] ;
+ private static int compileCount = 0;
+
+ private static boolean parseOptions(String args[]) {
+ boolean ok = true;
+ if ( compileCount > 0 ) {
+ String new_propfiles[] = new String[compileCount + args.length];
+ String new_outfiles[] = new String[compileCount + args.length];
+ String new_supers[] = new String[compileCount + args.length];
+ System.arraycopy(propfiles, 0, new_propfiles, 0, compileCount);
+ System.arraycopy(outfiles, 0, new_outfiles, 0, compileCount);
+ System.arraycopy(supers, 0, new_supers, 0, compileCount);
+ propfiles = new_propfiles;
+ outfiles = new_outfiles;
+ supers = new_supers;
+ } else {
+ propfiles = new String[args.length];
+ outfiles = new String[args.length];
+ supers = new String[args.length];
+ }
+ for ( int i = 0; i < args.length ; i++ ) {
+ if ( "-compile".equals(args[i]) && i+3 < args.length ) {
+ propfiles[compileCount] = args[++i];
+ outfiles[compileCount] = args[++i];
+ supers[compileCount] = args[++i];
+ compileCount++;
+ } else if ( "-optionsfile".equals(args[i]) && i+1 < args.length ) {
+ String filename = args[++i];
+ FileInputStream finput = null;
+ byte contents[] = null;
+ try {
+ finput = new FileInputStream(filename);
+ int byteCount = finput.available();
+ if ( byteCount <= 0 ) {
+ error("The -optionsfile file is empty", null);
+ ok = false;
+ } else {
+ contents = new byte[byteCount];
+ int bytesRead = finput.read(contents);
+ if ( byteCount != bytesRead ) {
+ error("Cannot read all of -optionsfile file", null);
+ ok = false;
+ }
+ }
+ } catch ( IOException e ) {
+ error("cannot open " + filename, e);
+ ok = false;
+ }
+ if ( finput != null ) {
+ try {
+ finput.close();
+ } catch ( IOException e ) {
+ ok = false;
+ error("cannot close " + filename, e);
+ }
+ }
+ if ( ok = true && contents != null ) {
+ String tokens[] = (new String(contents)).split("\\s+");
+ if ( tokens.length > 0 ) {
+ ok = parseOptions(tokens);
+ }
+ }
+ if ( !ok ) {
+ break;
+ }
+ } else {
+ error("argument error", null);
+ ok = false;
+ }
+ }
+ return ok;
+ }
+
+ public static void main(String[] args) {
+ boolean ok = true;
+ /* Original usage */
+ if (args.length == 2 && args[0].charAt(0) != '-' ) {
+ ok = createFile(args[0], args[1], "ListResourceBundle");
+ } else if (args.length == 3) {
+ ok = createFile(args[0], args[1], args[2]);
+ } else if (args.length == 0) {
+ usage();
+ ok = false;
+ } else {
+ /* New batch usage */
+ ok = parseOptions(args);
+ if ( ok && compileCount == 0 ) {
+ error("options parsed but no files to compile", null);
+ ok = false;
+ }
+ /* Need at least one file. */
+ if ( !ok ) {
+ usage();
+ } else {
+ /* Process files */
+ for ( int i = 0; i < compileCount && ok ; i++ ) {
+ ok = createFile(propfiles[i], outfiles[i], supers[i]);
+ }
+ }
+ }
+ if ( !ok ) {
+ System.exit(1);
+ }
+ }
+
+ private static void usage() {
+ System.err.println("usage:");
+ System.err.println(" java -jar compileproperties.jar path_to_properties_file path_to_java_output_file [super_class]");
+ System.err.println(" -OR-");
+ System.err.println(" java -jar compileproperties.jar {-compile path_to_properties_file path_to_java_output_file super_class} -or- -optionsfile filename");
+ System.err.println("");
+ System.err.println("Example:");
+ System.err.println(" java -jar compileproperties.jar -compile test.properties test.java ListResourceBundle");
+ System.err.println(" java -jar compileproperties.jar -optionsfile option_file");
+ System.err.println("option_file contains: -compile test.properties test.java ListResourceBundle");
+ }
+
+ private static boolean createFile(String propertiesPath, String outputPath,
+ String superClass) {
+ boolean ok = true;
+ System.out.println("parsing: " + propertiesPath);
+ Properties p = new Properties();
+ try {
+ p.load(new FileInputStream(propertiesPath));
+ } catch ( FileNotFoundException e ) {
+ ok = false;
+ error("Cannot find file " + propertiesPath, e);
+ } catch ( IOException e ) {
+ ok = false;
+ error("IO error on file " + propertiesPath, e);
+ }
+ if ( ok ) {
+ String packageName = inferPackageName(propertiesPath, outputPath);
+ System.out.println("inferred package name: " + packageName);
+ List<String> sortedKeys = new ArrayList<String>();
+ for ( Object key : p.keySet() ) {
+ sortedKeys.add((String)key);
+ }
+ Collections.sort(sortedKeys);
+ Iterator keys = sortedKeys.iterator();
+
+ StringBuffer data = new StringBuffer();
+
+ while (keys.hasNext()) {
+ Object key = keys.next();
+ data.append(" { \"" + escape((String)key) + "\", \"" +
+ escape((String)p.get(key)) + "\" },\n");
+ }
+
+ // Get class name from java filename, not the properties filename.
+ // (zh_TW properties might be used to create zh_HK files)
+ File file = new File(outputPath);
+ String name = file.getName();
+ int dotIndex = name.lastIndexOf('.');
+ String className;
+ if (dotIndex == -1) {
+ className = name;
+ } else {
+ className = name.substring(0, dotIndex);
+ }
+
+ String packageString = "";
+ if (packageName != null && !packageName.equals("")) {
+ packageString = "package " + packageName + ";\n\n";
+ }
+
+ Writer writer = null;
+ try {
+ writer = new BufferedWriter(
+ new OutputStreamWriter(new FileOutputStream(outputPath), "8859_1"));
+ MessageFormat format = new MessageFormat(FORMAT);
+ writer.write(format.format(new Object[] { packageString, className, superClass, data }));
+ } catch ( IOException e ) {
+ ok = false;
+ error("IO error writing to file " + outputPath, e);
+ }
+ if ( writer != null ) {
+ try {
+ writer.flush();
+ } catch ( IOException e ) {
+ ok = false;
+ error("IO error flush " + outputPath, e);
+ }
+ try {
+ writer.close();
+ } catch ( IOException e ) {
+ ok = false;
+ error("IO error close " + outputPath, e);
+ }
+ }
+ System.out.println("wrote: " + outputPath);
+ }
+ return ok;
+ }
+
+ private static String escape(String theString) {
+ // This is taken from Properties.saveConvert with changes for Java strings
+ int len = theString.length();
+ StringBuffer outBuffer = new StringBuffer(len*2);
+
+ for(int x=0; x<len; x++) {
+ char aChar = theString.charAt(x);
+ switch(aChar) {
+ case '\\':outBuffer.append('\\'); outBuffer.append('\\');
+ break;
+ case '\t':outBuffer.append('\\'); outBuffer.append('t');
+ break;
+ case '\n':outBuffer.append('\\'); outBuffer.append('n');
+ break;
+ case '\r':outBuffer.append('\\'); outBuffer.append('r');
+ break;
+ case '\f':outBuffer.append('\\'); outBuffer.append('f');
+ break;
+ default:
+ if ((aChar < 0x0020) || (aChar > 0x007e)) {
+ outBuffer.append('\\');
+ outBuffer.append('u');
+ outBuffer.append(toHex((aChar >> 12) & 0xF));
+ outBuffer.append(toHex((aChar >> 8) & 0xF));
+ outBuffer.append(toHex((aChar >> 4) & 0xF));
+ outBuffer.append(toHex( aChar & 0xF));
+ } else {
+ if (specialSaveChars.indexOf(aChar) != -1) {
+ outBuffer.append('\\');
+ }
+ outBuffer.append(aChar);
+ }
+ }
+ }
+ return outBuffer.toString();
+ }
+
+ private static String inferPackageName(String inputPath, String outputPath) {
+ // Normalize file names
+ inputPath = new File(inputPath).getPath();
+ outputPath = new File(outputPath).getPath();
+ // Split into components
+ String sep;
+ if (File.separatorChar == '\\') {
+ sep = "\\\\";
+ } else {
+ sep = File.separator;
+ }
+ String[] inputs = inputPath.split(sep);
+ String[] outputs = outputPath.split(sep);
+ // Match common names, eliminating first "classes" entry from
+ // each if present
+ int inStart = 0;
+ int inEnd = inputs.length - 2;
+ int outEnd = outputs.length - 2;
+ int i = inEnd;
+ int j = outEnd;
+ while (i >= 0 && j >= 0) {
+ if (!inputs[i].equals(outputs[j]) ||
+ (inputs[i].equals("gensrc") && inputs[j].equals("gensrc"))) {
+ ++i;
+ ++j;
+ break;
+ }
+ --i;
+ --j;
+ }
+ String result;
+ if (i < 0 || j < 0 || i >= inEnd || j >= outEnd) {
+ result = "";
+ } else {
+ if (inputs[i].equals("classes") && outputs[j].equals("classes")) {
+ ++i;
+ }
+ inStart = i;
+ StringBuffer buf = new StringBuffer();
+ for (i = inStart; i <= inEnd; i++) {
+ buf.append(inputs[i]);
+ if (i < inEnd) {
+ buf.append('.');
+ }
+ }
+ result = buf.toString();
+ }
+ return result;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/dirdiff/DirDiff.java b/jdk/make/tools/src/build/tools/dirdiff/DirDiff.java
new file mode 100644
index 0000000..740cd9e
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/dirdiff/DirDiff.java
@@ -0,0 +1,275 @@
+/*
+ * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.dirdiff;
+
+import java.io.File;
+import java.util.TreeSet;
+
+public class DirDiff implements Runnable {
+ private final static String FILE_SEPARATOR = System.getProperty("file.separator");
+ private static final boolean traversSccsDirs;
+ private static final boolean recurseExtraDirs;
+ private static final boolean verboseMode;
+ private static final boolean checkSizes;
+ private static long SizeTolerance = 0;
+ private File goldenDir = null;
+ private File testDir = null;
+
+ // static initializer:
+ static {
+ String traversePropertyValue = System.getProperty("sccs");
+ traversSccsDirs = (traversePropertyValue != null &&
+ traversePropertyValue.toLowerCase().equals("true"))? true : false;
+ if (traversSccsDirs) {
+ System.err.println("traversing SCCS directories...");
+ }
+
+ String verbosePropertyValue = System.getProperty("verbose");
+ verboseMode = (verbosePropertyValue != null &&
+ verbosePropertyValue.toLowerCase().equals("true"))? true : false;
+ if (verboseMode) {
+ System.err.println("verbose mode truned on...");
+ }
+
+ String noRecurseExtraDirsPropertyValue = System.getProperty("recurse");
+ recurseExtraDirs = (noRecurseExtraDirsPropertyValue != null &&
+ noRecurseExtraDirsPropertyValue.toLowerCase().equals("true"))? true : false;
+ if (recurseExtraDirs) {
+ System.err.println("recursing extra directories...");
+ }
+
+ String sizeToleranceValue = System.getProperty("sizeTolerance");
+ checkSizes = (sizeToleranceValue != null);
+ if (checkSizes) {
+ try {
+ SizeTolerance = Long.parseLong(sizeToleranceValue);
+ }
+ catch (NumberFormatException e) {
+ System.err.println("Invlalid sizeTolerance value: " + sizeToleranceValue);
+ System.err.println("Expecting a long value. Exiting.");
+ System.exit(1);
+ }
+ System.err.println("checking matching files for size differences of at least " + SizeTolerance);
+ }
+ }
+
+ public DirDiff(File inGoldenDir, File inTestDir) {
+ goldenDir = inGoldenDir;
+ testDir = inTestDir;
+ }
+
+ private void whatToDoWithMatchingFiles(File goldenChild, File testChild) {
+ if (verboseMode) {
+ System.out.println("Files Match:\t" + goldenChild.getAbsolutePath() +
+ " and " + testChild.getAbsolutePath());
+ }
+ if (checkSizes) {
+ // compare file sizes...
+ long goldenLength = 0;
+ long testLength = 0;
+ try {
+ goldenLength = goldenChild.length();
+ testLength = testChild.length();
+ }
+ catch (Exception e) {
+ System.err.println("Error: exception thrown and caught:");
+ e.printStackTrace();
+ }
+ if (java.lang.Math.abs(goldenLength - testLength) > SizeTolerance) {
+ if (goldenLength > testLength) {
+ System.out.println("File short [" + (testLength - goldenLength) + "]:\t" + testChild.getAbsolutePath());
+ } else {
+ System.out.println("File long [" + (testLength - goldenLength) + "]:\t" + testChild.getAbsolutePath());
+ }
+ }
+ }
+ }
+
+
+ private void whatToDoWithMatchingDirs(File goldenChild, File testChild) {
+ if (verboseMode) {
+ System.out.println("Dirs Match:\t" + goldenChild.getAbsolutePath() +
+ " and " + testChild.getAbsolutePath());
+ }
+ }
+
+ private void whatToDoWithMissingFiles(File missingFile) {
+ long length = 0;
+ try {
+ length = missingFile.length();
+ }
+ catch (Exception e) {
+ System.err.println("Error: exception thrown and caught:");
+ e.printStackTrace();
+ }
+
+ System.out.println("Missing File [" + length + "]:\t" + missingFile.getAbsolutePath());
+ }
+
+ private void whatToDoWithExtraFiles(File extraFile) {
+ long length = 0;
+ try {
+ length = extraFile.length();
+ }
+ catch (Exception e) {
+ System.err.println("Error: exception thrown and caught:");
+ e.printStackTrace();
+ }
+
+ System.out.println("Extra File [" + length + "]:\t" + extraFile.getAbsolutePath());
+ }
+
+ private void whatToDoWithMissingDirs(File missingDir) {
+ System.out.println("Missing Dir:\t" + missingDir.getAbsolutePath());
+ }
+
+ private void whatToDoWithExtraDirs(File extraDir) {
+ System.out.println("Extra Dir:\t" + extraDir.getAbsolutePath());
+ }
+
+ private void whatToDoWithNonMatchingChildren(File goldenChild, File testChild) {
+ System.out.println("Type Mismatch:\t" + goldenChild.getAbsolutePath() + " is a " +
+ (goldenChild.isDirectory()? "directory" : "file") +
+ " and " + testChild.getAbsolutePath() + " is a " +
+ (testChild.isDirectory()? "directory" : "file"));
+ }
+
+ public void run() {
+ File[] currentTestDirs = null;
+ if (testDir != null) {
+ currentTestDirs = testDir.listFiles();
+ }
+
+ File[] currentGoldenDirs = null;
+ TreeSet goldDirSet = new TreeSet();
+ if (goldenDir != null) {
+ currentGoldenDirs = goldenDir.listFiles();
+ for (int i=0; i<currentGoldenDirs.length; i++) {
+ goldDirSet.add(currentGoldenDirs[i].getName());
+ }
+ }
+
+ // now go through the list of members
+ if (currentGoldenDirs != null) {
+ for (int i=0; i<currentGoldenDirs.length; i++) {
+ File newGoldenDir = currentGoldenDirs[i];
+
+ // do not traverse SCCS directories...
+ if (!(newGoldenDir.getAbsolutePath().endsWith("SCCS")) || traversSccsDirs ) {
+ // start a compare of this child and the like-named test child...
+ File newTestDir = new File(testDir.getAbsolutePath() + FILE_SEPARATOR +
+ newGoldenDir.getName());
+
+ if (newTestDir.exists()) {
+ if (newGoldenDir.isDirectory()) {
+ if (newTestDir.isDirectory()) {
+ whatToDoWithMatchingDirs(newGoldenDir, newTestDir);
+ Thread t = new Thread( new DirDiff(newGoldenDir, newTestDir));
+ t.start();
+ } else {
+ whatToDoWithNonMatchingChildren(newGoldenDir, newTestDir);
+ }
+ } else { // of... newGoldenDir.isDirectory()...
+ if (newTestDir.isDirectory()) {
+ whatToDoWithNonMatchingChildren(newGoldenDir, newTestDir);
+ }
+ whatToDoWithMatchingFiles(newGoldenDir, newTestDir);
+ }
+ } else { // of... newTestDir.exists()...
+ if (newGoldenDir.isDirectory()) {
+ whatToDoWithMissingDirs(newTestDir);
+ Thread t = new Thread( new DirDiff(newGoldenDir, newTestDir));
+ t.start();
+ } else {
+ whatToDoWithMissingFiles(newTestDir);
+ }
+ }
+ }
+ }
+ }
+
+ // look for extra test objs...
+ if (currentTestDirs != null) {
+ for (int i=0; i<currentTestDirs.length; i++) {
+ // do not traverse SCCS directories...
+ if (!(currentTestDirs[i].getAbsolutePath().endsWith("SCCS")) || traversSccsDirs ) {
+ if (!goldDirSet.contains(currentTestDirs[i].getName())) {
+ if (currentTestDirs[i].isDirectory()) {
+ whatToDoWithExtraDirs(currentTestDirs[i]);
+ if (recurseExtraDirs) {
+ Thread t = new Thread( new DirDiff( null, currentTestDirs[i]));
+ t.start();
+ }
+ } else {
+ whatToDoWithExtraFiles(currentTestDirs[i]);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public static void main(String[] args) {
+ if (args.length != 2) {
+ System.err.println("You must provide two directory names on the command line.");
+ System.err.println("Usage:\tDirDiff dir1 dir2");
+ System.err.println("\tJava Runtime Properties (set to \"true\"):");
+ System.err.println("\t\tsccs\trecurse SCCS directories");
+ System.err.println("\t\tverbose\tprint verbose diagnostics");
+ System.err.println("\t\trecurse\trecursing extra directories showing extra files");
+ System.err.println("\t\tsizeTolerance\tset tolerance for size differences - default is infinite");
+
+ System.exit(0);
+ } else {
+ File golden = new File(args[0]);
+ File test = new File(args[1]);
+
+ if (!golden.exists()) {
+ System.err.println("Error: path " + golden.getAbsolutePath() +
+ " does not exist. Skipping.");
+ System.exit(0);
+ }
+ if (!golden.isDirectory()) {
+ System.err.println("Error: path " + golden.getAbsolutePath() +
+ " must be a directory. Skipping.");
+ System.exit(0);
+ }
+ if (!test.exists()) {
+ System.err.println("Error: path " + test.getAbsolutePath() +
+ " does not exist. Skipping.");
+ System.exit(0);
+ }
+ if (!test.isDirectory()) {
+ System.err.println("Error: path " + test.getAbsolutePath() +
+ " must be a directory. Skipping.");
+ System.exit(0);
+ }
+
+ Thread t = new Thread( new DirDiff(golden, test));
+ t.start();
+ }
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/dtdbuilder/DTDBuilder.java b/jdk/make/tools/src/build/tools/dtdbuilder/DTDBuilder.java
new file mode 100644
index 0000000..99db9a7
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/dtdbuilder/DTDBuilder.java
@@ -0,0 +1,313 @@
+/*
+ * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.dtdbuilder;
+
+import javax.swing.text.html.parser.*;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.io.BufferedInputStream;
+import java.io.OutputStream;
+import java.util.Hashtable;
+import java.util.Vector;
+import java.util.BitSet;
+import java.util.StringTokenizer;
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.zip.DeflaterOutputStream;
+import java.util.zip.Deflater;
+import java.net.URL;
+
+/**
+ * The representation of an SGML DTD. This is produced by the DTDParser.
+ * The resulting DTD object describes a document syntax and is needed
+ * to parse HTML documents using the Parser. It contains a list of
+ * elements and their attributes as well as a list of entities defined
+ * in the DTD.
+ *
+ * @see Element
+ * @see AttributeList
+ * @see ContentModel
+ * @see DTDParser
+ * @see Parser
+ * @author Arthur van Hoff
+ */
+public
+class DTDBuilder extends DTD {
+
+ static PublicMapping mapping = null;
+
+ // Hash from name to Integer
+ private Hashtable namesHash = new Hashtable();
+ // Vector of all names
+ private Vector namesVector = new Vector();
+
+ /**
+ * Create a new DTD.
+ */
+ protected DTDBuilder(String name) {
+ super(name);
+ }
+
+
+ /**
+ * Save to a stream as a Java class. Instantiating this class will
+ * reproduce a (virtually) identical DTD.
+ */
+ void save(DataOutputStream out, String className) throws IOException {
+
+ out.writeInt(DTD.FILE_VERSION);
+
+ buildNamesTable();
+ int numNames = namesVector.size();
+ out.writeShort((short) (namesVector.size()));
+ for (int i = 0; i < namesVector.size(); i++) {
+ String nm = (String) namesVector.elementAt(i);
+ out.writeUTF(nm);
+ }
+
+ saveEntities(out);
+
+ out.writeShort((short) (elements.size()));
+ for (Enumeration e = elements.elements() ; e.hasMoreElements() ; ) {
+ saveElement(out, (Element)e.nextElement());
+ }
+
+ if (namesVector.size() != numNames) {
+ System.err.println("!!! ERROR! Names were added to the list!");
+ Thread.dumpStack();
+ System.exit(1);
+ }
+ }
+
+ private void buildNamesTable() {
+ for (Enumeration e = entityHash.elements() ; e.hasMoreElements() ; ) {
+ Entity ent = (Entity) e.nextElement();
+ // Do even if not isGeneral(). That way, exclusions and inclusions
+ // will definitely have their element.
+ getNameId(ent.getName());
+ }
+ for (Enumeration e = elements.elements() ; e.hasMoreElements() ; ) {
+ Element el = (Element) e.nextElement();
+ getNameId(el.getName());
+ for (AttributeList atts = el.getAttributes() ; atts != null ; atts = atts.getNext()) {
+ getNameId(atts.getName());
+ if (atts.getValue() != null) {
+ getNameId(atts.getValue());
+ }
+ Enumeration vals = atts.getValues();
+ while (vals != null && vals.hasMoreElements()) {
+ String s = (String) vals.nextElement();
+ getNameId(s);
+ }
+ }
+ }
+ }
+
+ //
+ // The the id of a name from the list of names
+ //
+ private short getNameId(String name) {
+ Object o = namesHash.get(name);
+ if (o != null) {
+ return (short) ((Integer) o).intValue();
+ }
+ int i = namesVector.size();
+ namesVector.addElement(name);
+ namesHash.put(name, new Integer(i));
+ return (short) i;
+ }
+
+
+ /**
+ * Save an entity to a stream.
+ */
+ void saveEntities(DataOutputStream out) throws IOException {
+ int num = 0;
+ for (Enumeration e = entityHash.elements() ; e.hasMoreElements() ; ) {
+ Entity ent = (Entity) e.nextElement();
+ if (ent.isGeneral()) {
+ num++;
+ }
+ }
+
+ out.writeShort((short) num);
+ for (Enumeration e = entityHash.elements() ; e.hasMoreElements() ; ) {
+ Entity ent = (Entity) e.nextElement();
+ if (ent.isGeneral()) {
+ out.writeShort(getNameId(ent.getName()));
+ out.writeByte(ent.getType() & ~GENERAL);
+ out.writeUTF(ent.getString());
+ }
+ }
+ }
+
+
+ /**
+ * Save an element to a stream.
+ */
+
+ public void saveElement(DataOutputStream out, Element elem) throws IOException {
+
+ out.writeShort(getNameId(elem.getName()));
+ out.writeByte(elem.getType());
+
+ byte flags = 0;
+ if (elem.omitStart()) {
+ flags |= 0x01;
+ }
+ if (elem.omitEnd()) {
+ flags |= 0x02;
+ }
+ out.writeByte(flags);
+ saveContentModel(out, elem.getContent());
+
+ // Exclusions
+ if (elem.exclusions == null) {
+ out.writeShort(0);
+ } else {
+ short num = 0;
+ for (int i = 0 ; i < elem.exclusions.size() ; i++) {
+ if (elem.exclusions.get(i)) {
+ num++;
+ }
+ }
+ out.writeShort(num);
+ for (int i = 0 ; i < elem.exclusions.size() ; i++) {
+ if (elem.exclusions.get(i)) {
+ out.writeShort(getNameId(getElement(i).getName()));
+ }
+ }
+ }
+
+ // Inclusions
+ if (elem.inclusions == null) {
+ out.writeShort(0);
+ } else {
+ short num = 0;
+ for (int i = 0 ; i < elem.inclusions.size() ; i++) {
+ if (elem.inclusions.get(i)) {
+ num++;
+ }
+ }
+ out.writeShort(num);
+ for (int i = 0 ; i < elem.inclusions.size() ; i++) {
+ if (elem.inclusions.get(i)) {
+ out.writeShort(getNameId(getElement(i).getName()));
+ }
+ }
+ }
+
+ // Attributes
+ {
+ short numAtts = 0;
+ for (AttributeList atts = elem.getAttributes() ; atts != null ; atts = atts.getNext()) {
+ numAtts++;
+ }
+ out.writeByte(numAtts);
+ for (AttributeList atts = elem.getAttributes() ; atts != null ; atts = atts.getNext()) {
+ out.writeShort(getNameId(atts.getName()));
+ out.writeByte(atts.getType());
+ out.writeByte(atts.getModifier());
+ if (atts.getValue() == null) {
+ out.writeShort(-1);
+ } else {
+ out.writeShort(getNameId(atts.getValue()));
+ }
+ if (atts.values == null) {
+ out.writeShort(0);
+ } else {
+ out.writeShort((short) atts.values.size());
+ for (int i = 0; i < atts.values.size(); i++) {
+ String s = (String) atts.values.elementAt(i);
+ out.writeShort(getNameId(s));
+ }
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Save a content model to a stream. This does a
+ * recursive decent of the entire model.
+ */
+ public void saveContentModel(DataOutputStream out, ContentModel model) throws IOException {
+ if (model == null) {
+ out.writeByte(0);
+ } else if (model.content instanceof ContentModel) {
+ out.writeByte(1);
+ out.writeByte(model.type);
+ saveContentModel(out, (ContentModel)model.content);
+
+ saveContentModel(out, model.next);
+ } else if (model.content instanceof Element) {
+ out.writeByte(2);
+ out.writeByte(model.type);
+ out.writeShort(getNameId(((Element) model.content).getName()));
+
+ saveContentModel(out, model.next);
+ }
+ }
+
+
+ /**
+ * Generate a class representing this DTD.
+ */
+
+ public static void main(String argv[]) {
+
+ String dtd_home = System.getProperty("dtd_home") + File.separator;
+ if (dtd_home == null) {
+ System.err.println("Must set property 'dtd_home'");
+ return;
+ }
+
+ DTDBuilder dtd = null;
+ try {
+ dtd = new DTDBuilder(argv[0]);
+ mapping = new PublicMapping(dtd_home, "public.map");
+ String path = mapping.get(argv[0]);
+ new DTDParser().parse(new FileInputStream(path), dtd);
+
+ } catch (IOException e) {
+ System.err.println("Could not open DTD file "+argv[0]);
+ e.printStackTrace(System.err);
+ System.exit(1);
+ }
+ try {
+ DataOutputStream str = new DataOutputStream(System.out);
+ dtd.save(str, argv[0]);
+ str.close();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ System.exit(1);
+ }
+ }
+
+}
diff --git a/jdk/make/tools/src/build/tools/dtdbuilder/DTDInputStream.java b/jdk/make/tools/src/build/tools/dtdbuilder/DTDInputStream.java
new file mode 100644
index 0000000..87ab4de
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/dtdbuilder/DTDInputStream.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.dtdbuilder;
+
+import javax.swing.text.html.parser.*;
+import java.io.IOException;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.InputStreamReader;
+import java.io.CharArrayReader;
+import java.io.FilterReader;
+import java.util.Stack;
+import java.net.URL;
+
+/**
+ * A stream for reading HTML files. This stream takes care
+ * of \r\n conversions and parameter entity expansion.
+ *
+ * @see DTD
+ * @see DTDParser
+ * @author Arthur van Hoff
+ * @author Steven B. Byrne
+ */
+public final
+class DTDInputStream extends FilterReader implements DTDConstants {
+ public DTD dtd;
+ public Stack stack = new Stack();
+ public char str[] = new char[64];
+ public int replace = 0;
+ public int ln = 1;
+ public int ch;
+
+ /**
+ * Create the stream.
+ */
+ public DTDInputStream(InputStream in, DTD dtd) throws IOException {
+ super(new InputStreamReader(in));
+ this.dtd = dtd;
+ this.ch = in.read();
+ }
+
+ /**
+ * Error
+ */
+ public void error(String msg) {
+ System.out.println("line " + ln + ": dtd input error: " + msg);
+ }
+
+ /**
+ * Push a single character
+ */
+ public void push(int ch) throws IOException {
+ char data[] = {(char)ch};
+ push(new CharArrayReader(data));
+ }
+
+
+ /**
+ * Push an array of bytes.
+ */
+ public void push(char data[]) throws IOException {
+ if (data.length > 0) {
+ push(new CharArrayReader(data));
+ }
+ }
+
+ /**
+ * Push an entire input stream
+ */
+ void push(Reader in) throws IOException {
+ stack.push(new Integer(ln));
+ stack.push(new Integer(ch));
+ stack.push(this.in);
+ this.in = in;
+ ch = in.read();
+ }
+
+ /**
+ * Read a character from the input. Automatically pop
+ * a stream of the stack if the EOF is reached. Also replaces
+ * parameter entities.
+ * [60] 350:22
+ */
+ public int read() throws IOException {
+ switch (ch) {
+ case '%': {
+ ch = in.read();
+ if (replace > 0) {
+ return '%';
+ }
+
+ int pos = 0;
+ while (((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) ||
+ ((ch >= '0') && (ch <= '9')) || (ch == '.') || (ch == '-')) {
+ str[pos++] = (char)ch;
+ ch = in.read();
+ }
+ if (pos == 0) {
+ return '%';
+ }
+
+ String nm = new String(str, 0, pos);
+ Entity ent = dtd.getEntity(nm);
+ if (ent == null) {
+ error("undefined entity reference: " + nm);
+ return read();
+ }
+
+ // Skip ; or RE
+ switch (ch) {
+ case '\r':
+ ln++;
+ case ';':
+ ch = in.read();
+ break;
+ case '\n':
+ ln++;
+ if ((ch = in.read()) == '\r') {
+ ch = in.read();
+ }
+ break;
+ }
+
+ // Push the entity.
+ try {
+ push(getEntityInputReader(ent));
+ } catch (Exception e) {
+ error("entity data not found: " + ent + ", " + ent.getString());
+ }
+ return read();
+ }
+
+ case '\n':
+ ln++;
+ if ((ch = in.read()) == '\r') {
+ ch = in.read();
+ }
+ return '\n';
+
+ case '\r':
+ ln++;
+ ch = in.read();
+ return '\n';
+
+ case -1:
+ if (stack.size() > 0) {
+ in = (Reader)stack.pop();
+ ch = ((Integer)stack.pop()).intValue();
+ ln = ((Integer)stack.pop()).intValue();
+ return read();
+ }
+ return -1;
+
+ default:
+ int c = ch;
+ ch = in.read();
+ return c;
+ }
+ }
+
+ /**
+ * Return the data as a stream.
+ */
+ private Reader getEntityInputReader(Entity ent) throws IOException {
+ if ((ent.type & Entity.PUBLIC) != 0) {
+ // InputStream is = DTDBuilder.mapping.get(ent.getString()).openStream();
+ // return new InputStreamReader(is);
+ String path = DTDBuilder.mapping.get(ent.getString());
+
+ return new InputStreamReader(new FileInputStream(path));
+ }
+ if ((ent.type & Entity.SYSTEM) != 0) {
+ //InputStream is = new URL(DTDBuilder.mapping.base, ent.getString()).openStream();
+ String path = DTDBuilder.mapping.baseStr + ent.getString();
+ return new InputStreamReader(new FileInputStream(path));
+ }
+ return new CharArrayReader(ent.data);
+ }
+
+}
diff --git a/jdk/make/tools/src/build/tools/dtdbuilder/DTDParser.java b/jdk/make/tools/src/build/tools/dtdbuilder/DTDParser.java
new file mode 100644
index 0000000..3c7720b
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/dtdbuilder/DTDParser.java
@@ -0,0 +1,925 @@
+/*
+ * Copyright 1998-2000 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.dtdbuilder;
+
+import javax.swing.text.html.parser.*;
+import java.net.URL;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Enumeration;
+import java.util.Vector;
+import java.util.Hashtable;
+import java.util.BitSet;
+import java.text.MessageFormat;
+
+import sun.misc.MessageUtils;
+
+/**
+ * A parser for DTDs. This parser roughly corresponds to the
+ * rules specified in "The SGML Handbook" by Charles F. Goldfarb.
+ * The end result of parsing the stream is a DTD object.
+ *
+ *
+ * @see DTD
+ * @see DTDInputStream
+ * @author Arthur van Hoff
+ */
+final
+class DTDParser implements DTDConstants {
+ DTDBuilder dtd;
+ DTDInputStream in;
+ int ch;
+ char str[] = new char[128];
+ int strpos = 0;
+ int nerrors = 0;
+
+ /**
+ * Report an error.
+ */
+ void error(String err, String arg1, String arg2, String arg3) {
+ nerrors++;
+
+ String msgParams[] = {arg1, arg2, arg3};
+
+ String str = getSubstProp("dtderr." + err, msgParams);
+ if (str == null) {
+ str = err + "[" + arg1 + "," + arg2 + "," + arg3 + "]";
+ }
+ System.err.println("line " + in.ln + ", dtd " + dtd + ": " + str);
+ }
+ void error(String err, String arg1, String arg2) {
+ error(err, arg1, arg2, "?");
+ }
+ void error(String err, String arg1) {
+ error(err, arg1, "?", "?");
+ }
+ void error(String err) {
+ error(err, "?", "?", "?");
+ }
+
+ private String getSubstProp(String propName, String args[]) {
+ String prop = System.getProperty(propName);
+
+ if (prop == null) {
+ return null;
+ }
+
+ return MessageFormat.format(prop, args);
+ }
+
+ /**
+ * Expect a character.
+ */
+ boolean expect(int c) throws IOException {
+ if (ch != c) {
+ char str[] = {(char)c};
+ error("expected", "'" + new String(str) + "'");
+ return false;
+ }
+ ch = in.read();
+ return true;
+ }
+
+ /**
+ * Add a char to the string buffer.
+ */
+ void addString(int c) {
+ if (strpos == str.length) {
+ char newstr[] = new char[str.length * 2];
+ System.arraycopy(str, 0, newstr, 0, str.length);
+ str = newstr;
+ }
+ str[strpos++] = (char)c;
+ }
+
+ /**
+ * Get the string which was accumulated in the buffer.
+ * Pos is the starting position of the string.
+ */
+ String getString(int pos) {
+ char newstr[] = new char[strpos - pos];
+ System.arraycopy(str, pos, newstr, 0, strpos - pos);
+ strpos = pos;
+ return new String(newstr);
+ }
+
+ /**
+ * Get the chars which were accumulated in the buffer.
+ * Pos is the starting position of the string.
+ */
+ char[] getChars(int pos) {
+ char newstr[] = new char[strpos - pos];
+ System.arraycopy(str, pos, newstr, 0, strpos - pos);
+ strpos = pos;
+ return newstr;
+ }
+
+ /**
+ * Skip spaces. [5] 297:23
+ */
+ void skipSpace() throws IOException {
+ while (true) {
+ switch (ch) {
+ case '\n':
+ case ' ':
+ case '\t':
+ ch = in.read();
+ break;
+
+ default:
+ return;
+ }
+ }
+ }
+
+ /**
+ * Skip tag spaces (includes comments). [65] 372:1
+ */
+ void skipParameterSpace() throws IOException {
+ while (true) {
+ switch (ch) {
+ case '\n':
+ case ' ':
+ case '\t':
+ ch = in.read();
+ break;
+ case '-':
+ if ((ch = in.read()) != '-') {
+ in.push(ch);
+ ch = '-';
+ return;
+ }
+
+ in.replace++;
+ while (true) {
+ switch (ch = in.read()) {
+ case '-':
+ if ((ch = in.read()) == '-') {
+ ch = in.read();
+ in.replace--;
+ skipParameterSpace();
+ return;
+ }
+ break;
+
+ case -1:
+ error("eof.arg", "comment");
+ in.replace--;
+ return;
+ }
+ }
+ default:
+ return;
+ }
+ }
+ }
+
+ /**
+ * Parse identifier. Uppercase characters are automatically
+ * folded to lowercase. Returns falsed if no identifier is found.
+ */
+ boolean parseIdentifier(boolean lower) throws IOException {
+ switch (ch) {
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+ case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+ case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+ case 'Y': case 'Z':
+ if (lower) {
+ ch = 'a' + (ch - 'A');
+ }
+
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+ case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+ case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+ case 'y': case 'z':
+ break;
+
+ default:
+ return false;
+ }
+
+ addString(ch);
+ ch = in.read();
+ parseNameToken(lower);
+ return true;
+ }
+
+ /**
+ * Parses name token. If <code>lower</code> is true, upper case letters
+ * are folded to lower case. Returns falsed if no token is found.
+ */
+ boolean parseNameToken(boolean lower) throws IOException {
+ boolean first = true;
+
+ while (true) {
+ switch (ch) {
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+ case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+ case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+ case 'Y': case 'Z':
+ if (lower) {
+ ch = 'a' + (ch - 'A');
+ }
+
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+ case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+ case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+ case 'y': case 'z':
+
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+
+ case '.': case '-':
+ addString(ch);
+ ch = in.read();
+ first = false;
+ break;
+
+ default:
+ return !first;
+ }
+ }
+ }
+
+ /**
+ * Parse a list of identifiers.
+ */
+ Vector parseIdentifierList(boolean lower) throws IOException {
+ Vector elems = new Vector();
+ skipSpace();
+ switch (ch) {
+ case '(':
+ ch = in.read();
+ skipParameterSpace();
+ while (parseNameToken(lower)) {
+ elems.addElement(getString(0));
+ skipParameterSpace();
+ if (ch == '|') {
+ ch = in.read();
+ skipParameterSpace();
+ }
+ }
+ expect(')');
+ skipParameterSpace();
+ break;
+
+ default:
+ if (!parseIdentifier(lower)) {
+ error("expected", "identifier");
+ break;
+ }
+ elems.addElement(getString(0));
+ skipParameterSpace();
+ break;
+ }
+ return elems;
+ }
+
+ /**
+ * Parse and Entity reference. Should be called when
+ * a & is encountered. The data is put in the string buffer.
+ * [59] 350:17
+ */
+ private void parseEntityReference() throws IOException {
+ int pos = strpos;
+
+ if ((ch = in.read()) == '#') {
+ int n = 0;
+ ch = in.read();
+ if (((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z'))) {
+ addString('#');
+ } else {
+ while ((ch >= '0') && (ch <= '9')) {
+ n = (n * 10) + ch - '0';
+ ch = in.read();
+ }
+ if ((ch == ';') || (ch == '\n')) {
+ ch = in.read();
+ }
+ addString(n);
+ return;
+ }
+ }
+
+ while (true) {
+ switch (ch) {
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+ case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+ case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+ case 'Y': case 'Z':
+
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+ case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+ case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+ case 'y': case 'z':
+
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+
+ case '.': case '-':
+ addString(ch);
+ ch = in.read();
+ break;
+
+ default:
+ if (strpos == pos) {
+ addString('&');
+ return;
+ }
+ String nm = getString(pos);
+ Entity ent = dtd.getEntity(nm);
+ if (ent == null) {
+ error("undef.entref" + nm);
+ return;
+ }
+ if ((ch == ';') || (ch == '\n')) {
+ ch = in.read();
+ }
+ char data[] = ent.getData();
+ for (int i = 0 ; i < data.length ; i++) {
+ addString(data[i]);
+ }
+ return;
+ }
+ }
+ }
+
+ /**
+ * Parse an entity declaration.
+ * [101] 394:18
+ * REMIND: external entity type
+ */
+ private void parseEntityDeclaration() throws IOException {
+ int type = GENERAL;
+
+ skipSpace();
+ if (ch == '%') {
+ ch = in.read();
+ type = PARAMETER;
+ skipSpace();
+ }
+ if (ch == '#') {
+ addString('#');
+ ch = in.read();
+ }
+ if (!parseIdentifier(false)) {
+ error("expected", "identifier");
+ return;
+ }
+ String nm = getString(0);
+ skipParameterSpace();
+ if (parseIdentifier(false)) {
+ String tnm = getString(0);
+ int t = Entity.name2type(tnm);
+ if (t == 0) {
+ error("invalid.arg", "entity type", tnm);
+ } else {
+ type |= t;
+ }
+ skipParameterSpace();
+ }
+
+ if ((ch != '"') && (ch != '\'')) {
+ error("expected", "entity value");
+ skipParameterSpace();
+ if (ch == '>') {
+ ch = in.read();
+ }
+ return;
+ }
+
+ int term = ch;
+ ch = in.read();
+ while ((ch != -1) && (ch != term)) {
+ if (ch == '&') {
+ parseEntityReference();
+ } else {
+ addString(ch & 0xFF);
+ ch = in.read();
+ }
+ }
+ if (ch == term) {
+ ch = in.read();
+ }
+ if (in.replace == 0) {
+ char data[] = getChars(0);
+ dtd.defineEntity(nm, type, data);
+ } else {
+ strpos = 0;
+ }
+ skipParameterSpace();
+ expect('>');
+ }
+
+ /**
+ * Parse content model.
+ * [126] 410:1
+ * REMIND: data tag group
+ */
+ ContentModel parseContentModel() throws IOException {
+ ContentModel m = null;
+
+ switch (ch) {
+ case '(':
+ ch = in.read();
+ skipParameterSpace();
+ ContentModel e = parseContentModel();
+
+ if (ch != ')') {
+ m = new ContentModel(ch, e);
+ do {
+ ch = in.read();
+ skipParameterSpace();
+ e.next = parseContentModel();
+ if (e.next.type == m.type) {
+ e.next = (ContentModel)e.next.content;
+ }
+ for (; e.next != null ; e = e.next);
+ } while (ch == m.type);
+ } else {
+ m = new ContentModel(',', e);
+ }
+ expect(')');
+ break;
+
+ case '#':
+ ch = in.read();
+ if (parseIdentifier(true)) {
+ m = new ContentModel('*', new ContentModel(dtd.getElement("#" + getString(0))));
+ } else {
+ error("invalid", "content model");
+ }
+ break;
+
+ default:
+ if (parseIdentifier(true)) {
+ m = new ContentModel(dtd.getElement(getString(0)));
+ } else {
+ error("invalid", "content model");
+ }
+ break;
+ }
+
+ switch (ch) {
+ case '?':
+ case '*':
+ case '+':
+ m = new ContentModel(ch, m);
+ ch = in.read();
+ break;
+ }
+ skipParameterSpace();
+
+ return m;
+ }
+
+ /**
+ * Parse element declaration.
+ * [116] 405:6
+ */
+ void parseElementDeclaration() throws IOException {
+ Vector elems = parseIdentifierList(true);
+ BitSet inclusions = null;
+ BitSet exclusions = null;
+ boolean omitStart = false;
+ boolean omitEnd = false;
+
+ if ((ch == '-') || (ch == 'O')) {
+ omitStart = ch == 'O';
+ ch = in.read();
+ skipParameterSpace();
+
+ if ((ch == '-') || (ch == 'O')) {
+ omitEnd = ch == 'O';
+ ch = in.read();
+ skipParameterSpace();
+ } else {
+ expect('-');
+ }
+ }
+
+ int type = MODEL;
+ ContentModel content = null;
+ if (parseIdentifier(false)) {
+ String nm = getString(0);
+ type = Element.name2type(nm);
+ if (type == 0) {
+ error("invalid.arg", "content type", nm);
+ type = EMPTY;
+ }
+ skipParameterSpace();
+ } else {
+ content = parseContentModel();
+ }
+
+ if ((type == MODEL) || (type == ANY)) {
+ if (ch == '-') {
+ ch = in.read();
+ Vector v = parseIdentifierList(true);
+ exclusions = new BitSet();
+ for (Enumeration e = v.elements() ; e.hasMoreElements() ;) {
+ exclusions.set(dtd.getElement((String)e.nextElement()).getIndex());
+ }
+ }
+ if (ch == '+') {
+ ch = in.read();
+ Vector v = parseIdentifierList(true);
+ inclusions = new BitSet();
+ for (Enumeration e = v.elements() ; e.hasMoreElements() ;) {
+ inclusions.set(dtd.getElement((String)e.nextElement()).getIndex());
+ }
+ }
+ }
+ expect('>');
+
+ if (in.replace == 0) {
+ for (Enumeration e = elems.elements() ; e.hasMoreElements() ;) {
+ dtd.defineElement((String)e.nextElement(), type, omitStart, omitEnd, content, exclusions, inclusions, null);
+ }
+ }
+ }
+
+ /**
+ * Parse an attribute declared value.
+ * [145] 422:6
+ */
+ void parseAttributeDeclaredValue(AttributeList atts) throws IOException {
+ if (ch == '(') {
+ atts.values = parseIdentifierList(true);
+ atts.type = NMTOKEN;
+ return;
+ }
+ if (!parseIdentifier(false)) {
+ error("invalid", "attribute value");
+ return;
+ }
+ atts.type = atts.name2type(getString(0));
+ skipParameterSpace();
+ if (atts.type == NOTATION) {
+ atts.values = parseIdentifierList(true);
+ }
+ }
+
+ /**
+ * Parse an attribute value specification.
+ * [33] 331:1
+ */
+ String parseAttributeValueSpecification() throws IOException {
+ int delim = -1;
+ switch (ch) {
+ case '\'':
+ case '"':
+ delim = ch;
+ ch = in.read();
+ }
+ while (true) {
+ switch (ch) {
+ case -1:
+ error("eof.arg", "attribute value");
+ return getString(0);
+
+ case '&':
+ parseEntityReference();
+ break;
+
+ case ' ':
+ case '\t':
+ case '\n':
+ if (delim == -1) {
+ return getString(0);
+ }
+ addString(' ');
+ ch = in.read();
+ break;
+
+ case '\'':
+ case '"':
+ if (delim == ch) {
+ ch = in.read();
+ return getString(0);
+ }
+
+ default:
+ addString(ch & 0xFF);
+ ch = in.read();
+ break;
+ }
+ }
+ }
+
+ /**
+ * Parse an attribute default value.
+ * [147] 425:1
+ */
+ void parseAttributeDefaultValue(AttributeList atts) throws IOException {
+ if (ch == '#') {
+ ch = in.read();
+ if (!parseIdentifier(true)) {
+ error("invalid", "attribute value");
+ return;
+ }
+ skipParameterSpace();
+ atts.modifier = atts.name2type(getString(0));
+ if (atts.modifier != FIXED) {
+ return;
+ }
+ }
+ atts.value = parseAttributeValueSpecification();
+ skipParameterSpace();
+ }
+
+ /**
+ * Parse an attribute definition list declaration.
+ * [141] 420:15
+ * REMIND: associated notation name
+ */
+ void parseAttlistDeclaration() throws IOException {
+ Vector elems = parseIdentifierList(true);
+ AttributeList attlist = null, atts = null;
+
+ while (parseIdentifier(true)) {
+ if (atts == null) {
+ attlist = atts = new AttributeList(getString(0));
+ } else {
+ atts.next = new AttributeList(getString(0));
+ atts = atts.next;
+ }
+ skipParameterSpace();
+ parseAttributeDeclaredValue(atts);
+ parseAttributeDefaultValue(atts);
+
+ if ((atts.modifier == IMPLIED) && (atts.values != null) && (atts.values.size() == 1)) {
+ atts.value = (String)atts.values.elementAt(0);
+ }
+ }
+
+ expect('>');
+
+ if (in.replace == 0) {
+ for (Enumeration e = elems.elements() ; e.hasMoreElements() ;) {
+ dtd.defineAttributes((String)e.nextElement(), attlist);
+ }
+ }
+ }
+
+ /**
+ * Parse an ignored section until ]]> is encountered.
+ */
+ void parseIgnoredSection() throws IOException {
+ int depth = 1;
+ in.replace++;
+ while (true) {
+ switch (ch) {
+ case '<':
+ if ((ch = in.read()) == '!') {
+ if ((ch = in.read()) == '[') {
+ ch = in.read();
+ depth++;
+ }
+ }
+ break;
+ case ']':
+ if ((ch = in.read()) == ']') {
+ if ((ch = in.read()) == '>') {
+ ch = in.read();
+ if (--depth == 0) {
+ in.replace--;
+ return;
+ }
+ }
+ }
+ break;
+ case -1:
+ error("eof");
+ in.replace--;
+ return;
+
+ default:
+ ch = in.read();
+ break;
+ }
+ }
+ }
+
+ /**
+ * Parse a marked section declaration.
+ * [93] 391:13
+ * REMIND: deal with all status keywords
+ */
+ void parseMarkedSectionDeclaration() throws IOException {
+ ch = in.read();
+ skipSpace();
+ if (!parseIdentifier(true)) {
+ error("expected", "section status keyword");
+ return;
+ }
+ String str = getString(0);
+ skipSpace();
+ expect('[');
+ if ("ignore".equals(str)) {
+ parseIgnoredSection();
+ } else {
+ if (!"include".equals(str)) {
+ error("invalid.arg", "section status keyword", str);
+ }
+ parseSection();
+ expect(']');
+ expect(']');
+ expect('>');
+ }
+ }
+
+ /**
+ * Parse an external identifier
+ * [73] 379:1
+ */
+ void parseExternalIdentifier() throws IOException {
+ if (parseIdentifier(false)) {
+ String id = getString(0);
+ skipParameterSpace();
+
+ if (id.equals("PUBLIC")) {
+ if ((ch == '\'') || (ch == '"')) {
+ parseAttributeValueSpecification();
+ } else {
+ error("expected", "public identifier");
+ }
+ skipParameterSpace();
+ } else if (!id.equals("SYSTEM")) {
+ error("invalid", "external identifier");
+ }
+ if ((ch == '\'') || (ch == '"')) {
+ parseAttributeValueSpecification();
+ }
+ skipParameterSpace();
+ }
+ }
+
+ /**
+ * Parse document type declaration.
+ * [110] 403:1
+ */
+ void parseDocumentTypeDeclaration() throws IOException {
+ skipParameterSpace();
+ if (!parseIdentifier(true)) {
+ error("expected", "identifier");
+ } else {
+ skipParameterSpace();
+ }
+ strpos = 0;
+ parseExternalIdentifier();
+
+ if (ch == '[') {
+ ch = in.read();
+ parseSection();
+ expect(']');
+ skipParameterSpace();
+ }
+ expect('>');
+ }
+
+ /**
+ * Parse a section of the input upto EOF or ']'.
+ */
+ void parseSection() throws IOException {
+ while (true) {
+ switch (ch) {
+ case ']':
+ return;
+
+ case '<':
+ switch (ch = in.read()) {
+ case '!':
+ switch (ch = in.read()) {
+ case '[':
+ parseMarkedSectionDeclaration();
+ break;
+
+ case '-':
+ skipParameterSpace();
+ expect('>');
+ break;
+
+ default:
+ if (parseIdentifier(true)) {
+ String str = getString(0);
+
+ if (str.equals("element")) {
+ parseElementDeclaration();
+
+ } else if (str.equals("entity")) {
+ parseEntityDeclaration();
+
+ } else if (str.equals("attlist")) {
+ parseAttlistDeclaration();
+
+ } else if (str.equals("doctype")) {
+ parseDocumentTypeDeclaration();
+
+ } else if (str.equals("usemap")) {
+ error("ignoring", "usemap");
+ while ((ch != -1) && (ch != '>')) {
+ ch = in.read();
+ }
+ expect('>');
+ } else if (str.equals("shortref")) {
+ error("ignoring", "shortref");
+ while ((ch != -1) && (ch != '>')) {
+ ch = in.read();
+ }
+ expect('>');
+ } else if (str.equals("notation")) {
+ error("ignoring", "notation");
+ while ((ch != -1) && (ch != '>')) {
+ ch = in.read();
+ }
+ expect('>');
+ } else {
+ error("markup");
+ }
+ } else {
+ error("markup");
+ while ((ch != -1) && (ch != '>')) {
+ ch = in.read();
+ }
+ expect('>');
+ }
+ }
+ }
+ break;
+
+ case -1:
+ return;
+
+ default:
+ char str[] = {(char)ch};
+ error("invalid.arg", "character", "'" + new String(str) + "' / " + ch);
+
+ case ' ':
+ case '\t':
+ case '\n':
+ ch = in.read();
+ break;
+ }
+ }
+ }
+
+ /**
+ * Parse a DTD.
+ * @return the dtd or null if an error occurred.
+ */
+ DTD parse(InputStream in, DTDBuilder dtd) {
+ try {
+ this.dtd = dtd;
+ this.in = new DTDInputStream(in, dtd);
+
+ long tm = System.currentTimeMillis();
+ ch = this.in.read();
+ parseSection();
+
+ if (ch != -1) {
+ error("premature");
+ }
+
+ tm = System.currentTimeMillis() - tm;
+ System.err.println("[Parsed DTD " + dtd + " in " + tm + "ms]");
+ } catch (IOException e) {
+ error("ioexception");
+ } catch (Exception e) {
+ error("exception", e.getClass().getName(), e.getMessage());
+ e.printStackTrace();
+ } catch (ThreadDeath e) {
+ error("terminated");
+ }
+ return (nerrors > 0) ? null : dtd;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/dtdbuilder/PublicMapping.java b/jdk/make/tools/src/build/tools/dtdbuilder/PublicMapping.java
new file mode 100644
index 0000000..e34b29c
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/dtdbuilder/PublicMapping.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.dtdbuilder;
+
+import javax.swing.text.html.parser.*;
+import java.io.File;
+import java.io.IOException;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.BufferedReader;
+import java.util.Hashtable;
+
+/**
+ * A class for mapping public identifiers to locations.
+ * Note: I'm not sure if there is a more natural mapping
+ * then this. Maybe we should use properties instead?
+ *
+ * @author Arthur van Hoff
+ */
+final class PublicMapping {
+
+ String baseStr;
+ Hashtable tab = new Hashtable();
+
+ /**
+ * Create a mapping.
+ */
+ public PublicMapping (String baseStr, String mapFile) throws IOException {
+ // System.err.println("start loading " + baseStr);
+ this.baseStr = baseStr;
+ load(new FileInputStream(baseStr+mapFile));
+ // System.err.println("stop loading");
+ }
+
+ /**
+ * Load a set of mappings from a stream.
+ */
+ public void load(InputStream in) throws IOException {
+ InputStreamReader reader = new InputStreamReader(in);
+ BufferedReader data = new BufferedReader(reader);
+
+ for (String ln = data.readLine() ; ln != null ; ln = data.readLine()) {
+ if (ln.startsWith("PUBLIC")) {
+ int len = ln.length();
+ int i = 6;
+ while ((i < len) && (ln.charAt(i) != '"')) i++;
+ int j = ++i;
+ while ((j < len) && (ln.charAt(j) != '"')) j++;
+ String id = ln.substring(i, j);
+ i = ++j;
+ while ((i < len) && ((ln.charAt(i) == ' ') || (ln.charAt(i) == '\t'))) i++;
+ j = i + 1;
+ while ((j < len) && (ln.charAt(j) != ' ') && (ln.charAt(j) != '\t')) j++;
+ String where = ln.substring(i, j);
+ put(id, baseStr + where);
+ }
+ }
+ data.close();
+ }
+
+ /**
+ * Add a mapping from a public identifier to a path.
+ */
+ public void put(String id, String str) {
+
+ // System.err.println("ADD = '" + id + "' = " + str);
+ tab.put(id, str);
+ if (str.endsWith(".dtd")) {
+ int i = str.lastIndexOf(File.separator);
+ if (i >= 0) {
+ tab.put(str.substring(i + 1, str.length() - 4), str);
+ }
+ }
+ }
+
+ /**
+ * Map a public identifier to a path.. You can also map
+ * a DTD file name (without the .dtd) to its path.
+ */
+ public String get(String id) {
+ // System.err.println(" id = "+id);
+ return (String) tab.get(id);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/dtdbuilder/README.txt b/jdk/make/tools/src/build/tools/dtdbuilder/README.txt
new file mode 100644
index 0000000..56e4eb8
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/dtdbuilder/README.txt
@@ -0,0 +1,37 @@
+README:
+
+This directory contains a program to read a DTD, and produce a compressed
+representation of it. It's intended that this program be run at build
+time, and the resultant .bdtd binary DTD file be read at program startup.
+
+
+ .dtdb FILE FORMAT
+
+file ::= version_no:int num_names:short name[]:string num_entities entity[]
+ num_elements element[]
+
+entity ::= name_id:short type:byte data:string
+
+element ::= name_id:short type:byte
+ flags:byte (&0x01 = omit start, &0x02 = omit end)
+ content_model
+ num_exclusions:byte name_id[]
+ num_inclusions:byte name_id[]
+ num_attributes:byte attribute[]
+
+attribute ::= name_id:short type:byte modifier:byte
+ value:name_id (or -1 for null)
+ num_values:short name_id[]
+
+content_model ::= content_c | content_e | content_null
+
+content_null ::= flag:byte=0
+
+content_c ::= flag:byte=1 type:int content:content_model next:content_model
+
+content_e ::= flag:byte=2 type:int element_name_id next:content_model
+
+string ::= modified UTF-8 encoding of a string
+
+See the java.io.InputStream class description for the specification of modified
+UTF-8.
diff --git a/jdk/make/tools/src/build/tools/fontchecker/FontCheckDummy.java b/jdk/make/tools/src/build/tools/fontchecker/FontCheckDummy.java
new file mode 100644
index 0000000..a472a27
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/fontchecker/FontCheckDummy.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.fontchecker;
+
+import java.awt.*;
+import java.awt.image.*;
+import java.io.*;
+
+/**
+ * FontCheckDummy (not unlike Crash Test Dummy).
+ *
+ * <PRE>
+ * FontCheckDummy is the "child" process. Its task is to verify
+ * integrity of system fonts. Since unexpected crashes are known
+ * to occur when certain fonts are manipulated, the process is
+ * "monitored" by the parent process, which might have to restart
+ * the "child" if it crashes.
+ * </PRE>
+ *
+ * @author Ilya Bagrak
+ */
+public class FontCheckDummy implements FontCheckerConstants {
+
+ /**
+ * Input stream from parent process.
+ */
+ private BufferedReader is;
+
+ /**
+ * Output stream to parent process.
+ */
+ private BufferedOutputStream os;
+
+ /**
+ * Image on which font characters will be drawn.
+ */
+ private BufferedImage bi;
+
+ /**
+ * graphics object on which characters will be drawn.
+ */
+ private Graphics graphics;
+
+ /**
+ * This constructor wraps the process's standard output and input streams
+ * to enable easier communication with parent process. It also initializes
+ * the graphics object used for drawing font characters.
+ * <BR><BR>
+ * @see FontCheckerConstants
+ */
+ public FontCheckDummy() {
+ is = new BufferedReader(new InputStreamReader(System.in));
+ os = new BufferedOutputStream(System.out);
+ /* make suffficient space for 12 point font */
+ bi = new BufferedImage(40, 40, BufferedImage.TYPE_INT_RGB);
+ graphics = bi.getGraphics();
+ try {
+ os.write(CHILD_STARTED_OK);
+ os.flush();
+ } catch (IOException e) {
+ System.exit(-1);
+ }
+ }
+
+ /**
+ * Initializes an instance of Font from given font path.
+ * <BR>
+ * This methods attempts to create an instance of font from
+ * a string that represents path to the font file.
+ * <BR><BR>
+ * @param fontPath string representing path to font file
+ * @param flag indicating whether or not checking of non-TrueType fonts
+ * is necessary
+ */
+ private void testFont(String fontPath, boolean checkNonTTF) {
+
+ FontFileFilter fff = new FontFileFilter(checkNonTTF);
+ File fontFile = new File(fontPath);
+ if (!fontFile.canRead()) {
+ try {
+ os.write(ERR_FONT_NOT_FOUND);
+ os.flush();
+ } catch (IOException e) {
+ System.exit(-1);
+ }
+ }
+ Font font = null;
+ try {
+ File file = new File(fontPath);
+ font = Font.createFont(fff.getFontType(fontPath), file);
+ } catch (FontFormatException e1) {
+ } catch (IOException e2) {
+ }
+ if (font == null) {
+ return;
+ }
+ font = font.deriveFont(Font.PLAIN, 12);
+ String name = font.getFontName();
+ String family = font.getFamily();
+
+ char[] testChars = { '0' };
+ if (font.canDisplay(testChars[0])) {
+ graphics.setFont(font);
+ graphics.drawChars(testChars, 0, 1, 20, 20);
+ }
+ try {
+ os.write(ERR_FONT_OK);
+ os.flush();
+ } catch (IOException e) {
+ System.exit(-1);
+ }
+ }
+
+ /**
+ * Begins synchronous communication betweeen parent and child processes.
+ * <BR>
+ * This method begins communication between parent and child processes.
+ * FontCheckDummy reads a line of text from input stream (@see #is).
+ */
+ public void run() {
+ String command = null;
+ while (true) {
+ try {
+ command = is.readLine();
+ } catch (IOException e) {
+ System.exit(-1);
+ }
+ if (command != null && command.length() >= 1) {
+ int cmd = Integer.parseInt(command.substring(0,1));
+ if (cmd == EXITCOMMAND) {
+ return;
+ }
+ boolean checkNonTTF = ((cmd == 1) ? true : false);
+ String fontPath = command.substring(1);
+ testFont(fontPath, checkNonTTF);
+ } else {
+ return;
+ }
+ }
+ }
+
+ public static void main(String[] args) {
+ try {
+ /* Background app. */
+ System.setProperty("java.awt.headless", "true");
+ System.setProperty("sun.java2d.noddraw", "true");
+ new FontCheckDummy().run();
+ } catch (Throwable t) {
+ }
+ System.exit(0);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/fontchecker/FontChecker.java b/jdk/make/tools/src/build/tools/fontchecker/FontChecker.java
new file mode 100644
index 0000000..552db25
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/fontchecker/FontChecker.java
@@ -0,0 +1,452 @@
+/*
+ * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.fontchecker;
+
+import java.io.*;
+import java.util.*;
+import java.awt.event.*;
+import sun.font.FontManager;
+
+/**
+ * FontChecker.
+ *
+ * <PRE>
+ * This is a FontChecker program. This class is a "parent" process
+ * which invokes a "child" process. The child process will test
+ * series of fonts and may crash as it encounters invalid fonts.
+ * The "parent" process must then interpret error codes passed to it
+ * by the "child" process and restart the "child" process if necessary.
+ *
+ * usage: java FontChecker [-v] -o outputfile
+ *
+ * -o is the name of the file to contains canonical path names of
+ * bad fonts that are identified. This file is not created if
+ * no bad fonts are found.
+ * -v verbose: prints progress messages.
+ *
+ * </PRE>
+ *
+ * @author Ilya Bagrak
+ */
+public class FontChecker implements ActionListener, FontCheckerConstants {
+
+ /**
+ * Output stream to subprocess.
+ * Corresponds to the subprocess's System.in".
+ */
+ private PrintWriter procPipeOut;
+
+ /**
+ * Input stream from subprocess.
+ * Corresponds to the subprocess's System.out".
+ */
+ private BufferedInputStream procPipeIn;
+
+ /**
+ * Child process.
+ */
+ private Process childProc;
+
+ /**
+ * Name of output file to write file names of bad fonts
+ */
+ private String outputFile;
+
+ /**
+ * Reference to currently executing thread.
+ */
+ private Thread currThread;
+
+ /**
+ * Timeout timer for a single font check
+ */
+ private javax.swing.Timer timeOne;
+
+ /**
+ * Timeout timer for all font checks
+ */
+ private javax.swing.Timer timeAll;
+
+ /**
+ * max time (in milliseconds) allowed for checking a single font.
+ */
+ private static int timeoutOne = 10000;
+
+ /**
+ * max time (in milliseconds) allowed for checking all fonts.
+ */
+ private static int timeoutAll = 120000;
+
+ /**
+ * Boolean flag indicating whether FontChecker is required to
+ * check non-TrueType fonts.
+ */
+ private boolean checkNonTTF = false;
+
+ /**
+ * List of bad fonts found in the system.
+ */
+ private Vector badFonts = new Vector();
+
+ /**
+ * whether to print warnings messges etc to stdout/err
+ * default is false
+ */
+ private static boolean verbose = false;
+
+ /* Command to use to exec sub-process. */
+ private static String javaCmd = "java";
+
+ static void printlnMessage(String s) {
+ if (verbose) {
+ System.out.println(s);
+ }
+ }
+
+ /**
+ * Event handler for timer event.
+ * <BR>
+ * Stops the timer and interrupts the current thread which is
+ * still waiting on I/O from the child process.
+ * <BR><BR>
+ * @param evt timer event
+ */
+ public void actionPerformed(ActionEvent evt) {
+ if (evt.getSource() == timeOne) {
+ timeOne.stop();
+ printlnMessage("Child timed out: killing");
+ childProc.destroy();
+ } else {
+ doExit(); // went on too long (ie timeAll timed out).
+ }
+ }
+
+ /**
+ * Initializes a FontChecker.
+ * <BR>
+ * This method is usually called after an unrecoverable error has
+ * been detected and a child process has either crashed or is in bad
+ * state. The method creates a new child process from
+ * scratch and initializes it's input/output streams.
+ */
+ public void initialize() {
+ try {
+ if (childProc != null) {
+ childProc.destroy();
+ }
+ String fileSeparator = System.getProperty("file.separator");
+ String javaHome = System.getProperty("java.home");
+ String classPath = System.getProperty("java.class.path");
+ classPath = "\"" + classPath + "\"";
+ String opt = "-cp " + classPath + " -Dsun.java2d.fontpath=\"" +
+ javaHome + fileSeparator + "lib" + fileSeparator + "fonts\"";
+
+ /* command to exec the child process with the same JRE */
+ String cmd =
+ new String(javaHome + fileSeparator + "bin" +
+ fileSeparator + javaCmd +
+ " -XXsuppressExitMessage " + opt +
+ " com.sun.java2d.fontchecker.FontCheckDummy");
+ printlnMessage("cmd="+cmd);
+ childProc = Runtime.getRuntime().exec(cmd);
+
+ } catch (IOException e) {
+ printlnMessage("can't execute child process");
+ System.exit(0);
+ } catch (SecurityException e) {
+ printlnMessage("Error: access denied");
+ System.exit(0);
+ }
+
+ /* initialize input/output streams to/from child process */
+ procPipeOut = new PrintWriter(childProc.getOutputStream());
+ procPipeIn = new BufferedInputStream(childProc.getInputStream());
+
+ try {
+ int code = procPipeIn.read();
+ if (code != CHILD_STARTED_OK) {
+ printlnMessage("bad child process start status="+code);
+ doExit();
+ }
+ } catch (IOException e) {
+ printlnMessage("can't read child process start status unknown");
+ doExit();
+ }
+ }
+
+ private void doExit() {
+ try {
+ if (procPipeOut != null) {
+ /* Tell the child to exit */
+ procPipeOut.write(EXITCOMMAND+System.getProperty("line.separator"));
+ procPipeOut.flush();
+ procPipeOut.close();
+ }
+ } catch (Throwable t) {
+ }
+ System.exit(0);
+ }
+
+ /**
+ * Tries to verify integrity of a font specified by a path.
+ * <BR>
+ * This method is used to test whether a font specified by the given
+ * path is valid and does not crash the system.
+ * <BR><BR>
+ * @param fontPath a string representation of font path
+ * to standard out during while this font is tried
+ * @return returns <code>true</code> if font is OK, and
+ * <code>false</code> otherwise.
+ */
+ public boolean tryFont(File fontFile) {
+ int bytesRead = 0;
+ String fontPath = fontFile.getAbsolutePath();
+
+ printlnMessage("Checking font "+fontPath);
+
+ /* store reference to the current thread, so that when the timer
+ * fires it can be interrupted
+ */
+ currThread = Thread.currentThread();
+ timeOne.restart();
+
+ /* write a string command out to child process
+ * The command is formed by appending whether to test non-TT fonts
+ * and font path to be tested
+ */
+ String command = Integer.toString(checkNonTTF ? 1 : 0) +
+ fontPath +
+ System.getProperty("line.separator");
+ procPipeOut.write(command);
+ procPipeOut.flush();
+
+ /* check if underlying stream has encountered an error after
+ * command has been issued
+ */
+ if (procPipeOut.checkError()){
+ printlnMessage("Error: font crashed");
+ initialize();
+ return false;
+ }
+
+ /* trying reading error code back from child process */
+ try {
+ bytesRead = procPipeIn.read();
+ } catch(InterruptedIOException e) {
+ /* A timeout timer fired before the operation completed */
+ printlnMessage("Error: timeout occured");
+ initialize();
+ return false;
+ } catch(IOException e) {
+ /* there was an error reading from the stream */
+ timeOne.stop();
+ printlnMessage("Error: font crashed");
+ initialize();
+ return false;
+ } catch (Throwable t) {
+ bytesRead = ERR_FONT_READ_EXCPT;
+ } finally {
+ timeOne.stop();
+ }
+
+ if (bytesRead == ERR_FONT_OK) {
+ printlnMessage("Font integrity verified");
+ return true;
+ } else if (bytesRead > 0) {
+
+ switch(bytesRead){
+ case ERR_FONT_NOT_FOUND:
+ printlnMessage("Error: font not found!");
+ break;
+ case ERR_FONT_BAD_FORMAT:
+ printlnMessage("Error: incorrect font format");
+ break;
+ case ERR_FONT_READ_EXCPT:
+ printlnMessage("Error: exception reading font");
+ break;
+ case ERR_FONT_DISPLAY:
+ printlnMessage("Error: can't display characters");
+ break;
+ case ERR_FONT_CRASH:
+ printlnMessage("Error: font crashed");
+ break;
+ default:
+ printlnMessage("Error: invalid error code:"+bytesRead);
+ break;
+
+ }
+ } else if (bytesRead == ERR_FONT_EOS) {
+ printlnMessage("Error: end of stream marker encountered");
+ } else {
+ printlnMessage("Error: invalid error code:"+bytesRead);
+ }
+
+ /* if we still haven't returned from this method, some error
+ * condition has occured and it is safer to re-initialize
+ */
+ initialize();
+ return false;
+ }
+
+ /**
+ * Checks the integrity of all system fonts.
+ * <BR>
+ * This method goes through every font in system's font path and verifies
+ * its integrity via the tryFont method.
+ * <BR><BR>
+ * @param restart <code>true</code> if checking of fonts should continue
+ * after the first bad font is found, and <code>false</code> otherwise
+ * @return returns <code>true</code> if all fonts are valid,
+ * <code>false</code> otherwise
+ * @see #tryFont(String, boolean, boolean)
+ */
+ public boolean checkFonts(boolean restart) {
+
+ /* file filter to filter out none-truetype font files */
+ FontFileFilter fff = new FontFileFilter(checkNonTTF);
+ boolean checkOk = true;
+
+ /* get platform-independent font path. Note that this bypasses
+ * the normal GraphicsEnvironment initialisation. In conjunction with
+ * the headless setting above, so we want to add
+ * java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();
+ * to trigger a more normal initialisation.
+ */
+ java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();
+ String fontPath = FontManager.getFontPath(true);
+ StringTokenizer st =
+ new StringTokenizer(fontPath,
+ System.getProperty("path.separator"));
+
+ /* some systems may have multiple font paths separated by
+ * platform-dependent characters, so fontPath string needs to be
+ * parsed
+ */
+ timeOne = new javax.swing.Timer(timeoutOne, this);
+ timeAll = new javax.swing.Timer(timeoutAll, this);
+ timeAll.restart();
+ while (st.hasMoreTokens()) {
+ File fontRoot = new File(st.nextToken());
+ File[] fontFiles = fontRoot.listFiles(fff);
+
+ for (int i = 0; i < fontFiles.length; i++) {
+ /* for each font file that is not a directory and passes
+ * through the font filter run the test
+ */
+ if (!fontFiles[i].isDirectory() &&
+ !tryFont(fontFiles[i])) {
+
+ checkOk = false;
+ badFonts.add(fontFiles[i].getAbsolutePath());
+ if (!restart) {
+ break;
+ }
+ }
+ }
+ }
+
+ /* Tell the child to exit */
+ procPipeOut.write(EXITCOMMAND+System.getProperty("line.separator"));
+ procPipeOut.flush();
+ procPipeOut.close();
+
+ return checkOk;
+ }
+
+ public static void main(String args[]){
+ try {
+ /* Background app. */
+ System.setProperty("java.awt.headless", "true");
+ System.setProperty("sun.java2d.noddraw", "true");
+
+ boolean restart = true;
+ boolean errorFlag = false;
+
+ FontChecker fc = new FontChecker();
+ int arg = 0;
+
+ while (arg < args.length && errorFlag == false) {
+ if (args[arg].equals("-v")) {
+ verbose = true;
+ }
+ else if (args[arg].equals("-w") &&
+ System.getProperty("os.name", "unknown").
+ startsWith("Windows")) {
+ javaCmd = "javaw";
+ }
+ else if (args[arg].equals("-o")) {
+ /* set output file */
+ if (++arg < args.length)
+ fc.outputFile = args[arg];
+ else {
+ /* invalid argument format */
+ printlnMessage("Error: invalid argument format");
+ errorFlag = true;
+ }
+ }
+ else {
+ /* invalid command line argument */
+ printlnMessage("Error: invalid argument value");
+ errorFlag = true;
+ }
+ arg++;
+ }
+
+ if (errorFlag || fc.outputFile == null) {
+ System.exit(0);
+ }
+
+ File outfile = new File(fc.outputFile);
+ if (outfile.exists()) {
+ outfile.delete();
+ }
+
+ fc.initialize();
+
+ if (!fc.checkFonts(restart)) {
+ String[] badFonts = (String[])fc.badFonts.toArray(new String[0]);
+ if (badFonts.length > 0) {
+ printlnMessage("Bad Fonts:");
+ try {
+ FileOutputStream fos =
+ new FileOutputStream(fc.outputFile);
+ PrintStream ps = new PrintStream(fos);
+ for (int i = 0; i < badFonts.length; i++) {
+ ps.println(badFonts[i]);
+ printlnMessage(badFonts[i]);
+ }
+ fos.close();
+ } catch (IOException e) {
+ }
+ }
+ } else {
+ printlnMessage("No bad fonts found.");
+ }
+ } catch (Throwable t) {
+ }
+ System.exit(0);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/fontchecker/FontCheckerConstants.java b/jdk/make/tools/src/build/tools/fontchecker/FontCheckerConstants.java
new file mode 100644
index 0000000..7ed764d
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/fontchecker/FontCheckerConstants.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.fontchecker;
+
+public interface FontCheckerConstants {
+
+ /* code sent to indicate child process started OK */
+ public static final int CHILD_STARTED_OK = 100;
+
+ /* error codes returned from child process */
+ public static final int ERR_FONT_OK = 65;
+ public static final int ERR_FONT_NOT_FOUND = 60;
+ public static final int ERR_FONT_BAD_FORMAT = 61;
+ public static final int ERR_FONT_READ_EXCPT = 62;
+ public static final int ERR_FONT_DISPLAY = 64;
+ public static final int ERR_FONT_EOS = -1;
+ /* nl char sent after child crashes */
+ public static final int ERR_FONT_CRASH = 10;
+
+ /* 0 and 1 are reserved, and commands can only be a single digit integer */
+ public static final int EXITCOMMAND = 2;
+}
diff --git a/jdk/make/tools/src/build/tools/fontchecker/FontFileFilter.java b/jdk/make/tools/src/build/tools/fontchecker/FontFileFilter.java
new file mode 100644
index 0000000..d137281
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/fontchecker/FontFileFilter.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * <PRE>
+ * This class filters TrueType font files from other file
+ * found in the font path.
+ *
+ * </PRE>
+ *
+ * @author Ilya Bagrak
+ */
+
+package build.tools.fontchecker;
+
+import java.awt.*;
+import java.io.*;
+
+public class FontFileFilter implements java.io.FileFilter, FontCheckerConstants {
+
+ /**
+ * Boolean flag indicating whether this filter filters out
+ * non-TrueType fonts.
+ */
+ private boolean checkNonTTF;
+
+ public FontFileFilter() {
+ this(false);
+ }
+
+ public FontFileFilter(boolean checkNonTTF) {
+ super();
+ this.checkNonTTF = checkNonTTF;
+ }
+
+ /**
+ * Checks whether a file is accepted by this filter.
+ * <BR>
+ * This method checks whehter a file is accepted by this filter.
+ * This filter is made to accept all the file whose extension is
+ * either .ttf or .TTF. These files are assumed to be TrueType fonts.
+ * <BR><BR>
+ * @return returns a boolean value indicating whether or not a file is
+ * accepted
+ */
+ public boolean accept(File pathname) {
+
+ String name = pathname.getName();
+ return (name.endsWith(".ttf") ||
+ name.endsWith(".TTF") ||
+ name.endsWith(".ttc") ||
+ name.endsWith(".TTC")) ||
+ (name.endsWith(".pfb") ||
+ name.endsWith(".PFB") ||
+ name.endsWith(".pfa") ||
+ name.endsWith(".PFA") &&
+ checkNonTTF == true);
+ }
+
+ public static int getFontType(String filename) {
+ if (filename.endsWith(".ttf") ||
+ filename.endsWith(".TTF") ||
+ filename.endsWith(".ttc") ||
+ filename.endsWith(".TTC"))
+ return Font.TRUETYPE_FONT;
+ else if (filename.endsWith(".pfb") ||
+ filename.endsWith(".PFB") ||
+ filename.endsWith(".pfa") ||
+ filename.endsWith(".PFA"))
+ return Font.TYPE1_FONT;
+ else
+ return 999;
+ }
+
+}
diff --git a/jdk/make/tools/src/build/tools/fontchecker/README.txt b/jdk/make/tools/src/build/tools/fontchecker/README.txt
new file mode 100644
index 0000000..0dfd696
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/fontchecker/README.txt
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+Instructions for running FontChecker
+------------------------------------
+
+FontChecker is a program designed to identify fonts that may cause JRE
+crashes. Such fonts may be corrupted files, or badly constructed fonts.
+Some crashes may also be due to bugs in the JRE's font code.
+This test is designed to run quickly and silently as part of the JRE
+installation process. It will only benefit users who install the JRE
+via that mechanism. It cannot guarantee to identify all "bad fonts" because
+the tests are minimal. Nor can it prevent problems due to fonts installed
+subsequently to the JRE's installation. However it does ensure that the
+vast majority of problem fonts are identified. This is important
+"RAS" functionality. It is targeted at the consumer/plugin market where
+there is substantial likelihood of end-users having installed software
+packages which may be delivered with fonts that are not up to commercial
+standards.
+
+The test is designed to be "fail safe". If the program fails to run
+properly it has no impact on the installer or on JRE execution.
+Thus there is no need to monitor successful execution of the test.
+
+The test is not a new "tool" in the sense of "javah" etc.
+The test is not designed to be user executable or visible, and should
+be unpacked by the installer into a temporary location, and executed
+once the rest of the JRE is installed (ie as a postinstall step), and
+can then be deleted from the temporary location once installation is
+complete. Not deleting the jar file before execution is complete is
+probably the sole reason that the installer may want to wait for
+the program to complete.
+
+The FontChecker application can be run directly from the jar
+file with this command:
+ %java -jar fontchecker.jar -o <file>
+
+The output file is a required parameter in this version of the application.
+The JRE installer should use the above form, and use it to create an
+output file which must be named "badfonts.txt" and be placed into
+the JRE's lib\fonts directory eg:-
+
+ java -jar fontchecker.jar -o "C:\Program Files\jre\lib\fonts\badfonts.txt"
+
+Note the lower case "badfonts.txt", and the string quotes because of the spaces
+in the path name.
+The location given here is an example and needs to be calculated at install
+time as $JREHOME\lib\fonts\badfonts.txt
+The location and name are important, because the JRE at runtime will
+look for this exactly located name and file.
+This location is private to that JRE instance. It will not affect
+any other JRE installed on the system.
+
+If running from a different directory than that containing the jar file,
+use the form containing the full path to the jar file, eg :
+
+ java -jar C:\fc\fontchecker.jar -o "C:\Program Files\jre\lib\fonts\badfonts.txt"
+
+FontChecker application accepts following command line flags.
+usage: java -jar fontchecker.jar -o outputfile
+ -v
+
+ -o is the name of the file to contains canonical path names of
+ bad fonts that are identified. This file is not created if
+ no bad fonts are found.
+
+ -v verbose mode: print progress/warning messages. Not recommended
+ for installer use.
+
+ -w if running on Windows, use "javaw" to exec the sub-process.
diff --git a/jdk/make/tools/src/build/tools/generatebreakiteratordata/CharSet.java b/jdk/make/tools/src/build/tools/generatebreakiteratordata/CharSet.java
new file mode 100644
index 0000000..04b8d3c
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/generatebreakiteratordata/CharSet.java
@@ -0,0 +1,811 @@
+/*
+ * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1996 - 2002 - All Rights Reserved
+ *
+ * The original version of this source code and documentation
+ * is copyrighted and owned by Taligent, Inc., a wholly-owned
+ * subsidiary of IBM. These materials are provided under terms
+ * of a License Agreement between Taligent and Sun. This technology
+ * is protected by multiple US and International patents.
+ *
+ * This notice and attribution to Taligent may not be removed.
+ * Taligent is a registered trademark of Taligent, Inc.
+ */
+
+package build.tools.generatebreakiteratordata;
+
+import java.util.Hashtable;
+
+/**
+ * An object representing a set of characters. (This is a "set" in the
+ * mathematical sense: an unduplicated list of characters on which set
+ * operations such as union and intersection can be performed.) The
+ * set information is stored in compressed, optimized form: The object
+ * contains an integer array with an even number of characters. Each
+ * pair of characters represents a range of characters contained in the set
+ * (a pair of the same character represents a single character). The
+ * characters are sorted in increasing order.
+ */
+class CharSet {
+ /**
+ * The structure containing the set information. The characters
+ * in this array are organized into pairs, each pair representing
+ * a range of characters contained in the set
+ */
+ private int[] chars;
+
+ //==========================================================================
+ // parseString() and associated routines
+ //==========================================================================
+ /**
+ * A cache which is used to speed up parseString() whenever it is
+ * used to parse a description that has been parsed before
+ */
+ private static Hashtable expressionCache = null;
+
+ /**
+ * Builds a CharSet based on a textual description. For the syntax of
+ * the description, see the documentation of RuleBasedBreakIterator.
+ * @see java.text.RuleBasedBreakIterator
+ */
+ public static CharSet parseString(String s) {
+ CharSet result = null;
+
+ // if "s" is in the expression cache, pull the result out
+ // of the expresison cache
+ if (expressionCache != null) {
+ result = (CharSet)expressionCache.get(s);
+ }
+
+ // otherwise, use doParseString() to actually parse the string,
+ // and then add a corresponding entry to the expression cache
+ if (result == null) {
+ result = doParseString(s);
+ if (expressionCache == null) {
+ expressionCache = new Hashtable();
+ }
+ expressionCache.put(s, result);
+ }
+ result = (CharSet)(result.clone());
+ return result;
+ }
+
+ /**
+ * This function is used by parseString() to actually parse the string
+ */
+ private static CharSet doParseString(String s) {
+ CharSet result = new CharSet();
+ int p = 0;
+
+ boolean haveDash = false;
+ boolean haveTilde = false;
+ boolean wIsReal = false;
+ int w = 0x0000;
+
+ // for each character in the description...
+ while (p < s.length()) {
+ int c = s.codePointAt(p);
+
+ // if it's an opening bracket...
+ if (c == '[') {
+ // flush the single-character cache
+ if (wIsReal) {
+ result.internalUnion(new CharSet(w));
+ }
+
+ // locate the matching closing bracket
+ int bracketLevel = 1;
+ int q = p + 1;
+ while (bracketLevel != 0) {
+ // if no matching bracket by end of string then...
+ if (q >= s.length()) {
+ throw new IllegalArgumentException("Parse error at position " + p + " in " + s);
+ }
+ int ch = s.codePointAt(q);
+ switch (ch) {
+ case '\\': // need to step over next character
+ ch = s.codePointAt(++q);
+ break;
+ case '[':
+ ++bracketLevel;
+ break;
+ case ']':
+ --bracketLevel;
+ break;
+ }
+ q += Character.charCount(ch);
+ }
+ --q;
+
+ // call parseString() recursively to parse the text inside
+ // the brackets, then either add or subtract the result from
+ // our running result depending on whether or not the []
+ // expresison was preceded by a ^
+ if (!haveTilde) {
+ result.internalUnion(CharSet.parseString(s.substring(p + 1, q)));
+ }
+ else {
+ result.internalDifference(CharSet.parseString(s.substring(p + 1, q)));
+ }
+ haveTilde = false;
+ haveDash = false;
+ wIsReal = false;
+ p = q + 1;
+ }
+
+ // if the character is a colon...
+ else if (c == ':') {
+ // flush the single-character cache
+ if (wIsReal) {
+ result.internalUnion(new CharSet(w));
+ }
+
+ // locate the matching colon (and throw an error if there
+ // isn't one)
+ int q = s.indexOf(':', p + 1);
+ if (q == -1) {
+ throw new IllegalArgumentException("Parse error at position " + p + " in " + s);
+ }
+
+ // use charSetForCategory() to parse the text in the colons,
+ // and either add or substract the result from our running
+ // result depending on whether the :: expression was
+ // preceded by a ^
+ if (!haveTilde) {
+ result.internalUnion(charSetForCategory(s.substring(p + 1, q)));
+ }
+ else {
+ result.internalDifference(charSetForCategory(s.substring(p + 1, q)));
+ }
+
+ // reset everything and advance to the next character
+ haveTilde = false;
+ haveDash = false;
+ wIsReal = false;
+ p = q + 1;
+ }
+
+ // if the character is a dash, set an appropriate flag
+ else if (c == '-') {
+ if (wIsReal) {
+ haveDash = true;
+ }
+ ++p;
+ }
+
+ // if the character is a caret, flush the single-character
+ // cache and set an appropriate flag. If the set is empty
+ // (i.e., if the expression begins with ^), invert the set
+ // (i.e., set it to include everything). The idea here is
+ // that a set that includes nothing but ^ expressions
+ // means "everything but these things".
+ else if (c == '^') {
+ if (wIsReal) {
+ result.internalUnion(new CharSet(w));
+ wIsReal = false;
+ }
+ haveTilde = true;
+ ++p;
+ if (result.empty()) {
+ result.internalComplement();
+ }
+ }
+
+ // throw an exception on an illegal character
+ else if (c >= ' ' && c < '\u007f' && !Character.isLetter((char)c)
+ && !Character.isDigit((char)c) && c != '\\') {
+ throw new IllegalArgumentException("Parse error at position " + p + " in " + s);
+ }
+
+ // otherwise, we end up here...
+ else {
+ // on a backslash, advance to the next character
+ if (c == '\\') {
+ ++p;
+ }
+
+ // if the preceding character was a dash, this character
+ // defines the end of a range. Add or subtract that range
+ // from the running result depending on whether or not it
+ // was preceded by a ^
+ if (haveDash) {
+ if (s.codePointAt(p) < w) {
+ throw new IllegalArgumentException("U+" +
+ Integer.toHexString(s.codePointAt(p))
+ + " is less than U+" + Integer.toHexString(w) + ". Dash expressions "
+ + "can't have their endpoints in reverse order.");
+ }
+
+ int ch = s.codePointAt(p);
+ if (!haveTilde) {
+ result.internalUnion(new CharSet(w, ch));
+ }
+ else {
+ result.internalDifference(new CharSet(w, ch));
+ }
+ p += Character.charCount(ch);
+ haveDash = false;
+ haveTilde = false;
+ wIsReal = false;
+ }
+
+ // if the preceding character was a caret, remove this character
+ // from the running result
+ else if (haveTilde) {
+ w = s.codePointAt(p);
+ result.internalDifference(new CharSet(w));
+ p += Character.charCount(w);
+ haveTilde = false;
+ wIsReal = false;
+ }
+
+ // otherwise, flush the single-character cache and then
+ // put this character into the cache
+ else if (wIsReal) {
+ result.internalUnion(new CharSet(w));
+ w = s.codePointAt(p);
+ p += Character.charCount(w);
+ wIsReal = true;
+ } else {
+ w = s.codePointAt(p);
+ p += Character.charCount(w);
+ wIsReal = true;
+ }
+ }
+ }
+
+ // finally, flush the single-character cache one last time
+ if (wIsReal) {
+ result.internalUnion(new CharSet(w));
+ }
+
+ return result;
+ }
+
+ /**
+ * Creates a CharSet containing all the characters in a particular
+ * Unicode category. The text is either a two-character code from
+ * the Unicode database or a single character that begins one or more
+ * two-character codes.
+ */
+ private static CharSet charSetForCategory(String category) {
+ // throw an exception if we have anything other than one or two
+ // characters inside the colons
+ if (category.length() == 0 || category.length() >= 3) {
+ throw new IllegalArgumentException("Invalid character category: " + category);
+ }
+
+ // if we have two characters, search the category map for that code
+ // and either construct and return a CharSet from the data in the
+ // category map or throw an exception
+ if (category.length() == 2) {
+ for (int i = 0; i < CharacterCategory.categoryNames.length; i++) {
+ if (CharacterCategory.categoryNames[i].equals(category)) {
+ return new CharSet(CharacterCategory.getCategoryMap(i));
+ }
+ }
+ throw new IllegalArgumentException("Invalid character category: " + category);
+ }
+
+ // if we have one character, search the category map for codes beginning
+ // with that letter, and union together all of the matching sets that
+ // we find (or throw an exception if there are no matches)
+ else if (category.length() == 1) {
+ CharSet result = new CharSet();
+ for (int i = 0; i < CharacterCategory.categoryNames.length; i++) {
+ if (CharacterCategory.categoryNames[i].startsWith(category)) {
+ result = result.union(new CharSet(CharacterCategory.getCategoryMap(i)));
+ }
+ }
+ if (result.empty()) {
+ throw new IllegalArgumentException("Invalid character category: " + category);
+ }
+ else {
+ return result;
+ }
+ }
+ return new CharSet(); // should never get here, but to make the compiler happy...
+ }
+
+ /**
+ * Returns a copy of CharSet's expression cache and sets CharSet's
+ * expression cache to empty.
+ */
+ public static Hashtable releaseExpressionCache() {
+ Hashtable result = expressionCache;
+ expressionCache = null;
+ return result;
+ }
+
+ //==========================================================================
+ // CharSet manipulation
+ //==========================================================================
+ /**
+ * Creates an empty CharSet.
+ */
+ public CharSet() {
+ chars = new int[0];
+ }
+
+ /**
+ * Creates a CharSet containing a single character.
+ * @param c The character to put into the CharSet
+ */
+ public CharSet(int c) {
+ chars = new int[2];
+ chars[0] = c;
+ chars[1] = c;
+ }
+
+ /**
+ * Creates a CharSet containing a range of characters.
+ * @param lo The lowest-numbered character to include in the range
+ * @param hi The highest-numbered character to include in the range
+ */
+ public CharSet(int lo, int hi) {
+ chars = new int[2];
+ if (lo <= hi) {
+ chars[0] = lo;
+ chars[1] = hi;
+ }
+ else {
+ chars[0] = hi;
+ chars[1] = lo;
+ }
+ }
+
+ /**
+ * Creates a CharSet, initializing it from the internal storage
+ * of another CharSet (this function performs no error checking
+ * on "chars", so if it's malformed, undefined behavior will result)
+ */
+ private CharSet(int[] chars) {
+ this.chars = chars;
+ }
+
+ /**
+ * Returns a CharSet representing the union of two CharSets.
+ */
+ public CharSet union(CharSet that) {
+ return new CharSet(doUnion(that.chars));
+ }
+
+ /**
+ * Adds the characters in "that" to this CharSet
+ */
+ private void internalUnion(CharSet that) {
+ chars = doUnion(that.chars);
+ }
+
+ /**
+ * The actual implementation of the union functions
+ */
+ private int[] doUnion(int[] c2) {
+ int[] result = new int[chars.length+c2.length];
+
+ int i = 0;
+ int j = 0;
+ int index = 0;
+
+ // consider all the characters in both strings
+ while (i < chars.length && j < c2.length) {
+ int ub;
+
+ // the first character in the result is the lower of the
+ // starting characters of the two strings, and "ub" gets
+ // set to the upper bound of that range
+ if (chars[i] < c2[j]) {
+ result[index++] = chars[i];
+ ub = chars[++i];
+ }
+ else {
+ result[index++] = c2[j];
+ ub = c2[++j];
+ }
+
+ // for as long as one of our two pointers is pointing to a range's
+ // end point, or i is pointing to a character that is less than
+ // "ub" plus one (the "plus one" stitches touching ranges together)...
+ while (i % 2 == 1 ||
+ j % 2 == 1 ||
+ (i < chars.length && chars[i] <= ub + 1)) {
+
+ // advance i to the first character that is greater than
+ // "ub" plus one
+ while (i < chars.length && chars[i] <= ub + 1) {
+ ++i;
+ }
+
+ // if i points to the endpoint of a range, update "ub"
+ // to that character, or if i points to the start of
+ // a range and the endpoint of the preceding range is
+ // greater than "ub", update "up" to _that_ character
+ if (i % 2 == 1) {
+ ub = chars[i];
+ }
+ else if (i > 0 && chars[i - 1] > ub) {
+ ub = chars[i - 1];
+ }
+
+ // now advance j to the first character that is greater
+ // that "ub" plus one
+ while (j < c2.length && c2[j] <= ub + 1) {
+ ++j;
+ }
+
+ // if j points to the endpoint of a range, update "ub"
+ // to that character, or if j points to the start of
+ // a range and the endpoint of the preceding range is
+ // greater than "ub", update "up" to _that_ character
+ if (j % 2 == 1) {
+ ub = c2[j];
+ }
+ else if (j > 0 && c2[j - 1] > ub) {
+ ub = c2[j - 1];
+ }
+ }
+ // when we finally fall out of this loop, we will have stitched
+ // together a series of ranges that overlap or touch, i and j
+ // will both point to starting points of ranges, and "ub" will
+ // be the endpoint of the range we're working on. Write "ub"
+ // to the result
+ result[index++] = ub;
+
+ // loop back around to create the next range in the result
+ }
+
+ // we fall out to here when we've exhausted all the characters in
+ // one of the operands. We can append all of the remaining characters
+ // in the other operand without doing any extra work.
+ if (i < chars.length) {
+ for (int k = i; k < chars.length; k++) {
+ result[index++] = chars[k];
+ }
+ }
+ if (j < c2.length) {
+ for (int k = j; k < c2.length; k++) {
+ result[index++] = c2[k];
+ }
+ }
+
+ if (result.length > index) {
+ int[] tmpbuf = new int[index];
+ System.arraycopy(result, 0, tmpbuf, 0, index);
+ return tmpbuf;
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns the intersection of two CharSets.
+ */
+ public CharSet intersection(CharSet that) {
+ return new CharSet(doIntersection(that.chars));
+ }
+
+ /**
+ * Removes from this CharSet any characters that aren't also in "that"
+ */
+ private void internalIntersection(CharSet that) {
+ chars = doIntersection(that.chars);
+ }
+
+ /**
+ * The internal implementation of the two intersection functions
+ */
+ private int[] doIntersection(int[] c2) {
+ int[] result = new int[chars.length+c2.length];
+
+ int i = 0;
+ int j = 0;
+ int oldI;
+ int oldJ;
+ int index = 0;
+
+ // iterate until we've exhausted one of the operands
+ while (i < chars.length && j < c2.length) {
+
+ // advance j until it points to a character that is larger than
+ // the one i points to. If this is the beginning of a one-
+ // character range, advance j to point to the end
+ if (i < chars.length && i % 2 == 0) {
+ while (j < c2.length && c2[j] < chars[i]) {
+ ++j;
+ }
+ if (j < c2.length && j % 2 == 0 && c2[j] == chars[i]) {
+ ++j;
+ }
+ }
+
+ // if j points to the endpoint of a range, save the current
+ // value of i, then advance i until it reaches a character
+ // which is larger than the character pointed at
+ // by j. All of the characters we've advanced over (except
+ // the one currently pointed to by i) are added to the result
+ oldI = i;
+ while (j % 2 == 1 && i < chars.length && chars[i] <= c2[j]) {
+ ++i;
+ }
+ for (int k = oldI; k < i; k++) {
+ result[index++] = chars[k];
+ }
+
+ // if i points to the endpoint of a range, save the current
+ // value of j, then advance j until it reaches a character
+ // which is larger than the character pointed at
+ // by i. All of the characters we've advanced over (except
+ // the one currently pointed to by i) are added to the result
+ oldJ = j;
+ while (i % 2 == 1 && j < c2.length && c2[j] <= chars[i]) {
+ ++j;
+ }
+ for (int k = oldJ; k < j; k++) {
+ result[index++] = c2[k];
+ }
+
+ // advance i until it points to a character larger than j
+ // If it points at the beginning of a one-character range,
+ // advance it to the end of that range
+ if (j < c2.length && j % 2 == 0) {
+ while (i < chars.length && chars[i] < c2[j]) {
+ ++i;
+ }
+ if (i < chars.length && i % 2 == 0 && c2[j] == chars[i]) {
+ ++i;
+ }
+ }
+ }
+
+ if (result.length > index) {
+ int[] tmpbuf = new int[index];
+ System.arraycopy(result, 0, tmpbuf, 0, index);
+ return tmpbuf;
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns a CharSet containing all the characters in "this" that
+ * aren't also in "that"
+ */
+ public CharSet difference(CharSet that) {
+ return new CharSet(doIntersection(that.doComplement()));
+ }
+
+ /**
+ * Removes from "this" all the characters that are also in "that"
+ */
+ private void internalDifference(CharSet that) {
+ chars = doIntersection(that.doComplement());
+ }
+
+ /**
+ * Returns a CharSet containing all the characters which are not
+ * in "this"
+ */
+ public CharSet complement() {
+ return new CharSet(doComplement());
+ }
+
+ /**
+ * Complements "this". All the characters it contains are removed,
+ * and all the characters it doesn't contain are added.
+ */
+ private void internalComplement() {
+ chars = doComplement();
+ }
+
+ /**
+ * The internal implementation function for the complement routines
+ */
+ private int[] doComplement() {
+ // the complement of an empty CharSet is one containing everything
+ if (empty()) {
+ int[] result = new int[2];
+ result[0] = 0x0000;
+ result[1] = 0x10FFFF;
+ return result;
+ }
+
+ int[] result = new int[chars.length+2];
+
+ int i = 0;
+ int index = 0;
+
+ // the result begins with \u0000 unless the original CharSet does
+ if (chars[0] != 0x0000) {
+ result[index++] = 0x0000;
+ }
+
+ // walk through the characters in this CharSet. Append a pair of
+ // characters the first of which is one less than the first
+ // character we see and the second of which is one plus the second
+ // character we see (don't write the first character if it's \u0000,
+ // and don't write the second character if it's \uffff.
+ while (i < chars.length) {
+ if (chars[i] != 0x0000) {
+ result[index++] = chars[i] - 1;
+ }
+ if (chars[i + 1] != 0x10FFFF) {
+ result[index++] = chars[i + 1] + 1;
+ }
+ i += 2;
+ }
+
+ // add 0x10ffff to the end of the result, unless it was in
+ // the original set
+ if (chars[i-1] != 0x10FFFF) {
+ result[index++] = 0x10FFFF;
+ }
+
+ if (result.length > index) {
+ int[] tmpbuf = new int[index];
+ System.arraycopy(result, 0, tmpbuf, 0, index);
+ return tmpbuf;
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns true if this CharSet contains the specified character
+ * @param c The character we're testing for set membership
+ */
+ public boolean contains(int c) {
+ // search for the first range endpoint that is greater than or
+ // equal to c
+ int i = 1;
+ while (i < chars.length && chars[i] < c) {
+ i += 2;
+ }
+
+ // if we've walked off the end, we don't contain c
+ if (i == chars.length) {
+ return false;
+ }
+
+ // otherwise, we contain c if the beginning of the range is less
+ // than or equal to c
+ return chars[i - 1] <= c;
+ }
+
+ /**
+ * Returns true if "that" is another instance of CharSet containing
+ * the exact same characters as this one
+ */
+ public boolean equals(Object that) {
+ return (that instanceof CharSet) && chars.equals(((CharSet)that).chars);
+ }
+
+ /**
+ * Creates a new CharSet that is equal to this one
+ */
+ public Object clone() {
+ return new CharSet(chars);
+ }
+
+ /**
+ * Returns true if this CharSet contains no characters
+ */
+ public boolean empty() {
+ return chars.length == 0;
+ }
+
+ /**
+ * Returns a textual representation of this CharSet. If the result
+ * of calling this function is passed to CharSet.parseString(), it
+ * will produce another CharSet that is equal to this one.
+ */
+ public String toString() {
+ StringBuffer result = new StringBuffer();
+
+ // the result begins with an opening bracket
+ result.append('[');
+
+ // iterate through the ranges in the CharSet
+ for (int i = 0; i < chars.length; i += 2) {
+ // for a range with the same beginning and ending point,
+ // output that character
+ if (chars[i] == chars[i + 1]) {
+ result.append("0x");
+ result.append(Integer.toHexString(chars[i]));
+ }
+
+ // otherwise, output the start and end points of the range
+ // separated by a dash
+ else {
+ result.append("0x");
+ result.append(Integer.toHexString(chars[i]));
+ result.append("-0x");
+ result.append(Integer.toHexString(chars[i + 1]));
+ }
+ }
+
+ // the result ends with a closing bracket
+ result.append(']');
+ return result.toString();
+ }
+
+ /**
+ * Returns an integer array representing the contents of this CharSet
+ * in the same form in which they're stored internally: as pairs
+ * of characters representing the start and end points of ranges
+ */
+ public int[] getRanges() {
+ return chars;
+ }
+
+ /**
+ * Returns an Enumeration that will return the ranges of characters
+ * contained in this CharSet one at a time
+ */
+ public Enumeration getChars() {
+ return new Enumeration(this);
+ }
+
+ //==========================================================================
+ // CharSet.Enumeration
+ //==========================================================================
+
+ /**
+ * An Enumeration that can be used to extract the character ranges
+ * from a CharSet one at a time
+ */
+ public class Enumeration implements java.util.Enumeration {
+ /**
+ * Initializes a CharSet.Enumeration
+ */
+ Enumeration(CharSet cs) {
+ this.chars = cs.chars;
+ p = 0;
+ }
+
+ /**
+ * Returns true if the enumeration hasn't yet returned
+ * all the ranges in the CharSet
+ */
+ public boolean hasMoreElements() {
+ return p < chars.length;
+ }
+
+ /**
+ * Returns the next range in the CarSet
+ */
+ public Object nextElement() {
+ int[] result = new int[2];
+ result[0] = chars[p++];
+ result[1] = chars[p++];
+ return result;
+ }
+
+ int p;
+ int[] chars;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/generatebreakiteratordata/CharacterCategory.java b/jdk/make/tools/src/build/tools/generatebreakiteratordata/CharacterCategory.java
new file mode 100644
index 0000000..dd4e803
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/generatebreakiteratordata/CharacterCategory.java
@@ -0,0 +1,697 @@
+/*
+ * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * This is a tool to generate categoryNames and categoryMap which are used in
+ * CharSet.java.
+ */
+
+package build.tools.generatebreakiteratordata;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.util.StringTokenizer;
+
+class CharacterCategory {
+
+ /**
+ * A list of Unicode category names.
+ */
+ static final String[] categoryNames = {
+ "Ll", /* Letter, Lowercase */
+ "Lu", /* Letter, Uppercase */
+ "Lt", /* Letter, Titlecase */
+ "Lo", /* Letter, Other */
+ "Lm", /* Letter, Modifier */
+ "Nd", /* Number, Decimal Digit */
+ "Nl", /* Number, Letter */
+ "No", /* Number, Other */
+ "Ps", /* Punctuation, Open */
+ "Pe", /* Punctuation, Close */
+ "Pi", /* Punctuation, Initial quote */
+ "Pf", /* Punctuation, Final quote */
+ "Pd", /* Punctuation, Dash */
+ "Pc", /* Punctuation, Connector */
+ "Po", /* Punctuation, Other */
+ "Sc", /* Symbol, Currency */
+ "Sm", /* Symbol, Math */
+ "So", /* Symbol, Other */
+ "Mn", /* Mark, Non-Spacing */
+ "Mc", /* Mark, Spacing Combining */
+ "Me", /* Mark, Enclosing */
+ "Zl", /* Separator, Line */
+ "Zp", /* Separator, Paragraph */
+ "Zs", /* Separator, Space */
+ "Cc", /* Other, Control */
+ "Cf", /* Other, Format */
+ "--", /* Dummy, ignored */
+ // Don't add anything after the Dummy entry!!
+ };
+
+ /**
+ * A array of Unicode code points for each category.
+ */
+ private static int[][] categoryMap;
+
+
+ /**
+ * Generates CategoryMap for GenerateBreakIteratorData.
+ */
+ static void makeCategoryMap(String filename) {
+ /* Overwrite specfile name */
+ specfile = filename;
+
+ /* Generate data in current format (1.5.0) */
+ generateNewData();
+
+ /* Copy generated data to cateogyMap */
+ categoryMap = new int[categoryNames.length-1][];
+ for (int i = 0; i < categoryNames.length-1; i++) {
+ int len = newListCount[BMP][i] + newListCount[nonBMP][i];
+ categoryMap[i] = new int[len];
+ System.arraycopy(newList[i], 0, categoryMap[i], 0, len);
+ }
+ }
+
+ /**
+ * Returns categoryMap for the given category.
+ */
+ static int[] getCategoryMap(int category) {
+ return categoryMap[category];
+ }
+
+
+ /**
+ * Only used for debugging and generating a test program.
+ */
+ public static void main(String[] args) {
+ /* Parses command-line options */
+ processArgs(args);
+
+ /* Generates data in current format (1.5.0) */
+ generateNewData();
+
+ /*
+ * Generates data in older format (1.4.X and earlier) and creates
+ * the old CategoryMap if "oldFilename" is not null.
+ */
+ if (!oldDatafile.equals("")) {
+ generateOldData();
+ generateOldDatafile();
+ }
+
+ /* Displays summary of generated data */
+ showSummary();
+
+ /*
+ * Generates a test program which compares the new data and the return
+ * values of Character.getType().
+ * and the old data and the new data.
+ */
+ generateTestProgram();
+ }
+
+
+ /**
+ * Spec (Unicode data file)
+ */
+ private static String specfile = "UnicodeData.txt";
+
+ /**
+ * Output directory
+ */
+ private static String outputDir = "";
+
+ /**
+ * Old data filename
+ */
+ private static String oldDatafile = "";
+
+ /**
+ * Parses the specified arguments and sets up the variables.
+ */
+ private static void processArgs(String[] args) {
+ for (int i = 0; i < args.length; i++) {
+ String arg =args[i];
+ if (arg.equals("-spec")) {
+ specfile = args[++i];
+ } else if (arg.equals("-old")) {
+ oldDatafile = args[++i];
+ } else if (arg.equals("-o")) {
+ outputDir = args[++i];
+ } else {
+ System.err.println("Usage: java CharacterCategory [-spec specfile]");
+ System.exit(1);
+ }
+ }
+ }
+
+
+ /**
+ * Displays summary of generated data
+ */
+ private static void showSummary() {
+ int oldSum = 0;
+ int newSum = 0;
+ int oldSuppSum = 0;
+ int newSuppSum = 0;
+
+ for (int i = 0; i < categoryNames.length-1; i++) {
+ int newNum = newListCount[BMP][i] + newListCount[nonBMP][i];
+
+ if (oldTotalCount[i] != newNum) {
+ System.err.println("Error: The number of generated data is different between the new approach and the old approach.");
+ }
+ if (oldListCount[SURROGATE][i] != newListCount[nonBMP][i]) {
+ System.err.println("Error: The number of generated supplementarycharacters is different between the new approach and the old approach.");
+ }
+
+ System.out.println(" " + categoryNames[i] + ": " +
+ oldTotalCount[i] +
+ "(" + oldListCount[BEFORE][i] +
+ " + " + oldListCount[SURROGATE][i] +
+ " + " + oldListCount[AFTER][i] + ")" +
+ " --- " + newNum +
+ "(" + newListCount[BMP][i] +
+ " + " + newListCount[nonBMP][i] + ")");
+
+ oldSum += oldListCount[BEFORE][i] * 2 +
+ oldListCount[SURROGATE][i] * 4 +
+ oldListCount[AFTER][i] * 2;
+ newSum += newNum * 4 ;
+ oldSuppSum += oldListCount[SURROGATE][i] * 4;
+ newSuppSum += newListCount[nonBMP][i] * 4;
+ }
+
+ System.out.println("\nTotal buffer sizes are:\n " +
+ oldSum + "bytes(Including " + oldSuppSum +
+ "bytes for supplementary characters)\n " +
+ newSum + "bytes(Including " + newSuppSum +
+ "bytes for supplementary characters)");
+
+ if (!ignoredOld.toString().equals(ignoredNew.toString())) {
+ System.err.println("Ignored categories: Error: List mismatch: " +
+ ignoredOld + " vs. " + ignoredNew);
+ } else {
+ System.out.println("\nIgnored categories: " + ignoredOld);
+ System.out.println("Please confirm that they aren't used in BreakIteratorRules.");
+ }
+ }
+
+
+ private static final int HighSurrogate_CodeUnit_Start = 0xD800;
+ private static final int LowSurrogate_CodeUnit_Start = 0xDC00;
+ private static final int Supplementary_CodePoint_Start = 0x10000;
+
+
+ private static StringBuffer ignoredOld = new StringBuffer();
+ private static int[] oldTotalCount = new int[categoryNames.length];
+ private static int[][] oldListCount = new int[3][categoryNames.length];
+ private static int[][] oldListLen = new int[3][categoryNames.length];
+ private static StringBuffer[][] oldList = new StringBuffer[3][categoryNames.length];
+
+ private static final int BEFORE = 0;
+ private static final int SURROGATE = 1;
+ private static final int AFTER = 2;
+
+ /**
+ * Makes CategoryMap in ordler format which had been used by JDK 1.4.X and
+ * earlier versions.
+ */
+ private static void generateOldData() {
+ /* Initialize arrays. */
+ for (int i = 0; i<categoryNames.length; i++) {
+ for (int j = BEFORE; j <= AFTER; j++) {
+ oldListCount[j][i] = 0;
+ oldList[j][i] = new StringBuffer();
+ oldListLen[j][i] = 17;
+ }
+ }
+
+ storeOldData();
+
+ if (oldTotalCount[categoryNames.length-1] != 1) {
+ System.err.println("This should not happen. Unicode data which belongs to an undefined category exists");
+ System.exit(1);
+ }
+ }
+
+ private static void storeOldData() {
+ try {
+ FileReader fin = new FileReader(specfile);
+ BufferedReader bin = new BufferedReader(fin);
+
+ String prevCode = "????";
+ String line;
+ int prevIndex = categoryNames.length - 1;
+ int prevCodeValue = -1;
+ int curCodeValue = 0;
+ boolean setFirst = false;
+
+ while ((line = bin.readLine()) != null) {
+ if (line.length() == 0) {
+ continue;
+ }
+
+ StringTokenizer st = new StringTokenizer(line, ";");
+ String code = st.nextToken();
+
+ char c = code.charAt(0);
+ if (c == '#' || c == '/') {
+ continue;
+ }
+
+ int i = Integer.valueOf(code, 16).intValue();
+
+ String characterName = st.nextToken();
+ String category = st.nextToken();
+
+ int index;
+ for (index = 0; index < categoryNames.length; index++) {
+ if (category.equals(categoryNames[index])) {
+ break;
+ }
+ }
+
+ if (index != categoryNames.length) {
+ curCodeValue = Integer.parseInt(code, 16);
+ if (prevIndex != index) {
+ appendOldChar(prevIndex, prevCodeValue, prevCode);
+ appendOldChar(index, curCodeValue, code);
+ prevIndex = index;
+ } else if (prevCodeValue != curCodeValue - 1) {
+ if (setFirst && characterName.endsWith(" Last>")) {
+ setFirst = false;
+ } else {
+ appendOldChar(prevIndex, prevCodeValue, prevCode);
+ appendOldChar(index, curCodeValue, code);
+ }
+ }
+ prevCodeValue = curCodeValue;
+ prevCode = code;
+ if (characterName.endsWith(" First>")) {
+ setFirst = true;
+ }
+ } else {
+ if (ignoredOld.indexOf(category) == -1) {
+ ignoredOld.append(category);
+ ignoredOld.append(' ');
+ }
+ }
+ }
+ appendOldChar(prevIndex, prevCodeValue, prevCode);
+
+ bin.close();
+ fin.close();
+ }
+ catch (Exception e) {
+ throw new InternalError(e.toString());
+ }
+ }
+
+ private static void appendOldChar(int index, int code, String s) {
+ int range;
+ if (code < HighSurrogate_CodeUnit_Start) {
+ range = BEFORE;
+ } else if (code < Supplementary_CodePoint_Start) {
+ range = AFTER;
+ } else {
+ range = SURROGATE;
+ }
+
+ if (oldListLen[range][index] > 64) {
+ oldList[range][index].append("\"\n + \"");
+ oldListLen[range][index] = 19;
+ }
+
+ if (code == 0x22 || code == 0x5c) {
+ oldList[range][index].append('\\');
+ oldList[range][index].append((char)code);
+ oldListLen[range][index] += 2;
+ } else if (code > 0x20 && code < 0x7F) {
+ oldList[range][index].append((char)code);
+ oldListLen[range][index] ++;
+ } else {
+ if (range == SURROGATE) {// Need to convert code point to code unit
+ oldList[range][index].append(toCodeUnit(code));
+ oldListLen[range][index] += 12;
+ } else {
+ oldList[range][index].append("\\u");
+ oldList[range][index].append(s);
+ oldListLen[range][index] += 6;
+ }
+ }
+ oldListCount[range][index] ++;
+ oldTotalCount[index]++;
+ }
+
+ private static String toCodeUnit(int i) {
+ StringBuffer sb = new StringBuffer();
+ sb.append("\\u");
+ sb.append(Integer.toString((i - Supplementary_CodePoint_Start) / 0x400 + HighSurrogate_CodeUnit_Start, 16).toUpperCase());
+ sb.append("\\u");
+ sb.append(Integer.toString(i % 0x400 + LowSurrogate_CodeUnit_Start, 16).toUpperCase());
+ return sb.toString();
+ }
+
+ private static int toCodePoint(String s) {
+ char c1 = s.charAt(0);
+
+ if (s.length() == 1 || !Character.isHighSurrogate(c1)) {
+ return (int)c1;
+ } else {
+ char c2 = s.charAt(1);
+ if (s.length() != 2 || !Character.isLowSurrogate(c2)) {
+ return -1;
+ }
+ return Character.toCodePoint(c1, c2);
+ }
+ }
+
+
+ private static StringBuffer ignoredNew = new StringBuffer();
+ private static int[] newTotalCount = new int[categoryNames.length];
+ private static int[][] newListCount = new int[2][categoryNames.length];
+ private static int[][] newList = new int[categoryNames.length][];
+
+ private static final int BMP = 0;
+ private static final int nonBMP = 1;
+
+ /**
+ * Makes CategoryMap in newer format which is used by JDK 1.5.0.
+ */
+ private static void generateNewData() {
+ /* Initialize arrays. */
+ for (int i = 0; i<categoryNames.length; i++) {
+ newList[i] = new int[10];
+ }
+
+ storeNewData();
+
+ if (newListCount[BMP][categoryNames.length-1] != 1) {
+ System.err.println("This should not happen. Unicode data which belongs to an undefined category exists");
+ System.exit(1);
+ }
+ }
+
+ private static void storeNewData() {
+ try {
+ FileReader fin = new FileReader(specfile);
+ BufferedReader bin = new BufferedReader(fin);
+
+ String line;
+ int prevIndex = categoryNames.length - 1;
+ int prevCodeValue = -1;
+ int curCodeValue = 0;
+ boolean setFirst = false;
+
+ while ((line = bin.readLine()) != null) {
+ if (line.length() == 0) {
+ continue;
+ }
+
+ StringTokenizer st = new StringTokenizer(line, ";");
+ String code = st.nextToken();
+
+ char c = code.charAt(0);
+ if (c == '#' || c == '/') {
+ continue;
+ }
+
+ int i = Integer.valueOf(code, 16).intValue();
+
+ String characterName = st.nextToken();
+ String category = st.nextToken();
+
+ int index;
+ for (index = 0; index < categoryNames.length; index++) {
+ if (category.equals(categoryNames[index])) {
+ break;
+ }
+ }
+
+ if (index != categoryNames.length) {
+ curCodeValue = Integer.parseInt(code, 16);
+ if (prevIndex == index) {
+ if (setFirst) {
+ if (characterName.endsWith(" Last>")) {
+ setFirst = false;
+ } else {
+ System.err.println("*** Error 1 at " + code);
+ }
+ } else {
+ if (characterName.endsWith(" First>")) {
+ setFirst = true;
+ } else if (characterName.endsWith(" Last>")) {
+ System.err.println("*** Error 2 at " + code);
+ } else {
+ if (prevCodeValue != curCodeValue - 1) {
+ appendNewChar(prevIndex, prevCodeValue);
+ appendNewChar(index, curCodeValue);
+ }
+ }
+ }
+ } else {
+ if (setFirst) {
+ System.err.println("*** Error 3 at " + code);
+ } else if (characterName.endsWith(" First>")) {
+ setFirst = true;
+ } else if (characterName.endsWith(" Last>")) {
+ System.err.println("*** Error 4 at " + code);
+ }
+ appendNewChar(prevIndex, prevCodeValue);
+ appendNewChar(index, curCodeValue);
+ prevIndex = index;
+ }
+ prevCodeValue = curCodeValue;
+ } else {
+ if (ignoredNew.indexOf(category) == -1) {
+ ignoredNew.append(category);
+ ignoredNew.append(' ');
+ }
+ }
+ }
+ appendNewChar(prevIndex, prevCodeValue);
+
+ bin.close();
+ fin.close();
+ }
+ catch (Exception e) {
+ System.err.println("Error occurred on accessing " + specfile);
+ e.printStackTrace();
+ System.exit(1);
+ }
+ }
+
+ private static void appendNewChar(int index, int code) {
+ int bufLen = newList[index].length;
+ if (newTotalCount[index] == bufLen) {
+ int[] tmpBuf = new int[bufLen + 10];
+ System.arraycopy(newList[index], 0, tmpBuf, 0, bufLen);
+ newList[index] = tmpBuf;
+ }
+
+ newList[index][newTotalCount[index]++] = code;
+ if (code < 0x10000) {
+ newListCount[BMP][index]++;
+ } else {
+ newListCount[nonBMP][index]++;
+ }
+ }
+
+
+ /* Generates the old CategoryMap. */
+ private static void generateOldDatafile() {
+ try {
+ FileWriter fout = new FileWriter(oldDatafile);
+ BufferedWriter bout = new BufferedWriter(fout);
+
+ bout.write("\n //\n // The following String[][] can be used in CharSet.java as is.\n //\n\n private static final String[][] categoryMap = {\n");
+ for (int i = 0; i < categoryNames.length - 1; i++) {
+ if (oldTotalCount[i] != 0) {
+ bout.write(" { \"" + categoryNames[i] + "\",");
+
+ /* 0x0000-0xD7FF */
+ if (oldListCount[BEFORE][i] != 0) {
+ bout.write(" \"");
+
+ bout.write(oldList[BEFORE][i].toString() + "\"\n");
+ }
+
+ /* 0xD800-0xFFFF */
+ if (oldListCount[AFTER][i] != 0) {
+ if (oldListCount[BEFORE][i] != 0) {
+ bout.write(" + \"");
+ } else {
+ bout.write(" \"");
+ }
+ bout.write(oldList[AFTER][i].toString() + "\"\n");
+ }
+
+ /* 0xD800DC00(0x10000)-0xDBFF0xDFFFF(0x10FFFF) */
+ if (oldListCount[SURROGATE][i] != 0) {
+ if (oldListCount[BEFORE][i] != 0 || oldListCount[AFTER][i] != 0) {
+ bout.write(" + \"");
+ } else {
+ bout.write(" \"");
+ }
+ bout.write(oldList[SURROGATE][i].toString() + "\"\n");
+ }
+ bout.write(" },\n");
+
+ }
+ }
+ bout.write(" };\n\n");
+ bout.close();
+ fout.close();
+ }
+ catch (Exception e) {
+ System.err.println("Error occurred on accessing " + oldDatafile);
+ e.printStackTrace();
+ System.exit(1);
+ }
+
+ System.out.println("\n" + oldDatafile + " has been generated.");
+ }
+
+
+ /**
+ * Test program to be generated
+ */
+ private static final String outfile = "CharacterCategoryTest.java";
+
+ /*
+ * Generates a test program which compare the generated date (newer one)
+ * with the return values of Characger.getType().
+ */
+ private static void generateTestProgram() {
+ try {
+ FileWriter fout = new FileWriter(outfile);
+ BufferedWriter bout = new BufferedWriter(fout);
+
+ bout.write(collationMethod);
+ bout.write("\n //\n // The following arrays can be used in CharSet.java as is.\n //\n\n");
+
+ bout.write(" private static final String[] categoryNames = {");
+ for (int i = 0; i < categoryNames.length - 1; i++) {
+ if (i % 10 == 0) {
+ bout.write("\n ");
+ }
+ bout.write("\"" + categoryNames[i] + "\", ");
+ }
+ bout.write("\n };\n\n");
+
+ bout.write(" private static final int[][] categoryMap = {\n");
+
+ for (int i = 0; i < categoryNames.length - 1; i++) {
+ StringBuffer sb = new StringBuffer(" { /* Data for \"" + categoryNames[i] + "\" category */");
+
+ for (int j = 0; j < newTotalCount[i]; j++) {
+ if (j % 8 == 0) {
+ sb.append("\n ");
+ }
+ sb.append(" 0x");
+ sb.append(Integer.toString(newList[i][j], 16).toUpperCase());
+ sb.append(',');
+ }
+ sb.append("\n },\n");
+ bout.write(sb.toString());
+ }
+
+ bout.write(" };\n");
+
+ bout.write("\n}\n");
+
+ bout.close();
+ fout.close();
+ }
+ catch (Exception e) {
+ System.err.println("Error occurred on accessing " + outfile);
+ e.printStackTrace();
+ System.exit(1);
+ }
+
+ System.out.println("\n" + outfile + " has been generated.");
+ }
+
+ static String collationMethod =
+"public class CharacterCategoryTest {\n\n" +
+" static final int SIZE = 0x110000;\n" +
+" static final String[] category = {\n" +
+" \"Cn\", \"Lu\", \"Ll\", \"Lt\", \"Lm\", \"Lo\", \"Mn\", \"Me\",\n" +
+" \"Mc\", \"Nd\", \"Nl\", \"No\", \"Zs\", \"Zl\", \"Zp\", \"Cc\",\n" +
+" \"Cf\", \"\", \"Co\", \"Cs\", \"Pd\", \"Ps\", \"Pe\", \"Pc\",\n" +
+" \"Po\", \"Sm\", \"Sc\", \"Sk\", \"So\", \"Pi\", \"Pf\"\n" +
+" };\n\n" +
+" public static void main(String[] args) {\n" +
+" boolean err = false;\n" +
+" byte[] b = new byte[SIZE];\n" +
+" for (int i = 0; i < SIZE; i++) {\n" +
+" b[i] = 0;\n" +
+" }\n" +
+" for (int i = 0; i < categoryMap.length; i++) {\n" +
+" byte categoryNum = 0;\n" +
+" String categoryName = categoryNames[i];\n" +
+" for (int j = 0; j < category.length; j++) {\n" +
+" if (categoryName.equals(category[j])) {\n" +
+" categoryNum = (byte)j;\n" +
+" break;\n" +
+" }\n" +
+" }\n" +
+" int[] values = categoryMap[i];\n" +
+" for (int j = 0; j < values.length;) {\n" +
+" int firstChar = values[j++];\n" +
+" int lastChar = values[j++];\n" +
+" for (int k = firstChar; k <= lastChar; k++) {\n" +
+" b[k] = categoryNum;\n" +
+" }\n" +
+" }\n" +
+" }\n" +
+" for (int i = 0; i < SIZE; i++) {\n" +
+" int characterType = Character.getType(i);\n" +
+" if (b[i] != characterType) {\n" +
+" /* Co, Cs and Sk categories are ignored in CharacterCategory. */\n" +
+" if (characterType == Character.PRIVATE_USE ||\n" +
+" characterType == Character.SURROGATE ||\n" +
+" characterType == Character.MODIFIER_SYMBOL) {\n" +
+" continue;\n" +
+" }\n" +
+" err = true;\n" +
+" System.err.println(\"Category conflict for a character(0x\" +\n" +
+" Integer.toHexString(i) +\n" +
+" \"). CharSet.categoryMap:\" +\n" +
+" category[b[i]] +\n" +
+" \" Character.getType():\" +\n" +
+" category[characterType]);\n" +
+" }\n" +
+" }\n\n" +
+" if (err) {\n" +
+" throw new RuntimeException(\"Conflict occurred between Charset.categoryMap and Character.getType()\");\n" +
+" }\n" +
+" }\n";
+
+}
diff --git a/jdk/make/tools/src/build/tools/generatebreakiteratordata/DictionaryBasedBreakIteratorBuilder.java b/jdk/make/tools/src/build/tools/generatebreakiteratordata/DictionaryBasedBreakIteratorBuilder.java
new file mode 100644
index 0000000..d5a170c
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/generatebreakiteratordata/DictionaryBasedBreakIteratorBuilder.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.generatebreakiteratordata;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+/**
+ * The Builder class for DictionaryBasedBreakIterator inherits almost all of
+ * its functionality from RuleBasedBreakIteratorBuilder, but extends it with
+ * extra logic to handle the "<dictionary>" token.
+ */
+class DictionaryBasedBreakIteratorBuilder extends RuleBasedBreakIteratorBuilder {
+
+ /**
+ * A list of flags indicating which character categories are contained in
+ * the dictionary file (this is used to determine which ranges of characters
+ * to apply the dictionary to)
+ */
+ private boolean[] categoryFlags;
+
+ /**
+ * A CharSet that contains all the characters represented in the dictionary
+ */
+ private CharSet dictionaryChars = new CharSet();
+ private String dictionaryExpression = "";
+
+ public DictionaryBasedBreakIteratorBuilder(String description) {
+ super(description);
+ }
+
+ /**
+ * We override handleSpecialSubstitution() to add logic to handle
+ * the <dictionary> tag. If we see a substitution named "<dictionary>",
+ * parse the substitution expression and store the result in
+ * dictionaryChars.
+ */
+ protected void handleSpecialSubstitution(String replace, String replaceWith,
+ int startPos, String description) {
+ super.handleSpecialSubstitution(replace, replaceWith, startPos, description);
+
+ if (replace.equals("<dictionary>")) {
+ if (replaceWith.charAt(0) == '(') {
+ error("Dictionary group can't be enclosed in (", startPos, description);
+ }
+ dictionaryExpression = replaceWith;
+ dictionaryChars = CharSet.parseString(replaceWith);
+ }
+ }
+
+ /**
+ * The other half of the logic to handle the dictionary characters happens
+ * here. After the inherited builder has derived the real character
+ * categories, we set up the categoryFlags array in the iterator. This array
+ * contains "true" for every character category that includes a dictionary
+ * character.
+ */
+ protected void buildCharCategories(Vector tempRuleList) {
+ super.buildCharCategories(tempRuleList);
+
+ categoryFlags = new boolean[categories.size()];
+ for (int i = 0; i < categories.size(); i++) {
+ CharSet cs = (CharSet)categories.elementAt(i);
+ if (!(cs.intersection(dictionaryChars).empty())) {
+ categoryFlags[i] = true;
+ }
+ }
+ }
+
+ // This function is actually called by
+ // RuleBasedBreakIteratorBuilder.buildCharCategories(), which is called by
+ // the function above. This gives us a way to create a separate character
+ // category for the dictionary characters even when
+ // RuleBasedBreakIteratorBuilder isn't making a distinction.
+ protected void mungeExpressionList(Hashtable expressions) {
+ expressions.put(dictionaryExpression, dictionaryChars);
+ }
+
+ void makeFile(String filename) {
+ super.setAdditionalData(super.toByteArray(categoryFlags));
+ super.makeFile(filename);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/generatebreakiteratordata/GenerateBreakIteratorData.java b/jdk/make/tools/src/build/tools/generatebreakiteratordata/GenerateBreakIteratorData.java
new file mode 100644
index 0000000..42c349f
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/generatebreakiteratordata/GenerateBreakIteratorData.java
@@ -0,0 +1,210 @@
+/*
+ * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.generatebreakiteratordata;
+
+import java.util.Enumeration;
+import java.util.ListResourceBundle;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+/**
+ * Generates datafile for BreakIterator.
+ */
+public class GenerateBreakIteratorData {
+
+ /**
+ * Directory where generated data files are put in.
+ */
+ private static String outputDir = "" ;
+
+ /**
+ * Unicode data file
+ */
+ private static String unicodeData = "UnicodeData.txt";
+
+ /**
+ * Rules file
+ */
+ private static String rules = "sun.text.resources.BreakIteratorRules";
+
+ /**
+ * Locale data
+ */
+ private static String language = "";
+ private static String country = "";
+ private static String valiant = "";
+ private static String localeName = ""; /* _language_country_valiant */
+
+
+ public static void main(String[] args) {
+ /* Parse command-line options */
+ processArgs(args);
+
+ /* Make categoryMap from Unicode data */
+ CharacterCategory.makeCategoryMap(unicodeData);
+
+ /* Generate files */
+ generateFiles();
+ }
+
+ /**
+ * Generate data files whose names are included in
+ * sun.text.resources.BreakIteratorInfo+<localeName>
+ */
+ private static void generateFiles() {
+ String[] classNames;
+ ResourceBundle rules, info;
+
+ info = ResourceBundle.getBundle("sun.text.resources.BreakIteratorInfo",
+ new Locale(language, country, valiant));
+ classNames = info.getStringArray("BreakIteratorClasses");
+
+ rules = ResourceBundle.getBundle("sun.text.resources.BreakIteratorRules",
+ new Locale(language, country, valiant));
+
+ /*
+ * Fallback is not necessary here.... So, cannot use getBundle().
+ */
+ try {
+ info = (ResourceBundle)Class.forName("sun.text.resources.BreakIteratorInfo" + localeName).newInstance();
+
+ Enumeration keys = info.getKeys();
+ while (keys.hasMoreElements()) {
+ String key = (String)keys.nextElement();
+
+ if (key.equals("CharacterData")) {
+ generateDataFile(info.getString(key),
+ rules.getString("CharacterBreakRules"),
+ classNames[0]);
+ } else if (key.endsWith("WordData")) {
+ generateDataFile(info.getString(key),
+ rules.getString("WordBreakRules"),
+ classNames[1]);
+ } else if (key.endsWith("LineData")) {
+ generateDataFile(info.getString(key),
+ rules.getString("LineBreakRules"),
+ classNames[2]);
+ } else if (key.endsWith("SentenceData")) {
+ generateDataFile(info.getString(key),
+ rules.getString("SentenceBreakRules"),
+ classNames[3]);
+ }
+ }
+ }
+ catch (Exception e) {
+ throw new InternalError(e.toString());
+ }
+ }
+
+ /**
+ * Generate a data file for break-iterator
+ */
+ private static void generateDataFile(String datafile, String rule, String builder) {
+ RuleBasedBreakIteratorBuilder bld;
+ if (builder.equals("RuleBasedBreakIterator")) {
+ bld = new RuleBasedBreakIteratorBuilder(rule);
+ } else if (builder.equals("DictionaryBasedBreakIterator")) {
+ bld = new DictionaryBasedBreakIteratorBuilder(rule);
+ } else {
+ throw new IllegalArgumentException("Invalid break iterator class \"" + builder + "\"");
+ }
+
+ bld.makeFile(datafile);
+ }
+
+ /**
+ * Parses the specified arguments and sets up the variables.
+ */
+ private static void processArgs(String[] args) {
+ for (int i = 0; i < args.length; i++) {
+ String arg = args[i];
+ if (arg.equals("-o")) {
+ outputDir = args[++i];
+ } else if (arg.equals("-spec")) {
+ unicodeData = args[++i];
+ } else if (arg.equals("-language")) {
+ language = args[++i];
+ } else if (arg.equals("-country")) {
+ country = args[++i];
+ } else if (arg.equals("-valiant")) {
+ valiant = args[++i];
+ } else {
+ usage();
+ }
+ }
+
+ // Set locale name
+ localeName = getLocaleName();
+ }
+
+ /**
+ * Make locale name ("_language_country_valiant")
+ */
+ private static String getLocaleName() {
+ if (language.equals("")) {
+ if (!country.equals("") || !valiant.equals("")) {
+ language = "en";
+ } else {
+ return "";
+ }
+ }
+
+ StringBuffer sb = new StringBuffer();
+ sb.append('_');
+ sb.append(language);
+ if (!country.equals("") || !valiant.equals("")) {
+ sb.append('_');
+ sb.append(country);
+ if (!valiant.equals("")) {
+ sb.append('_');
+ sb.append(valiant);
+ }
+ }
+
+ return sb.toString();
+ }
+
+ /**
+ * Usage: Displayed when an invalid command-line option is specified.
+ */
+ private static void usage() {
+ System.err.println("Usage: GenerateBreakIteratorData [options]\n" +
+ " -o outputDir output directory name\n" +
+ " -spec specname unicode text filename\n" +
+ " and locale data:\n" +
+ " -lang language target language name\n" +
+ " -country country target country name\n" +
+ " -valiant valiant target valiant name\n"
+ );
+ }
+
+ /**
+ * Return the path of output directory
+ */
+ static String getOutputDirectory() {
+ return outputDir;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/generatebreakiteratordata/RuleBasedBreakIteratorBuilder.java b/jdk/make/tools/src/build/tools/generatebreakiteratordata/RuleBasedBreakIteratorBuilder.java
new file mode 100644
index 0000000..fd0df5b
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/generatebreakiteratordata/RuleBasedBreakIteratorBuilder.java
@@ -0,0 +1,2185 @@
+/*
+ * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.generatebreakiteratordata;
+
+import java.io.*;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Stack;
+import java.util.Vector;
+import java.util.zip.CRC32;
+import sun.text.CompactByteArray;
+
+/**
+ * This class has the job of constructing a RuleBasedBreakIterator from a
+ * textual description. A Builder is constructed by GenerateBreakIteratorData,
+ * which uses it to construct the iterator itself and then throws it away.
+ * <p>The construction logic is separated out into its own class for two primary
+ * reasons:
+ * <ul>
+ * <li>The construction logic is quite sophisticated and large. Separating
+ * it out into its own class means the code must only be loaded into memory
+ * while a RuleBasedBreakIterator is being constructed, and can be purged after
+ * that.
+ * <li>There is a fair amount of state that must be maintained throughout the
+ * construction process that is not needed by the iterator after construction.
+ * Separating this state out into another class prevents all of the functions
+ * that construct the iterator from having to have really long parameter lists,
+ * (hopefully) contributing to readability and maintainability.
+ * </ul>
+ * <p>
+ * It'd be really nice if this could be an independent class rather than an
+ * inner class, because that would shorten the source file considerably, but
+ * making Builder an inner class of RuleBasedBreakIterator allows it direct
+ * access to RuleBasedBreakIterator's private members, which saves us from
+ * having to provide some kind of "back door" to the Builder class that could
+ * then also be used by other classes.
+ */
+class RuleBasedBreakIteratorBuilder {
+
+ /**
+ * A token used as a character-category value to identify ignore characters
+ */
+ protected static final byte IGNORE = -1;
+
+ /**
+ * Tables that indexes from character values to character category numbers
+ */
+ private CompactByteArray charCategoryTable = null;
+ private SupplementaryCharacterData supplementaryCharCategoryTable = null;
+
+ /**
+ * The table of state transitions used for forward iteration
+ */
+ private short[] stateTable = null;
+
+ /**
+ * The table of state transitions used to sync up the iterator with the
+ * text in backwards and random-access iteration
+ */
+ private short[] backwardsStateTable = null;
+
+ /**
+ * A list of flags indicating which states in the state table are accepting
+ * ("end") states
+ */
+ private boolean[] endStates = null;
+
+ /**
+ * A list of flags indicating which states in the state table are
+ * lookahead states (states which turn lookahead on and off)
+ */
+ private boolean[] lookaheadStates = null;
+
+ /**
+ * A table for additional data. May be used by a subclass of
+ * RuleBasedBreakIterator.
+ */
+ private byte[] additionalData = null;
+
+ /**
+ * The number of character categories (and, thus, the number of columns in
+ * the state tables)
+ */
+ private int numCategories;
+
+ /**
+ * A temporary holding place used for calculating the character categories.
+ * This object contains CharSet objects.
+ */
+ protected Vector categories = null;
+
+ /**
+ * A table used to map parts of regexp text to lists of character
+ * categories, rather than having to figure them out from scratch each time
+ */
+ protected Hashtable expressions = null;
+
+ /**
+ * A temporary holding place for the list of ignore characters
+ */
+ protected CharSet ignoreChars = null;
+
+ /**
+ * A temporary holding place where the forward state table is built
+ */
+ protected Vector tempStateTable = null;
+
+ /**
+ * A list of all the states that have to be filled in with transitions to
+ * the next state that is created. Used when building the state table from
+ * the regular expressions.
+ */
+ protected Vector decisionPointList = null;
+
+ /**
+ * A stack for holding decision point lists. This is used to handle nested
+ * parentheses and braces in regexps.
+ */
+ protected Stack decisionPointStack = null;
+
+ /**
+ * A list of states that loop back on themselves. Used to handle .*?
+ */
+ protected Vector loopingStates = null;
+
+ /**
+ * Looping states actually have to be backfilled later in the process
+ * than everything else. This is where a the list of states to backfill
+ * is accumulated. This is also used to handle .*?
+ */
+ protected Vector statesToBackfill = null;
+
+ /**
+ * A list mapping pairs of state numbers for states that are to be combined
+ * to the state number of the state representing their combination. Used
+ * in the process of making the state table deterministic to prevent
+ * infinite recursion.
+ */
+ protected Vector mergeList = null;
+
+ /**
+ * A flag that is used to indicate when the list of looping states can
+ * be reset.
+ */
+ protected boolean clearLoopingStates = false;
+
+ /**
+ * A bit mask used to indicate a bit in the table's flags column that marks
+ * a state as an accepting state.
+ */
+ protected static final int END_STATE_FLAG = 0x8000;
+
+ /**
+ * A bit mask used to indicate a bit in the table's flags column that marks
+ * a state as one the builder shouldn't loop to any looping states
+ */
+ protected static final int DONT_LOOP_FLAG = 0x4000;
+
+ /**
+ * A bit mask used to indicate a bit in the table's flags column that marks
+ * a state as a lookahead state.
+ */
+ protected static final int LOOKAHEAD_STATE_FLAG = 0x2000;
+
+ /**
+ * A bit mask representing the union of the mask values listed above.
+ * Used for clearing or masking off the flag bits.
+ */
+ protected static final int ALL_FLAGS = END_STATE_FLAG
+ | LOOKAHEAD_STATE_FLAG
+ | DONT_LOOP_FLAG;
+
+ /**
+ * This is the main function for setting up the BreakIterator's tables. It
+ * just vectors different parts of the job off to other functions.
+ */
+ public RuleBasedBreakIteratorBuilder(String description) {
+ Vector tempRuleList = buildRuleList(description);
+ buildCharCategories(tempRuleList);
+ buildStateTable(tempRuleList);
+ buildBackwardsStateTable(tempRuleList);
+ }
+
+ /**
+ * Thus function has three main purposes:
+ * <ul><li>Perform general syntax checking on the description, so the rest
+ * of the build code can assume that it's parsing a legal description.
+ * <li>Split the description into separate rules
+ * <li>Perform variable-name substitutions (so that no one else sees
+ * variable names)
+ * </ul>
+ */
+ private Vector buildRuleList(String description) {
+ // invariants:
+ // - parentheses must be balanced: ()[]{}<>
+ // - nothing can be nested inside <>
+ // - nothing can be nested inside [] except more []s
+ // - pairs of ()[]{}<> must not be empty
+ // - ; can only occur at the outer level
+ // - | can only appear inside ()
+ // - only one = or / can occur in a single rule
+ // - = and / cannot both occur in the same rule
+ // - <> can only occur on the left side of a = expression
+ // (because we'll perform substitutions to eliminate them other places)
+ // - the left-hand side of a = expression can only be a single character
+ // (possibly with \) or text inside <>
+ // - the right-hand side of a = expression must be enclosed in [] or ()
+ // - * may not occur at the beginning of a rule, nor may it follow
+ // =, /, (, (, |, }, ;, or *
+ // - ? may only follow *
+ // - the rule list must contain at least one / rule
+ // - no rule may be empty
+ // - all printing characters in the ASCII range except letters and digits
+ // are reserved and must be preceded by \
+ // - ! may only occur at the beginning of a rule
+
+ // set up a vector to contain the broken-up description (each entry in the
+ // vector is a separate rule) and a stack for keeping track of opening
+ // punctuation
+ Vector tempRuleList = new Vector();
+ Stack parenStack = new Stack();
+
+ int p = 0;
+ int ruleStart = 0;
+ int c = '\u0000';
+ int lastC = '\u0000';
+ int lastOpen = '\u0000';
+ boolean haveEquals = false;
+ boolean havePipe = false;
+ boolean sawVarName = false;
+ final String charsThatCantPrecedeAsterisk = "=/{(|}*;\u0000";
+
+ // if the description doesn't end with a semicolon, tack a semicolon onto the end
+ if (description.length() != 0 &&
+ description.codePointAt(description.length() - 1) != ';') {
+ description = description + ";";
+ }
+
+ // for each character, do...
+ while (p < description.length()) {
+ c = description.codePointAt(p);
+
+ switch (c) {
+ // if the character is a backslash, skip the character that follows it
+ // (it'll get treated as a literal character)
+ case '\\':
+ ++p;
+ break;
+
+ // if the character is opening punctuation, verify that no nesting
+ // rules are broken, and push the character onto the stack
+ case '{':
+ case '<':
+ case '[':
+ case '(':
+ if (lastOpen == '<') {
+ error("Can't nest brackets inside <>", p, description);
+ }
+ if (lastOpen == '[' && c != '[') {
+ error("Can't nest anything in [] but []", p, description);
+ }
+
+ // if we see < anywhere except on the left-hand side of =,
+ // we must be seeing a variable name that was never defined
+ if (c == '<' && (haveEquals || havePipe)) {
+ error("Unknown variable name", p, description);
+ }
+
+ lastOpen = c;
+ parenStack.push(new Character((char)c));
+ if (c == '<') {
+ sawVarName = true;
+ }
+ break;
+
+ // if the character is closing punctuation, verify that it matches the
+ // last opening punctuation we saw, and that the brackets contain
+ // something, then pop the stack
+ case '}':
+ case '>':
+ case ']':
+ case ')':
+ char expectedClose = '\u0000';
+ switch (lastOpen) {
+ case '{':
+ expectedClose = '}';
+ break;
+ case '[':
+ expectedClose = ']';
+ break;
+ case '(':
+ expectedClose = ')';
+ break;
+ case '<':
+ expectedClose = '>';
+ break;
+ }
+ if (c != expectedClose) {
+ error("Unbalanced parentheses", p, description);
+ }
+ if (lastC == lastOpen) {
+ error("Parens don't contain anything", p, description);
+ }
+ parenStack.pop();
+ if (!parenStack.empty()) {
+ lastOpen = ((Character)(parenStack.peek())).charValue();
+ }
+ else {
+ lastOpen = '\u0000';
+ }
+
+ break;
+
+ // if the character is an asterisk, make sure it occurs in a place
+ // where an asterisk can legally go
+ case '*':
+ if (charsThatCantPrecedeAsterisk.indexOf(lastC) != -1) {
+ error("Misplaced asterisk", p, description);
+ }
+ break;
+
+ // if the character is a question mark, make sure it follows an asterisk
+ case '?':
+ if (lastC != '*') {
+ error("Misplaced ?", p, description);
+ }
+ break;
+
+ // if the character is an equals sign, make sure we haven't seen another
+ // equals sign or a slash yet
+ case '=':
+ if (haveEquals || havePipe) {
+ error("More than one = or / in rule", p, description);
+ }
+ haveEquals = true;
+ break;
+
+ // if the character is a slash, make sure we haven't seen another slash
+ // or an equals sign yet
+ case '/':
+ if (haveEquals || havePipe) {
+ error("More than one = or / in rule", p, description);
+ }
+ if (sawVarName) {
+ error("Unknown variable name", p, description);
+ }
+ havePipe = true;
+ break;
+
+ // if the character is an exclamation point, make sure it occurs only
+ // at the beginning of a rule
+ case '!':
+ if (lastC != ';' && lastC != '\u0000') {
+ error("! can only occur at the beginning of a rule", p, description);
+ }
+ break;
+
+ // we don't have to do anything special on a period
+ case '.':
+ break;
+
+ // if the character is a syntax character that can only occur
+ // inside [], make sure that it does in fact only occur inside [].
+ case '^':
+ case '-':
+ case ':':
+ if (lastOpen != '[' && lastOpen != '<') {
+ error("Illegal character", p, description);
+ }
+ break;
+
+ // if the character is a semicolon, do the following...
+ case ';':
+ // make sure the rule contains something and that there are no
+ // unbalanced parentheses or brackets
+ if (lastC == ';' || lastC == '\u0000') {
+ error("Empty rule", p, description);
+ }
+ if (!parenStack.empty()) {
+ error("Unbalanced parenheses", p, description);
+ }
+
+ if (parenStack.empty()) {
+ // if the rule contained an = sign, call processSubstitution()
+ // to replace the substitution name with the substitution text
+ // wherever it appears in the description
+ if (haveEquals) {
+ description = processSubstitution(description.substring(ruleStart,
+ p), description, p + 1);
+ }
+ else {
+ // otherwise, check to make sure the rule doesn't reference
+ // any undefined substitutions
+ if (sawVarName) {
+ error("Unknown variable name", p, description);
+ }
+
+ // then add it to tempRuleList
+ tempRuleList.addElement(description.substring(ruleStart, p));
+ }
+
+ // and reset everything to process the next rule
+ ruleStart = p + 1;
+ haveEquals = havePipe = sawVarName = false;
+ }
+ break;
+
+ // if the character is a vertical bar, check to make sure that it
+ // occurs inside a () expression and that the character that precedes
+ // it isn't also a vertical bar
+ case '|':
+ if (lastC == '|') {
+ error("Empty alternative", p, description);
+ }
+ if (parenStack.empty() || lastOpen != '(') {
+ error("Misplaced |", p, description);
+ }
+ break;
+
+ // if the character is anything else (escaped characters are
+ // skipped and don't make it here), it's an error
+ default:
+ if (c >= ' ' && c < '\u007f' && !Character.isLetter((char)c)
+ && !Character.isDigit((char)c)) {
+ error("Illegal character", p, description);
+ }
+ if (c >= Character.MIN_SUPPLEMENTARY_CODE_POINT) {
+ ++p;
+ }
+ break;
+ }
+ lastC = c;
+ ++p;
+ }
+ if (tempRuleList.size() == 0) {
+ error("No valid rules in description", p, description);
+ }
+ return tempRuleList;
+ }
+
+ /**
+ * This function performs variable-name substitutions. First it does syntax
+ * checking on the variable-name definition. If it's syntactically valid, it
+ * then goes through the remainder of the description and does a simple
+ * find-and-replace of the variable name with its text. (The variable text
+ * must be enclosed in either [] or () for this to work.)
+ */
+ protected String processSubstitution(String substitutionRule, String description,
+ int startPos) {
+ // isolate out the text on either side of the equals sign
+ String replace;
+ String replaceWith;
+ int equalPos = substitutionRule.indexOf('=');
+ replace = substitutionRule.substring(0, equalPos);
+ replaceWith = substitutionRule.substring(equalPos + 1);
+
+ // check to see whether the substitution name is something we've declared
+ // to be "special". For RuleBasedBreakIterator itself, this is "<ignore>".
+ // This function takes care of any extra processing that has to be done
+ // with "special" substitution names.
+ handleSpecialSubstitution(replace, replaceWith, startPos, description);
+
+ // perform various other syntax checks on the rule
+ if (replaceWith.length() == 0) {
+ error("Nothing on right-hand side of =", startPos, description);
+ }
+ if (replace.length() == 0) {
+ error("Nothing on left-hand side of =", startPos, description);
+ }
+ if (replace.length() == 2 && replace.charAt(0) != '\\') {
+ error("Illegal left-hand side for =", startPos, description);
+ }
+ if (replace.length() >= 3 && replace.charAt(0) != '<' &&
+ replace.codePointBefore(equalPos) != '>') {
+ error("Illegal left-hand side for =", startPos, description);
+ }
+ if (!(replaceWith.charAt(0) == '[' &&
+ replaceWith.charAt(replaceWith.length() - 1) == ']') &&
+ !(replaceWith.charAt(0) == '(' &&
+ replaceWith.charAt(replaceWith.length() - 1) == ')')) {
+ error("Illegal right-hand side for =", startPos, description);
+ }
+
+ // now go through the rest of the description (which hasn't been broken up
+ // into separate rules yet) and replace every occurrence of the
+ // substitution name with the substitution body
+ StringBuffer result = new StringBuffer();
+ result.append(description.substring(0, startPos));
+ int lastPos = startPos;
+ int pos = description.indexOf(replace, startPos);
+ while (pos != -1) {
+ result.append(description.substring(lastPos, pos));
+ result.append(replaceWith);
+ lastPos = pos + replace.length();
+ pos = description.indexOf(replace, lastPos);
+ }
+ result.append(description.substring(lastPos));
+ return result.toString();
+ }
+
+ /**
+ * This function defines a protocol for handling substitution names that
+ * are "special," i.e., that have some property beyond just being
+ * substitutions. At the RuleBasedBreakIterator level, we have one
+ * special substitution name, "<ignore>". Subclasses can override this
+ * function to add more. Any special processing that has to go on beyond
+ * that which is done by the normal substitution-processing code is done
+ * here.
+ */
+ protected void handleSpecialSubstitution(String replace, String replaceWith,
+ int startPos, String description) {
+ // if we get a definition for a substitution called "ignore", it defines
+ // the ignore characters for the iterator. Check to make sure the expression
+ // is a [] expression, and if it is, parse it and store the characters off
+ // to the side.
+ if (replace.equals("<ignore>")) {
+ if (replaceWith.charAt(0) == '(') {
+ error("Ignore group can't be enclosed in (", startPos, description);
+ }
+ ignoreChars = CharSet.parseString(replaceWith);
+ }
+ }
+
+ /**
+ * This function builds the character category table. On entry,
+ * tempRuleList is a vector of break rules that has had variable names substituted.
+ * On exit, the charCategoryTable data member has been initialized to hold the
+ * character category table, and tempRuleList's rules have been munged to contain
+ * character category numbers everywhere a literal character or a [] expression
+ * originally occurred.
+ */
+ protected void buildCharCategories(Vector tempRuleList) {
+ int bracketLevel = 0;
+ int p = 0;
+ int lineNum = 0;
+
+ // build hash table of every literal character or [] expression in the rule list
+ // and use CharSet.parseString() to derive a CharSet object representing the
+ // characters each refers to
+ expressions = new Hashtable();
+ while (lineNum < tempRuleList.size()) {
+ String line = (String)(tempRuleList.elementAt(lineNum));
+ p = 0;
+ while (p < line.length()) {
+ int c = line.codePointAt(p);
+ switch (c) {
+ // skip over all syntax characters except [
+ case '{': case '}': case '(': case ')': case '*': case '.':
+ case '/': case '|': case ';': case '?': case '!':
+ break;
+
+ // for [, find the matching ] (taking nested [] pairs into account)
+ // and add the whole expression to the expression list
+ case '[':
+ int q = p + 1;
+ ++bracketLevel;
+ while (q < line.length() && bracketLevel != 0) {
+ c = line.codePointAt(q);
+ switch (c) {
+ case '\\':
+ q++;
+ break;
+ case '[':
+ ++bracketLevel;
+ break;
+ case ']':
+ --bracketLevel;
+ break;
+ }
+ q = q + Character.charCount(c);
+ }
+ if (expressions.get(line.substring(p, q)) == null) {
+ expressions.put(line.substring(p, q), CharSet.parseString(line.substring(p, q)));
+ }
+ p = q - 1;
+ break;
+
+ // for \ sequences, just move to the next character and treat
+ // it as a single character
+ case '\\':
+ ++p;
+ c = line.codePointAt(p);
+ // DON'T break; fall through into "default" clause
+
+ // for an isolated single character, add it to the expression list
+ default:
+ expressions.put(line.substring(p, p + 1), CharSet.parseString(line.substring(p, p + 1)));
+ break;
+ }
+ p += Character.charCount(line.codePointAt(p));
+ }
+ ++lineNum;
+ }
+ // dump CharSet's internal expression cache
+ CharSet.releaseExpressionCache();
+
+ // create the temporary category table (which is a vector of CharSet objects)
+ categories = new Vector();
+ if (ignoreChars != null) {
+ categories.addElement(ignoreChars);
+ }
+ else {
+ categories.addElement(new CharSet());
+ }
+ ignoreChars = null;
+
+ // this is a hook to allow subclasses to add categories on their own
+ mungeExpressionList(expressions);
+
+ // Derive the character categories. Go through the existing character categories
+ // looking for overlap. Any time there's overlap, we create a new character
+ // category for the characters that overlapped and remove them from their original
+ // category. At the end, any characters that are left in the expression haven't
+ // been mentioned in any category, so another new category is created for them.
+ // For example, if the first expression is [abc], then a, b, and c will be placed
+ // into a single character category. If the next expression is [bcd], we will first
+ // remove b and c from their existing category (leaving a behind), create a new
+ // category for b and c, and then create another new category for d (which hadn't
+ // been mentioned in the previous expression).
+ // At no time should a character ever occur in more than one character category.
+
+ // for each expression in the expressions list, do...
+ Enumeration iter = expressions.elements();
+ while (iter.hasMoreElements()) {
+ // initialize the working char set to the chars in the current expression
+ CharSet e = (CharSet)iter.nextElement();
+
+ // for each category in the category list, do...
+ for (int j = categories.size() - 1; !e.empty() && j > 0; j--) {
+
+ // if there's overlap between the current working set of chars
+ // and the current category...
+ CharSet that = (CharSet)(categories.elementAt(j));
+ if (!that.intersection(e).empty()) {
+
+ // add a new category for the characters that were in the
+ // current category but not in the working char set
+ CharSet temp = that.difference(e);
+ if (!temp.empty()) {
+ categories.addElement(temp);
+ }
+
+ // remove those characters from the working char set and replace
+ // the current category with the characters that it did
+ // have in common with the current working char set
+ temp = e.intersection(that);
+ e = e.difference(that);
+ if (!temp.equals(that)) {
+ categories.setElementAt(temp, j);
+ }
+ }
+ }
+
+ // if there are still characters left in the working char set,
+ // add a new category containing them
+ if (!e.empty()) {
+ categories.addElement(e);
+ }
+ }
+
+ // we have the ignore characters stored in position 0. Make an extra pass through
+ // the character category list and remove anything from the ignore list that shows
+ // up in some other category
+ CharSet allChars = new CharSet();
+ for (int i = 1; i < categories.size(); i++) {
+ allChars = allChars.union((CharSet)(categories.elementAt(i)));
+ }
+ CharSet ignoreChars = (CharSet)(categories.elementAt(0));
+ ignoreChars = ignoreChars.difference(allChars);
+ categories.setElementAt(ignoreChars, 0);
+
+ // now that we've derived the character categories, go back through the expression
+ // list and replace each CharSet object with a String that represents the
+ // character categories that expression refers to. The String is encoded: each
+ // character is a character category number (plus 0x100 to avoid confusing them
+ // with syntax characters in the rule grammar)
+ iter = expressions.keys();
+ while (iter.hasMoreElements()) {
+ String key = (String)iter.nextElement();
+ CharSet cs = (CharSet)expressions.get(key);
+ StringBuffer cats = new StringBuffer();
+
+ // for each category...
+ for (int j = 0; j < categories.size(); j++) {
+
+ // if the current expression contains characters in that category...
+ CharSet temp = cs.intersection((CharSet)(categories.elementAt(j)));
+ if (!temp.empty()) {
+
+ // then add the encoded category number to the String for this
+ // expression
+ cats.append((char)(0x100 + j));
+ if (temp.equals(cs)) {
+ break;
+ }
+ }
+ }
+
+ // once we've finished building the encoded String for this expression,
+ // replace the CharSet object with it
+ expressions.put(key, cats.toString());
+ }
+
+ // and finally, we turn the temporary category table into a permanent category
+ // table, which is a CompactByteArray. (we skip category 0, which by definition
+ // refers to all characters not mentioned specifically in the rules)
+ charCategoryTable = new CompactByteArray((byte)0);
+ supplementaryCharCategoryTable = new SupplementaryCharacterData((byte)0);
+
+ // for each category...
+ for (int i = 0; i < categories.size(); i++) {
+ CharSet chars = (CharSet)(categories.elementAt(i));
+
+ // go through the character ranges in the category one by one...
+ Enumeration enum_ = chars.getChars();
+ while (enum_.hasMoreElements()) {
+ int[] range = (int[])(enum_.nextElement());
+
+ // and set the corresponding elements in the CompactArray accordingly
+ if (i != 0) {
+ if (range[0] < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
+ if (range[1] < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
+ charCategoryTable.setElementAt((char)range[0], (char)range[1], (byte)i);
+ } else {
+ charCategoryTable.setElementAt((char)range[0], (char)0xFFFF, (byte)i);
+ supplementaryCharCategoryTable.appendElement(Character.MIN_SUPPLEMENTARY_CODE_POINT, range[1], (byte)i);
+ }
+ } else {
+ supplementaryCharCategoryTable.appendElement(range[0], range[1], (byte)i);
+ }
+ }
+
+ // (category 0 is special-- it's the hiding place for the ignore
+ // characters, whose real category number in the CompactArray is
+ // -1 [this is because category 0 contains all characters not
+ // specifically mentioned anywhere in the rules] )
+ else {
+ if (range[0] < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
+ if (range[1] < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
+ charCategoryTable.setElementAt((char)range[0], (char)range[1], IGNORE);
+ } else {
+ charCategoryTable.setElementAt((char)range[0], (char)0xFFFF, IGNORE);
+ supplementaryCharCategoryTable.appendElement(Character.MIN_SUPPLEMENTARY_CODE_POINT, range[1], IGNORE);
+ }
+ } else {
+ supplementaryCharCategoryTable.appendElement(range[0], range[1], IGNORE);
+ }
+ }
+ }
+ }
+
+ // once we've populated the CompactArray, compact it
+ charCategoryTable.compact();
+
+ // And, complete the category table for supplementary characters
+ supplementaryCharCategoryTable.complete();
+
+ // initialize numCategories
+ numCategories = categories.size();
+ }
+
+ protected void mungeExpressionList(Hashtable expressions) {
+ // empty in the parent class. This function provides a hook for subclasses
+ // to mess with the character category table.
+ }
+
+ /**
+ * This is the function that builds the forward state table. Most of the real
+ * work is done in parseRule(), which is called once for each rule in the
+ * description.
+ */
+ private void buildStateTable(Vector tempRuleList) {
+ // initialize our temporary state table, and fill it with two states:
+ // state 0 is a dummy state that allows state 1 to be the starting state
+ // and 0 to represent "stop". State 1 is added here to seed things
+ // before we start parsing
+ tempStateTable = new Vector();
+ tempStateTable.addElement(new short[numCategories + 1]);
+ tempStateTable.addElement(new short[numCategories + 1]);
+
+ // call parseRule() for every rule in the rule list (except those which
+ // start with !, which are actually backwards-iteration rules)
+ for (int i = 0; i < tempRuleList.size(); i++) {
+ String rule = (String)tempRuleList.elementAt(i);
+ if (rule.charAt(0) != '!') {
+ parseRule(rule, true);
+ }
+ }
+
+ // finally, use finishBuildingStateTable() to minimize the number of
+ // states in the table and perform some other cleanup work
+ finishBuildingStateTable(true);
+ }
+
+ /**
+ * This is where most of the work really happens. This routine parses a single
+ * rule in the rule description, adding and modifying states in the state
+ * table according to the new expression. The state table is kept deterministic
+ * throughout the whole operation, although some ugly postprocessing is needed
+ * to handle the *? token.
+ */
+ private void parseRule(String rule, boolean forward) {
+ // algorithm notes:
+ // - The basic idea here is to read successive character-category groups
+ // from the input string. For each group, you create a state and point
+ // the appropriate entries in the previous state to it. This produces a
+ // straight line from the start state to the end state. The {}, *, and (|)
+ // idioms produce branches in this straight line. These branches (states
+ // that can transition to more than one other state) are called "decision
+ // points." A list of decision points is kept. This contains a list of
+ // all states that can transition to the next state to be created. For a
+ // straight line progression, the only thing in the decision-point list is
+ // the current state. But if there's a branch, the decision-point list
+ // will contain all of the beginning points of the branch when the next
+ // state to be created represents the end point of the branch. A stack is
+ // used to save decision point lists in the presence of nested parentheses
+ // and the like. For example, when a { is encountered, the current decision
+ // point list is saved on the stack and restored when the corresponding }
+ // is encountered. This way, after the } is read, the decision point list
+ // will contain both the state right before the } _and_ the state before
+ // the whole {} expression. Both of these states can transition to the next
+ // state after the {} expression.
+ // - one complication arises when we have to stamp a transition value into
+ // an array cell that already contains one. The updateStateTable() and
+ // mergeStates() functions handle this case. Their basic approach is to
+ // create a new state that combines the two states that conflict and point
+ // at it when necessary. This happens recursively, so if the merged states
+ // also conflict, they're resolved in the same way, and so on. There are
+ // a number of tests aimed at preventing infinite recursion.
+ // - another complication arises with repeating characters. It's somewhat
+ // ambiguous whether the user wants a greedy or non-greedy match in these cases.
+ // (e.g., whether "[a-z]*abc" means the SHORTEST sequence of letters ending in
+ // "abc" or the LONGEST sequence of letters ending in "abc". We've adopted
+ // the *? to mean "shortest" and * by itself to mean "longest". (You get the
+ // same result with both if there's no overlap between the repeating character
+ // group and the group immediately following it.) Handling the *? token is
+ // rather complicated and involves keeping track of whether a state needs to
+ // be merged (as described above) or merely overwritten when you update one of
+ // its cells, and copying the contents of a state that loops with a *? token
+ // into some of the states that follow it after the rest of the table-building
+ // process is complete ("backfilling").
+ // implementation notes:
+ // - This function assumes syntax checking has been performed on the input string
+ // prior to its being passed in here. It assumes that parentheses are
+ // balanced, all literal characters are enclosed in [] and turned into category
+ // numbers, that there are no illegal characters or character sequences, and so
+ // on. Violation of these invariants will lead to undefined behavior.
+ // - It'd probably be better to use linked lists rather than Vector and Stack
+ // to maintain the decision point list and stack. I went for simplicity in
+ // this initial implementation. If performance is critical enough, we can go
+ // back and fix this later.
+ // -There are a number of important limitations on the *? token. It does not work
+ // right when followed by a repeating character sequence (e.g., ".*?(abc)*")
+ // (although it does work right when followed by a single repeating character).
+ // It will not always work right when nested in parentheses or braces (although
+ // sometimes it will). It also will not work right if the group of repeating
+ // characters and the group of characters that follows overlap partially
+ // (e.g., "[a-g]*?[e-j]"). None of these capabilites was deemed necessary for
+ // describing breaking rules we know about, so we left them out for
+ // expeditiousness.
+ // - Rules such as "[a-z]*?abc;" will be treated the same as "[a-z]*?aa*bc;"--
+ // that is, if the string ends in "aaaabc", the break will go before the first
+ // "a" rather than the last one. Both of these are limitations in the design
+ // of RuleBasedBreakIterator and not limitations of the rule parser.
+
+ int p = 0;
+ int currentState = 1; // don't use state number 0; 0 means "stop"
+ int lastState = currentState;
+ String pendingChars = "";
+
+ decisionPointStack = new Stack();
+ decisionPointList = new Vector();
+ loopingStates = new Vector();
+ statesToBackfill = new Vector();
+
+ short[] state;
+ boolean sawEarlyBreak = false;
+
+ // if we're adding rules to the backward state table, mark the initial state
+ // as a looping state
+ if (!forward) {
+ loopingStates.addElement(new Integer(1));
+ }
+
+ // put the current state on the decision point list before we start
+ decisionPointList.addElement(new Integer(currentState)); // we want currentState to
+ // be 1 here...
+ currentState = tempStateTable.size() - 1; // but after that, we want it to be
+ // 1 less than the state number of the next state
+ while (p < rule.length()) {
+ int c = rule.codePointAt(p);
+ clearLoopingStates = false;
+
+ // this section handles literal characters, escaped characters (which are
+ // effectively literal characters too), the . token, and [] expressions
+ if (c == '['
+ || c == '\\'
+ || Character.isLetter(c)
+ || Character.isDigit(c)
+ || c < ' '
+ || c == '.'
+ || c >= '\u007f') {
+
+ // if we're not on a period, isolate the expression and look up
+ // the corresponding category list
+ if (c != '.') {
+ int q = p;
+
+ // if we're on a backslash, the expression is the character
+ // after the backslash
+ if (c == '\\') {
+ q = p + 2;
+ ++p;
+ }
+
+ // if we're on an opening bracket, scan to the closing bracket
+ // to isolate the expression
+ else if (c == '[') {
+ int bracketLevel = 1;
+
+ q += Character.charCount(rule.codePointAt(q));
+ while (bracketLevel > 0) {
+ c = rule.codePointAt(q);
+ if (c == '[') {
+ ++bracketLevel;
+ }
+ else if (c == ']') {
+ --bracketLevel;
+ }
+ else if (c == '\\') {
+ c = rule.codePointAt(++q);
+ }
+ q += Character.charCount(c);
+ }
+ }
+
+ // otherwise, the expression is just the character itself
+ else {
+ q = p + Character.charCount(c);
+ }
+
+ // look up the category list for the expression and store it
+ // in pendingChars
+ pendingChars = (String)expressions.get(rule.substring(p, q));
+
+ // advance the current position past the expression
+ p = q - Character.charCount(rule.codePointBefore(q));
+ }
+
+ // if the character we're on is a period, we end up down here
+ else {
+ int rowNum = ((Integer)decisionPointList.lastElement()).intValue();
+ state = (short[])tempStateTable.elementAt(rowNum);
+
+ // if the period is followed by an asterisk, then just set the current
+ // state to loop back on itself
+ if (p + 1 < rule.length() && rule.charAt(p + 1) == '*' && state[0] != 0) {
+ decisionPointList.addElement(new Integer(state[0]));
+ pendingChars = "";
+ ++p;
+ }
+
+ // otherwise, fabricate a category list ("pendingChars") with
+ // every category in it
+ else {
+ StringBuffer temp = new StringBuffer();
+ for (int i = 0; i < numCategories; i++)
+ temp.append((char)(i + 0x100));
+ pendingChars = temp.toString();
+ }
+ }
+
+ // we'll end up in here for all expressions except for .*, which is
+ // special-cased above
+ if (pendingChars.length() != 0) {
+
+ // if the expression is followed by an asterisk, then push a copy
+ // of the current desicion point list onto the stack (this is
+ // the same thing we do on an opening brace)
+ if (p + 1 < rule.length() && rule.charAt(p + 1) == '*') {
+ decisionPointStack.push(decisionPointList.clone());
+ }
+
+ // create a new state, add it to the list of states to backfill
+ // if we have looping states to worry about, set its "don't make
+ // me an accepting state" flag if we've seen a slash, and add
+ // it to the end of the state table
+ int newState = tempStateTable.size();
+ if (loopingStates.size() != 0) {
+ statesToBackfill.addElement(new Integer(newState));
+ }
+ state = new short[numCategories + 1];
+ if (sawEarlyBreak) {
+ state[numCategories] = DONT_LOOP_FLAG;
+ }
+ tempStateTable.addElement(state);
+
+ // update everybody in the decision point list to point to
+ // the new state (this also performs all the reconciliation
+ // needed to make the table deterministic), then clear the
+ // decision point list
+ updateStateTable(decisionPointList, pendingChars, (short)newState);
+ decisionPointList.removeAllElements();
+
+ // add all states created since the last literal character we've
+ // seen to the decision point list
+ lastState = currentState;
+ do {
+ ++currentState;
+ decisionPointList.addElement(new Integer(currentState));
+ } while (currentState + 1 < tempStateTable.size());
+ }
+ }
+
+ // a { marks the beginning of an optional run of characters. Push a
+ // copy of the current decision point list onto the stack. This saves
+ // it, preventing it from being affected by whatever's inside the parentheses.
+ // This decision point list is restored when a } is encountered.
+ else if (c == '{') {
+ decisionPointStack.push(decisionPointList.clone());
+ }
+
+ // a } marks the end of an optional run of characters. Pop the last decision
+ // point list off the stack and merge it with the current decision point list.
+ // a * denotes a repeating character or group (* after () is handled separately
+ // below). In addition to restoring the decision point list, modify the
+ // current state to point to itself on the appropriate character categories.
+ else if (c == '}' || c == '*') {
+ // when there's a *, update the current state to loop back on itself
+ // on the character categories that caused us to enter this state
+ if (c == '*') {
+ for (int i = lastState + 1; i < tempStateTable.size(); i++) {
+ Vector temp = new Vector();
+ temp.addElement(new Integer(i));
+ updateStateTable(temp, pendingChars, (short)(lastState + 1));
+ }
+ }
+
+ // pop the top element off the decision point stack and merge
+ // it with the current decision point list (this causes the divergent
+ // paths through the state table to come together again on the next
+ // new state)
+ Vector temp = (Vector)decisionPointStack.pop();
+ for (int i = 0; i < decisionPointList.size(); i++)
+ temp.addElement(decisionPointList.elementAt(i));
+ decisionPointList = temp;
+ }
+
+ // a ? after a * modifies the behavior of * in cases where there is overlap
+ // between the set of characters that repeat and the characters which follow.
+ // Without the ?, all states following the repeating state, up to a state which
+ // is reached by a character that doesn't overlap, will loop back into the
+ // repeating state. With the ?, the mark states following the *? DON'T loop
+ // back into the repeating state. Thus, "[a-z]*xyz" will match the longest
+ // sequence of letters that ends in "xyz," while "[a-z]*? will match the
+ // _shortest_ sequence of letters that ends in "xyz".
+ // We use extra bookkeeping to achieve this effect, since everything else works
+ // according to the "longest possible match" principle. The basic principle
+ // is that transitions out of a looping state are written in over the looping
+ // value instead of being reconciled, and that we copy the contents of the
+ // looping state into empty cells of all non-terminal states that follow the
+ // looping state.
+ else if (c == '?') {
+ setLoopingStates(decisionPointList, decisionPointList);
+ }
+
+ // a ( marks the beginning of a sequence of characters. Parentheses can either
+ // contain several alternative character sequences (i.e., "(ab|cd|ef)"), or
+ // they can contain a sequence of characters that can repeat (i.e., "(abc)*"). Thus,
+ // A () group can have multiple entry and exit points. To keep track of this,
+ // we reserve TWO spots on the decision-point stack. The top of the stack is
+ // the list of exit points, which becomes the current decision point list when
+ // the ) is reached. The next entry down is the decision point list at the
+ // beginning of the (), which becomes the current decision point list at every
+ // entry point.
+ // In addition to keeping track of the exit points and the active decision
+ // points before the ( (i.e., the places from which the () can be entered),
+ // we need to keep track of the entry points in case the expression loops
+ // (i.e., is followed by *). We do that by creating a dummy state in the
+ // state table and adding it to the decision point list (BEFORE it's duplicated
+ // on the stack). Nobody points to this state, so it'll get optimized out
+ // at the end. It exists only to hold the entry points in case the ()
+ // expression loops.
+ else if (c == '(') {
+
+ // add a new state to the state table to hold the entry points into
+ // the () expression
+ tempStateTable.addElement(new short[numCategories + 1]);
+
+ // we have to adjust lastState and currentState to account for the
+ // new dummy state
+ lastState = currentState;
+ ++currentState;
+
+ // add the current state to the decision point list (add it at the
+ // BEGINNING so we can find it later)
+ decisionPointList.insertElementAt(new Integer(currentState), 0);
+
+ // finally, push a copy of the current decision point list onto the
+ // stack (this keeps track of the active decision point list before
+ // the () expression), followed by an empty decision point list
+ // (this will hold the exit points)
+ decisionPointStack.push(decisionPointList.clone());
+ decisionPointStack.push(new Vector());
+ }
+
+ // a | separates alternative character sequences in a () expression. When
+ // a | is encountered, we add the current decision point list to the exit-point
+ // list, and restore the decision point list to its state prior to the (.
+ else if (c == '|') {
+
+ // pick out the top two decision point lists on the stack
+ Vector oneDown = (Vector)decisionPointStack.pop();
+ Vector twoDown = (Vector)decisionPointStack.peek();
+ decisionPointStack.push(oneDown);
+
+ // append the current decision point list to the list below it
+ // on the stack (the list of exit points), and restore the
+ // current decision point list to its state before the () expression
+ for (int i = 0; i < decisionPointList.size(); i++)
+ oneDown.addElement(decisionPointList.elementAt(i));
+ decisionPointList = (Vector)twoDown.clone();
+ }
+
+ // a ) marks the end of a sequence of characters. We do one of two things
+ // depending on whether the sequence repeats (i.e., whether the ) is followed
+ // by *): If the sequence doesn't repeat, then the exit-point list is merged
+ // with the current decision point list and the decision point list from before
+ // the () is thrown away. If the sequence does repeat, then we fish out the
+ // state we were in before the ( and copy all of its forward transitions
+ // (i.e., every transition added by the () expression) into every state in the
+ // exit-point list and the current decision point list. The current decision
+ // point list is then merged with both the exit-point list AND the saved version
+ // of the decision point list from before the (). Then we throw out the *.
+ else if (c == ')') {
+
+ // pull the exit point list off the stack, merge it with the current
+ // decision point list, and make the merged version the current
+ // decision point list
+ Vector exitPoints = (Vector)decisionPointStack.pop();
+ for (int i = 0; i < decisionPointList.size(); i++)
+ exitPoints.addElement(decisionPointList.elementAt(i));
+ decisionPointList = exitPoints;
+
+ // if the ) isn't followed by a *, then all we have to do is throw
+ // away the other list on the decision point stack, and we're done
+ if (p + 1 >= rule.length() || rule.charAt(p + 1) != '*') {
+ decisionPointStack.pop();
+ }
+
+ // but if the sequence repeats, we have a lot more work to do...
+ else {
+
+ // now exitPoints and decisionPointList have to point to equivalent
+ // vectors, but not the SAME vector
+ exitPoints = (Vector)decisionPointList.clone();
+
+ // pop the original decision point list off the stack
+ Vector temp = (Vector)decisionPointStack.pop();
+
+ // we squirreled away the row number of our entry point list
+ // at the beginning of the original decision point list. Fish
+ // that state number out and retrieve the entry point list
+ int tempStateNum = ((Integer)temp.firstElement()).intValue();
+ short[] tempState = (short[])tempStateTable.elementAt(tempStateNum);
+
+ // merge the original decision point list with the current
+ // decision point list
+ for (int i = 0; i < decisionPointList.size(); i++)
+ temp.addElement(decisionPointList.elementAt(i));
+ decisionPointList = temp;
+
+ // finally, copy every forward reference from the entry point
+ // list into every state in the new decision point list
+ for (int i = 0; i < tempState.length; i++) {
+ if (tempState[i] > tempStateNum) {
+ updateStateTable(exitPoints,
+ new Character((char)(i + 0x100)).toString(),
+ tempState[i]);
+ }
+ }
+
+ // update lastState and currentState, and throw away the *
+ lastState = currentState;
+ currentState = tempStateTable.size() - 1;
+ ++p;
+ }
+ }
+
+ // a / marks the position where the break is to go if the character sequence
+ // matches this rule. We update the flag word of every state on the decision
+ // point list to mark them as ending states, and take note of the fact that
+ // we've seen the slash
+ else if (c == '/') {
+ sawEarlyBreak = true;
+ for (int i = 0; i < decisionPointList.size(); i++) {
+ state = (short[])tempStateTable.elementAt(((Integer)decisionPointList.
+ elementAt(i)).intValue());
+ state[numCategories] |= LOOKAHEAD_STATE_FLAG;
+ }
+ }
+
+ // if we get here without executing any of the above clauses, we have a
+ // syntax error. However, for now we just ignore the offending character
+ // and move on
+
+ // clearLoopingStates is a signal back from updateStateTable() that we've
+ // transitioned to a state that won't loop back to the current looping
+ // state. (In other words, we've gotten to a point where we can no longer
+ // go back into a *? we saw earlier.) Clear out the list of looping states
+ // and backfill any states that need to be backfilled.
+ if (clearLoopingStates) {
+ setLoopingStates(null, decisionPointList);
+ }
+
+ // advance to the next character, now that we've processed the current
+ // character
+ p += Character.charCount(c);
+ }
+
+ // this takes care of backfilling any states that still need to be backfilled
+ setLoopingStates(null, decisionPointList);
+
+ // when we reach the end of the string, we do a postprocessing step to mark the
+ // end states. The decision point list contains every state that can transition
+ // to the end state-- that is, every state that is the last state in a sequence
+ // that matches the rule. All of these states are considered "mark states"
+ // or "accepting states"-- that is, states that cause the position returned from
+ // next() to be updated. A mark state represents a possible break position.
+ // This allows us to look ahead and remember how far the rule matched
+ // before following the new branch (see next() for more information).
+ // The temporary state table has an extra "flag column" at the end where this
+ // information is stored. We mark the end states by setting a flag in their
+ // flag column.
+ // Now if we saw the / in the rule, then everything after it is lookahead
+ // material and the break really goes where the slash is. In this case,
+ // we mark these states as BOTH accepting states and lookahead states. This
+ // signals that these states cause the break position to be updated to the
+ // position of the slash rather than the current break position.
+ for (int i = 0; i < decisionPointList.size(); i++) {
+ int rowNum = ((Integer)decisionPointList.elementAt(i)).intValue();
+ state = (short[])tempStateTable.elementAt(rowNum);
+ state[numCategories] |= END_STATE_FLAG;
+ if (sawEarlyBreak) {
+ state[numCategories] |= LOOKAHEAD_STATE_FLAG;
+ }
+ }
+ }
+
+
+ /**
+ * Update entries in the state table, and merge states when necessary to keep
+ * the table deterministic.
+ * @param rows The list of rows that need updating (the decision point list)
+ * @param pendingChars A character category list, encoded in a String. This is the
+ * list of the columns that need updating.
+ * @param newValue Update the cells specfied above to contain this value
+ */
+ private void updateStateTable(Vector rows,
+ String pendingChars,
+ short newValue) {
+ // create a dummy state that has the specified row number (newValue) in
+ // the cells that need to be updated (those specified by pendingChars)
+ // and 0 in the other cells
+ short[] newValues = new short[numCategories + 1];
+ for (int i = 0; i < pendingChars.length(); i++)
+ newValues[(int)(pendingChars.charAt(i)) - 0x100] = newValue;
+
+ // go through the list of rows to update, and update them by calling
+ // mergeStates() to merge them the the dummy state we created
+ for (int i = 0; i < rows.size(); i++) {
+ mergeStates(((Integer)rows.elementAt(i)).intValue(), newValues, rows);
+ }
+ }
+
+ /**
+ * The real work of making the state table deterministic happens here. This function
+ * merges a state in the state table (specified by rowNum) with a state that is
+ * passed in (newValues). The basic process is to copy the nonzero cells in newStates
+ * into the state in the state table (we'll call that oldValues). If there's a
+ * collision (i.e., if the same cell has a nonzero value in both states, and it's
+ * not the SAME value), then we have to reconcile the collision. We do this by
+ * creating a new state, adding it to the end of the state table, and using this
+ * function recursively to merge the original two states into a single, combined
+ * state. This process may happen recursively (i.e., each successive level may
+ * involve collisions). To prevent infinite recursion, we keep a log of merge
+ * operations. Any time we're merging two states we've merged before, we can just
+ * supply the row number for the result of that merge operation rather than creating
+ * a new state just like it.
+ * @param rowNum The row number in the state table of the state to be updated
+ * @param newValues The state to merge it with.
+ * @param rowsBeingUpdated A copy of the list of rows passed to updateStateTable()
+ * (itself a copy of the decision point list from parseRule()). Newly-created
+ * states get added to the decision point list if their "parents" were on it.
+ */
+ private void mergeStates(int rowNum,
+ short[] newValues,
+ Vector rowsBeingUpdated) {
+ short[] oldValues = (short[])(tempStateTable.elementAt(rowNum));
+ boolean isLoopingState = loopingStates.contains(new Integer(rowNum));
+
+ // for each of the cells in the rows we're reconciling, do...
+ for (int i = 0; i < oldValues.length; i++) {
+
+ // if they contain the same value, we don't have to do anything
+ if (oldValues[i] == newValues[i]) {
+ continue;
+ }
+
+ // if oldValues is a looping state and the state the current cell points to
+ // is too, then we can just stomp over the current value of that cell (and
+ // set the clear-looping-states flag if necessary)
+ else if (isLoopingState && loopingStates.contains(new Integer(oldValues[i]))) {
+ if (newValues[i] != 0) {
+ if (oldValues[i] == 0) {
+ clearLoopingStates = true;
+ }
+ oldValues[i] = newValues[i];
+ }
+ }
+
+ // if the current cell in oldValues is 0, copy in the corresponding value
+ // from newValues
+ else if (oldValues[i] == 0) {
+ oldValues[i] = newValues[i];
+ }
+
+ // the last column of each row is the flag column. Take care to merge the
+ // flag words correctly
+ else if (i == numCategories) {
+ oldValues[i] = (short)((newValues[i] & ALL_FLAGS) | oldValues[i]);
+ }
+
+ // if both newValues and oldValues have a nonzero value in the current
+ // cell, and it isn't the same value both places...
+ else if (oldValues[i] != 0 && newValues[i] != 0) {
+
+ // look up this pair of cell values in the merge list. If it's
+ // found, update the cell in oldValues to point to the merged state
+ int combinedRowNum = searchMergeList(oldValues[i], newValues[i]);
+ if (combinedRowNum != 0) {
+ oldValues[i] = (short)combinedRowNum;
+ }
+
+ // otherwise, we have to reconcile them...
+ else {
+ // copy our row numbers into variables to make things easier
+ int oldRowNum = oldValues[i];
+ int newRowNum = newValues[i];
+ combinedRowNum = tempStateTable.size();
+
+ // add this pair of row numbers to the merge list (create it first
+ // if we haven't created the merge list yet)
+ if (mergeList == null) {
+ mergeList = new Vector();
+ }
+ mergeList.addElement(new int[] { oldRowNum, newRowNum, combinedRowNum });
+
+ // create a new row to represent the merged state, and copy the
+ // contents of oldRow into it, then add it to the end of the
+ // state table and update the original row (oldValues) to point
+ // to the new, merged, state
+ short[] newRow = new short[numCategories + 1];
+ short[] oldRow = (short[])(tempStateTable.elementAt(oldRowNum));
+ System.arraycopy(oldRow, 0, newRow, 0, numCategories + 1);
+ tempStateTable.addElement(newRow);
+ oldValues[i] = (short)combinedRowNum;
+
+ // if the decision point list contains either of the parent rows,
+ // update it to include the new row as well
+ if ((decisionPointList.contains(new Integer(oldRowNum))
+ || decisionPointList.contains(new Integer(newRowNum)))
+ && !decisionPointList.contains(new Integer(combinedRowNum))
+ ) {
+ decisionPointList.addElement(new Integer(combinedRowNum));
+ }
+
+ // do the same thing with the list of rows being updated
+ if ((rowsBeingUpdated.contains(new Integer(oldRowNum))
+ || rowsBeingUpdated.contains(new Integer(newRowNum)))
+ && !rowsBeingUpdated.contains(new Integer(combinedRowNum))
+ ) {
+ decisionPointList.addElement(new Integer(combinedRowNum));
+ }
+ // now (groan) do the same thing for all the entries on the
+ // decision point stack
+ for (int k = 0; k < decisionPointStack.size(); k++) {
+ Vector dpl = (Vector)decisionPointStack.elementAt(k);
+ if ((dpl.contains(new Integer(oldRowNum))
+ || dpl.contains(new Integer(newRowNum)))
+ && !dpl.contains(new Integer(combinedRowNum))
+ ) {
+ dpl.addElement(new Integer(combinedRowNum));
+ }
+ }
+
+ // FINALLY (puff puff puff), call mergeStates() recursively to copy
+ // the row referred to by newValues into the new row and resolve any
+ // conflicts that come up at that level
+ mergeStates(combinedRowNum, (short[])(tempStateTable.elementAt(
+ newValues[i])), rowsBeingUpdated);
+ }
+ }
+ }
+ return;
+ }
+
+ /**
+ * The merge list is a list of pairs of rows that have been merged somewhere in
+ * the process of building this state table, along with the row number of the
+ * row containing the merged state. This function looks up a pair of row numbers
+ * and returns the row number of the row they combine into. (It returns 0 if
+ * this pair of rows isn't in the merge list.)
+ */
+ private int searchMergeList(int a, int b) {
+ // if there is no merge list, there obviously isn't anything in it
+ if (mergeList == null) {
+ return 0;
+ }
+
+ // otherwise, for each element in the merge list...
+ else {
+ int[] entry;
+ for (int i = 0; i < mergeList.size(); i++) {
+ entry = (int[])(mergeList.elementAt(i));
+
+ // we have a hit if the two row numbers match the two row numbers
+ // in the beginning of the entry (the two that combine), in either
+ // order
+ if ((entry[0] == a && entry[1] == b) || (entry[0] == b && entry[1] == a)) {
+ return entry[2];
+ }
+
+ // we also have a hit if one of the two row numbers matches the marged
+ // row number and the other one matches one of the original row numbers
+ if ((entry[2] == a && (entry[0] == b || entry[1] == b))) {
+ return entry[2];
+ }
+ if ((entry[2] == b && (entry[0] == a || entry[1] == a))) {
+ return entry[2];
+ }
+ }
+ return 0;
+ }
+ }
+
+ /**
+ * This function is used to update the list of current loooping states (i.e.,
+ * states that are controlled by a *? construct). It backfills values from
+ * the looping states into unpopulated cells of the states that are currently
+ * marked for backfilling, and then updates the list of looping states to be
+ * the new list
+ * @param newLoopingStates The list of new looping states
+ * @param endStates The list of states to treat as end states (states that
+ * can exit the loop).
+ */
+ private void setLoopingStates(Vector newLoopingStates, Vector endStates) {
+
+ // if the current list of looping states isn't empty, we have to backfill
+ // values from the looping states into the states that are waiting to be
+ // backfilled
+ if (!loopingStates.isEmpty()) {
+ int loopingState = ((Integer)loopingStates.lastElement()).intValue();
+ int rowNum;
+
+ // don't backfill into an end state OR any state reachable from an end state
+ // (since the search for reachable states is recursive, it's split out into
+ // a separate function, eliminateBackfillStates(), below)
+ for (int i = 0; i < endStates.size(); i++) {
+ eliminateBackfillStates(((Integer)endStates.elementAt(i)).intValue());
+ }
+
+ // we DON'T actually backfill the states that need to be backfilled here.
+ // Instead, we MARK them for backfilling. The reason for this is that if
+ // there are multiple rules in the state-table description, the looping
+ // states may have some of their values changed by a succeeding rule, and
+ // this wouldn't be reflected in the backfilled states. We mark a state
+ // for backfilling by putting the row number of the state to copy from
+ // into the flag cell at the end of the row
+ for (int i = 0; i < statesToBackfill.size(); i++) {
+ rowNum = ((Integer)statesToBackfill.elementAt(i)).intValue();
+ short[] state = (short[])tempStateTable.elementAt(rowNum);
+ state[numCategories] =
+ (short)((state[numCategories] & ALL_FLAGS) | loopingState);
+ }
+ statesToBackfill.removeAllElements();
+ loopingStates.removeAllElements();
+ }
+
+ if (newLoopingStates != null) {
+ loopingStates = (Vector)newLoopingStates.clone();
+ }
+ }
+
+ /**
+ * This removes "ending states" and states reachable from them from the
+ * list of states to backfill.
+ * @param The row number of the state to remove from the backfill list
+ */
+ private void eliminateBackfillStates(int baseState) {
+
+ // don't do anything unless this state is actually in the backfill list...
+ if (statesToBackfill.contains(new Integer(baseState))) {
+
+ // if it is, take it out
+ statesToBackfill.removeElement(new Integer(baseState));
+
+ // then go through and recursively call this function for every
+ // state that the base state points to
+ short[] state = (short[])tempStateTable.elementAt(baseState);
+ for (int i = 0; i < numCategories; i++) {
+ if (state[i] != 0) {
+ eliminateBackfillStates(state[i]);
+ }
+ }
+ }
+ }
+
+ /**
+ * This function completes the backfilling process by actually doing the
+ * backfilling on the states that are marked for it
+ */
+ private void backfillLoopingStates() {
+ short[] state;
+ short[] loopingState = null;
+ int loopingStateRowNum = 0;
+ int fromState;
+
+ // for each state in the state table...
+ for (int i = 0; i < tempStateTable.size(); i++) {
+ state = (short[])tempStateTable.elementAt(i);
+
+ // check the state's flag word to see if it's marked for backfilling
+ // (it's marked for backfilling if any bits other than the two high-order
+ // bits are set-- if they are, then the flag word, minus the two high bits,
+ // is the row number to copy from)
+ fromState = state[numCategories] & ~ALL_FLAGS;
+ if (fromState > 0) {
+
+ // load up the state to copy from (if we haven't already)
+ if (fromState != loopingStateRowNum) {
+ loopingStateRowNum = fromState;
+ loopingState = (short[])tempStateTable.elementAt(loopingStateRowNum);
+ }
+
+ // clear out the backfill part of the flag word
+ state[numCategories] &= ALL_FLAGS;
+
+ // then fill all zero cells in the current state with values
+ // from the corresponding cells of the fromState
+ for (int j = 0; j < state.length; j++) {
+ if (state[j] == 0) {
+ state[j] = loopingState[j];
+ }
+ else if (state[j] == DONT_LOOP_FLAG) {
+ state[j] = 0;
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * This function completes the state-table-building process by doing several
+ * postprocessing steps and copying everything into its final resting place
+ * in the iterator itself
+ * @param forward True if we're working on the forward state table
+ */
+ private void finishBuildingStateTable(boolean forward) {
+ // start by backfilling the looping states
+ backfillLoopingStates();
+
+ int[] rowNumMap = new int[tempStateTable.size()];
+ Stack rowsToFollow = new Stack();
+ rowsToFollow.push(new Integer(1));
+ rowNumMap[1] = 1;
+
+ // determine which states are no longer reachable from the start state
+ // (the reachable states will have their row numbers in the row number
+ // map, and the nonreachable states will have zero in the row number map)
+ while (rowsToFollow.size() != 0) {
+ int rowNum = ((Integer)rowsToFollow.pop()).intValue();
+ short[] row = (short[])(tempStateTable.elementAt(rowNum));
+
+ for (int i = 0; i < numCategories; i++) {
+ if (row[i] != 0) {
+ if (rowNumMap[row[i]] == 0) {
+ rowNumMap[row[i]] = row[i];
+ rowsToFollow.push(new Integer(row[i]));
+ }
+ }
+ }
+ }
+
+ boolean madeChange;
+ int newRowNum;
+
+ // algorithm for minimizing the number of states in the table adapted from
+ // Aho & Ullman, "Principles of Compiler Design"
+ // The basic idea here is to organize the states into classes. When we're done,
+ // all states in the same class can be considered identical and all but one eliminated.
+
+ // initially assign states to classes based on the number of populated cells they
+ // contain (the class number is the number of populated cells)
+ int[] stateClasses = new int[tempStateTable.size()];
+ int nextClass = numCategories + 1;
+ short[] state1, state2;
+ for (int i = 1; i < stateClasses.length; i++) {
+ if (rowNumMap[i] == 0) {
+ continue;
+ }
+ state1 = (short[])tempStateTable.elementAt(i);
+ for (int j = 0; j < numCategories; j++) {
+ if (state1[j] != 0) {
+ ++stateClasses[i];
+ }
+ }
+ if (stateClasses[i] == 0) {
+ stateClasses[i] = nextClass;
+ }
+ }
+ ++nextClass;
+
+ // then, for each class, elect the first member of that class as that class's
+ // "representative". For each member of the class, compare it to the "representative."
+ // If there's a column position where the state being tested transitions to a
+ // state in a DIFFERENT class from the class where the "representative" transitions,
+ // then move the state into a new class. Repeat this process until no new classes
+ // are created.
+ int currentClass;
+ int lastClass;
+ boolean split;
+
+ do {
+ currentClass = 1;
+ lastClass = nextClass;
+ while (currentClass < nextClass) {
+ split = false;
+ state1 = state2 = null;
+ for (int i = 0; i < stateClasses.length; i++) {
+ if (stateClasses[i] == currentClass) {
+ if (state1 == null) {
+ state1 = (short[])tempStateTable.elementAt(i);
+ }
+ else {
+ state2 = (short[])tempStateTable.elementAt(i);
+ for (int j = 0; j < state2.length; j++) {
+ if ((j == numCategories && state1[j] != state2[j] && forward)
+ || (j != numCategories && stateClasses[state1[j]]
+ != stateClasses[state2[j]])) {
+ stateClasses[i] = nextClass;
+ split = true;
+ break;
+ }
+ }
+ }
+ }
+ }
+ if (split) {
+ ++nextClass;
+ }
+ ++currentClass;
+ }
+ } while (lastClass != nextClass);
+
+ // at this point, all of the states in a class except the first one (the
+ //"representative") can be eliminated, so update the row-number map accordingly
+ int[] representatives = new int[nextClass];
+ for (int i = 1; i < stateClasses.length; i++)
+ if (representatives[stateClasses[i]] == 0) {
+ representatives[stateClasses[i]] = i;
+ }
+ else {
+ rowNumMap[i] = representatives[stateClasses[i]];
+ }
+
+ // renumber all remaining rows...
+ // first drop all that are either unreferenced or not a class representative
+ for (int i = 1; i < rowNumMap.length; i++) {
+ if (rowNumMap[i] != i) {
+ tempStateTable.setElementAt(null, i);
+ }
+ }
+
+ // then calculate everybody's new row number and update the row
+ // number map appropriately (the first pass updates the row numbers
+ // of all the class representatives [the rows we're keeping], and the
+ // second pass updates the cross references for all the rows that
+ // are being deleted)
+ newRowNum = 1;
+ for (int i = 1; i < rowNumMap.length; i++) {
+ if (tempStateTable.elementAt(i) != null) {
+ rowNumMap[i] = newRowNum++;
+ }
+ }
+ for (int i = 1; i < rowNumMap.length; i++) {
+ if (tempStateTable.elementAt(i) == null) {
+ rowNumMap[i] = rowNumMap[rowNumMap[i]];
+ }
+ }
+
+ // allocate the permanent state table, and copy the remaining rows into it
+ // (adjusting all the cell values, of course)
+
+ // this section does that for the forward state table
+ if (forward) {
+ endStates = new boolean[newRowNum];
+ lookaheadStates = new boolean[newRowNum];
+ stateTable = new short[newRowNum * numCategories];
+ int p = 0;
+ int p2 = 0;
+ for (int i = 0; i < tempStateTable.size(); i++) {
+ short[] row = (short[])(tempStateTable.elementAt(i));
+ if (row == null) {
+ continue;
+ }
+ for (int j = 0; j < numCategories; j++) {
+ stateTable[p] = (short)(rowNumMap[row[j]]);
+ ++p;
+ }
+ endStates[p2] = ((row[numCategories] & END_STATE_FLAG) != 0);
+ lookaheadStates[p2] = ((row[numCategories] & LOOKAHEAD_STATE_FLAG) != 0);
+ ++p2;
+ }
+ }
+
+ // and this section does it for the backward state table
+ else {
+ backwardsStateTable = new short[newRowNum * numCategories];
+ int p = 0;
+ for (int i = 0; i < tempStateTable.size(); i++) {
+ short[] row = (short[])(tempStateTable.elementAt(i));
+ if (row == null) {
+ continue;
+ }
+ for (int j = 0; j < numCategories; j++) {
+ backwardsStateTable[p] = (short)(rowNumMap[row[j]]);
+ ++p;
+ }
+ }
+ }
+ }
+
+ /**
+ * This function builds the backward state table from the forward state
+ * table and any additional rules (identified by the ! on the front)
+ * supplied in the description
+ */
+ private void buildBackwardsStateTable(Vector tempRuleList) {
+
+ // create the temporary state table and seed it with two rows (row 0
+ // isn't used for anything, and we have to create row 1 (the initial
+ // state) before we can do anything else
+ tempStateTable = new Vector();
+ tempStateTable.addElement(new short[numCategories + 1]);
+ tempStateTable.addElement(new short[numCategories + 1]);
+
+ // although the backwards state table is built automatically from the forward
+ // state table, there are some situations (the default sentence-break rules,
+ // for example) where this doesn't yield enough stop states, causing a dramatic
+ // drop in performance. To help with these cases, the user may supply
+ // supplemental rules that are added to the backward state table. These have
+ // the same syntax as the normal break rules, but begin with '!' to distinguish
+ // them from normal break rules
+ for (int i = 0; i < tempRuleList.size(); i++) {
+ String rule = (String)tempRuleList.elementAt(i);
+ if (rule.charAt(0) == '!') {
+ parseRule(rule.substring(1), false);
+ }
+ }
+ backfillLoopingStates();
+
+ // Backwards iteration is qualitatively different from forwards iteration.
+ // This is because backwards iteration has to be made to operate from no context
+ // at all-- the user should be able to ask BreakIterator for the break position
+ // immediately on either side of some arbitrary offset in the text. The
+ // forward iteration table doesn't let us do that-- it assumes complete
+ // information on the context, which means starting from the beginning of the
+ // document.
+ // The way we do backward and random-access iteration is to back up from the
+ // current (or user-specified) position until we see something we're sure is
+ // a break position (it may not be the last break position immediately
+ // preceding our starting point, however). Then we roll forward from there to
+ // locate the actual break position we're after.
+ // This means that the backwards state table doesn't have to identify every
+ // break position, allowing the building algorithm to be much simpler. Here,
+ // we use a "pairs" approach, scanning the forward-iteration state table for
+ // pairs of character categories we ALWAYS break between, and building a state
+ // table from that information. No context is required-- all this state table
+ // looks at is a pair of adjacent characters.
+
+ // It's possible that the user has supplied supplementary rules (see above).
+ // This has to be done first to keep parseRule() and friends from becoming
+ // EVEN MORE complicated. The automatically-generated states are appended
+ // onto the end of the state table, and then the two sets of rules are
+ // stitched together at the end. Take note of the row number of the
+ // first row of the auromatically-generated part.
+ int backTableOffset = tempStateTable.size();
+ if (backTableOffset > 2) {
+ ++backTableOffset;
+ }
+
+ // the automatically-generated part of the table models a two-dimensional
+ // array where the two dimensions represent the two characters we're currently
+ // looking at. To model this as a state table, we actually need one additional
+ // row to represent the initial state. It gets populated with the row numbers
+ // of the other rows (in order).
+ for (int i = 0; i < numCategories + 1; i++)
+ tempStateTable.addElement(new short[numCategories + 1]);
+
+ short[] state = (short[])tempStateTable.elementAt(backTableOffset - 1);
+ for (int i = 0; i < numCategories; i++)
+ state[i] = (short)(i + backTableOffset);
+
+ // scavenge the forward state table for pairs of character categories
+ // that always have a break between them. The algorithm is as follows:
+ // Look down each column in the state table. For each nonzero cell in
+ // that column, look up the row it points to. For each nonzero cell in
+ // that row, populate a cell in the backwards state table: the row number
+ // of that cell is the number of the column we were scanning (plus the
+ // offset that locates this sub-table), and the column number of that cell
+ // is the column number of the nonzero cell we just found. This cell is
+ // populated with its own column number (adjusted according to the actual
+ // location of the sub-table). This process will produce a state table
+ // whose behavior is the same as looking up successive pairs of characters
+ // in an array of Booleans to determine whether there is a break.
+ int numRows = stateTable.length / numCategories;
+ for (int column = 0; column < numCategories; column++) {
+ for (int row = 0; row < numRows; row++) {
+ int nextRow = lookupState(row, column);
+ if (nextRow != 0) {
+ for (int nextColumn = 0; nextColumn < numCategories; nextColumn++) {
+ int cellValue = lookupState(nextRow, nextColumn);
+ if (cellValue != 0) {
+ state = (short[])tempStateTable.elementAt(nextColumn +
+ backTableOffset);
+ state[column] = (short)(column + backTableOffset);
+ }
+ }
+ }
+ }
+ }
+
+ // if the user specified some backward-iteration rules with the ! token,
+ // we have to merge the resulting state table with the auto-generated one
+ // above. First copy the populated cells from row 1 over the populated
+ // cells in the auto-generated table. Then copy values from row 1 of the
+ // auto-generated table into all of the the unpopulated cells of the
+ // rule-based table.
+ if (backTableOffset > 1) {
+
+ // for every row in the auto-generated sub-table, if a cell is
+ // populated that is also populated in row 1 of the rule-based
+ // sub-table, copy the value from row 1 over the value in the
+ // auto-generated sub-table
+ state = (short[])tempStateTable.elementAt(1);
+ for (int i = backTableOffset - 1; i < tempStateTable.size(); i++) {
+ short[] state2 = (short[])tempStateTable.elementAt(i);
+ for (int j = 0; j < numCategories; j++) {
+ if (state[j] != 0 && state2[j] != 0) {
+ state2[j] = state[j];
+ }
+ }
+ }
+
+ // now, for every row in the rule-based sub-table that is not
+ // an end state, fill in all unpopulated cells with the values
+ // of the corresponding cells in the first row of the auto-
+ // generated sub-table.
+ state = (short[])tempStateTable.elementAt(backTableOffset - 1);
+ for (int i = 1; i < backTableOffset - 1; i++) {
+ short[] state2 = (short[])tempStateTable.elementAt(i);
+ if ((state2[numCategories] & END_STATE_FLAG) == 0) {
+ for (int j = 0; j < numCategories; j++) {
+ if (state2[j] == 0) {
+ state2[j] = state[j];
+ }
+ }
+ }
+ }
+ }
+
+ // finally, clean everything up and copy it into the actual BreakIterator
+ // by calling finishBuildingStateTable()
+ finishBuildingStateTable(false);
+ }
+
+ /**
+ * Given a current state and a character category, looks up the
+ * next state to transition to in the state table.
+ */
+ protected int lookupState(int state, int category) {
+ return stateTable[state * numCategories + category];
+ }
+
+ /**
+ * Throws an IllegalArgumentException representing a syntax error in the rule
+ * description. The exception's message contains some debugging information.
+ * @param message A message describing the problem
+ * @param position The position in the description where the problem was
+ * discovered
+ * @param context The string containing the error
+ */
+ protected void error(String message, int position, String context) {
+ throw new IllegalArgumentException("Parse error at position (" + position + "): " + message + "\n" +
+ context.substring(0, position) + " -here- " + context.substring(position));
+ }
+
+ void makeFile(String filename) {
+ writeTables(filename);
+ }
+
+ /**
+ * Magic number for the BreakIterator data file format.
+ */
+ private static final byte[] LABEL = {
+ (byte)'B', (byte)'I', (byte)'d', (byte)'a', (byte)'t', (byte)'a',
+ (byte)'\0'
+ };
+
+ /**
+ * Version number of the dictionary that was read in.
+ */
+ private static final byte[] supportedVersion = { (byte)1 };
+
+ /**
+ * Header size in byte count
+ */
+ private static final int HEADER_LENGTH = 36;
+
+ /**
+ * Array length of indices for BMP characters
+ */
+ private static final int BMP_INDICES_LENGTH = 512;
+
+ /**
+ * Read datafile. The datafile's format is as follows:
+ * <pre>
+ * BreakIteratorData {
+ * u1 magic[7];
+ * u1 version;
+ * u4 totalDataSize;
+ * header_info header;
+ * body value;
+ * }
+ * </pre>
+ * <code>totalDataSize</code> is the summation of the size of
+ * <code>header_info</code> and <code>body</code> in byte count.
+ * <p>
+ * In <code>header</code>, each field except for checksum implies the
+ * length of each field. Since <code>BMPdataLength</code> is a fixed-length
+ * data(512 entries), its length isn't included in <code>header</code>.
+ * <code>checksum</code> is a CRC32 value of all in <code>body</code>.
+ * <pre>
+ * header_info {
+ * u4 stateTableLength;
+ * u4 backwardsStateTableLength;
+ * u4 endStatesLength;
+ * u4 lookaheadStatesLength;
+ * u4 BMPdataLength;
+ * u4 nonBMPdataLength;
+ * u4 additionalDataLength;
+ * u8 checksum;
+ * }
+ * </pre>
+ * <p>
+ *
+ * Finally, <code>BMPindices</code> and <code>BMPdata</code> are set to
+ * <code>charCategoryTable</code>. <code>nonBMPdata</code> is set to
+ * <code>supplementaryCharCategoryTable</code>.
+ * <pre>
+ * body {
+ * u2 stateTable[stateTableLength];
+ * u2 backwardsStateTable[backwardsStateTableLength];
+ * u1 endStates[endStatesLength];
+ * u1 lookaheadStates[lookaheadStatesLength];
+ * u2 BMPindices[512];
+ * u1 BMPdata[BMPdataLength];
+ * u4 nonBMPdata[numNonBMPdataLength];
+ * u1 additionalData[additionalDataLength];
+ * }
+ * </pre>
+ */
+ protected void writeTables(String datafile) {
+ final String filename;
+ final String outputDir;
+ String tmpbuf = GenerateBreakIteratorData.getOutputDirectory();
+
+ if (tmpbuf.equals("")) {
+ filename = datafile;
+ outputDir = "";
+ } else {
+ char sep = File.separatorChar;
+ if (sep == '/') {
+ outputDir = tmpbuf;
+ } else if (sep == '\\') {
+ outputDir = tmpbuf.replaceAll("/", "\\\\");
+ } else {
+ outputDir = tmpbuf.replaceAll("/", String.valueOf(sep));
+ }
+
+ filename = outputDir + sep + datafile;
+ }
+
+ try {
+ if (!outputDir.equals("")) {
+ new File(outputDir).mkdirs();
+ }
+ BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(filename));
+
+ byte[] BMPdata = charCategoryTable.getStringArray();
+ short[] BMPindices = charCategoryTable.getIndexArray();
+ int[] nonBMPdata = supplementaryCharCategoryTable.getArray();
+
+ if (BMPdata.length <= 0) {
+ throw new InternalError("Wrong BMP data length(" + BMPdata.length + ")");
+ }
+ if (BMPindices.length != BMP_INDICES_LENGTH) {
+ throw new InternalError("Wrong BMP indices length(" + BMPindices.length + ")");
+ }
+ if (nonBMPdata.length <= 0) {
+ throw new InternalError("Wrong non-BMP data length(" + nonBMPdata.length + ")");
+ }
+
+ int len;
+
+ /* Compute checksum */
+ CRC32 crc32 = new CRC32();
+ len = stateTable.length;
+ for (int i = 0; i < len; i++) {
+ crc32.update(stateTable[i]);
+ }
+ len = backwardsStateTable.length;
+ for (int i = 0; i < len; i++) {
+ crc32.update(backwardsStateTable[i]);
+ }
+ crc32.update(toByteArray(endStates));
+ crc32.update(toByteArray(lookaheadStates));
+ for (int i = 0; i < BMP_INDICES_LENGTH; i++) {
+ crc32.update(BMPindices[i]);
+ }
+ crc32.update(BMPdata);
+ len = nonBMPdata.length;
+ for (int i = 0; i < len; i++) {
+ crc32.update(nonBMPdata[i]);
+ }
+ if (additionalData != null) {
+ len = additionalData.length;
+ for (int i = 0; i < len; i++) {
+ crc32.update(additionalData[i]);
+ }
+ }
+
+ /* First, write magic, version, and totalDataSize. */
+ len = HEADER_LENGTH +
+ (stateTable.length + backwardsStateTable.length) * 2 +
+ endStates.length + lookaheadStates.length + 1024 +
+ BMPdata.length + nonBMPdata.length * 4 +
+ ((additionalData == null) ? 0 : additionalData.length);
+ out.write(LABEL);
+ out.write(supportedVersion);
+ out.write(toByteArray(len));
+
+ /* Write header_info. */
+ out.write(toByteArray(stateTable.length));
+ out.write(toByteArray(backwardsStateTable.length));
+ out.write(toByteArray(endStates.length));
+ out.write(toByteArray(lookaheadStates.length));
+ out.write(toByteArray(BMPdata.length));
+ out.write(toByteArray(nonBMPdata.length));
+ if (additionalData == null) {
+ out.write(toByteArray(0));
+ } else {
+ out.write(toByteArray(additionalData.length));
+ }
+ out.write(toByteArray(crc32.getValue()));
+
+ /* Write stateTable[numCategories * numRows] */
+ len = stateTable.length;
+ for (int i = 0; i < len; i++) {
+ out.write(toByteArray(stateTable[i]));
+ }
+
+ /* Write backwardsStateTable[numCategories * numRows] */
+ len = backwardsStateTable.length;
+ for (int i = 0; i < len; i++) {
+ out.write(toByteArray(backwardsStateTable[i]));
+ }
+
+ /* Write endStates[numRows] */
+ out.write(toByteArray(endStates));
+
+ /* Write lookaheadStates[numRows] */
+ out.write(toByteArray(lookaheadStates));
+
+ for (int i = 0; i < BMP_INDICES_LENGTH; i++) {
+ out.write(toByteArray(BMPindices[i]));
+ }
+ BMPindices = null;
+ out.write(BMPdata);
+ BMPdata = null;
+
+ /* Write a category table for non-BMP characters. */
+ len = nonBMPdata.length;
+ for (int i = 0; i < len; i++) {
+ out.write(toByteArray(nonBMPdata[i]));
+ }
+ nonBMPdata = null;
+
+ /* Write additional data */
+ if (additionalData != null) {
+ out.write(additionalData);
+ }
+
+ out.close();
+ }
+ catch (Exception e) {
+ throw new InternalError(e.toString());
+ }
+ }
+
+ byte[] toByteArray(short val) {
+ byte[] buf = new byte[2];
+ buf[0] = (byte)((val>>>8) & 0xFF);
+ buf[1] = (byte)(val & 0xFF);
+ return buf;
+ }
+
+ byte[] toByteArray(int val) {
+ byte[] buf = new byte[4];
+ buf[0] = (byte)((val>>>24) & 0xFF);
+ buf[1] = (byte)((val>>>16) & 0xFF);
+ buf[2] = (byte)((val>>>8) & 0xFF);
+ buf[3] = (byte)(val & 0xFF);
+ return buf;
+ }
+
+ byte[] toByteArray(long val) {
+ byte[] buf = new byte[8];
+ buf[0] = (byte)((val>>>56) & 0xff);
+ buf[1] = (byte)((val>>>48) & 0xff);
+ buf[2] = (byte)((val>>>40) & 0xff);
+ buf[3] = (byte)((val>>>32) & 0xff);
+ buf[4] = (byte)((val>>>24) & 0xff);
+ buf[5] = (byte)((val>>>16) & 0xff);
+ buf[6] = (byte)((val>>>8) & 0xff);
+ buf[7] = (byte)(val & 0xff);
+ return buf;
+ }
+
+ byte[] toByteArray(boolean[] data) {
+ byte[] buf = new byte[data.length];
+ for (int i = 0; i < data.length; i++) {
+ buf[i] = data[i] ? (byte)1 : (byte)0;
+ }
+ return buf;
+ }
+
+ void setAdditionalData(byte[] data) {
+ additionalData = data;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/generatebreakiteratordata/SupplementaryCharacterData.java b/jdk/make/tools/src/build/tools/generatebreakiteratordata/SupplementaryCharacterData.java
new file mode 100644
index 0000000..6149ca4
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/generatebreakiteratordata/SupplementaryCharacterData.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.generatebreakiteratordata;
+
+import java.util.Arrays;
+
+final class SupplementaryCharacterData {
+
+ /**
+ * Default value
+ */
+ private static final byte DEFAULT_VALUE = 0;
+ private byte defaultValue;
+
+ /**
+ * A array which has a unicode code point(0x010000-0x10FFFF) as the upper
+ * 3 bytes and a value as the remaining one byte in each data.
+ */
+ private int[] dataTable;
+
+ /*
+ * Counter to keep the number of data in tempTable
+ */
+ private int dataCount;
+
+ /*
+ * Temporary data table used until dataTable is generated.
+ */
+ private long[] tempTable;
+
+ /*
+ * Initila tempTable size
+ */
+ private static final int INITIAL_TABLE_SIZE = 150;
+
+ /*
+ * The number of entries to be appended when tempTable becomes full
+ */
+ private static final int ADDITIONAL_TABLE_SIZE = 10;
+
+ /*
+ * Upper limit, used as a sentinel
+ */
+ private static final int UPPER_LIMIT = Character.MAX_CODE_POINT + 1;
+
+ /*
+ * Mask for supplementary code points(0x010000-0x10FFFF)
+ */
+ private static final int CODEPOINT_MASK = 0x1FFFFF;
+
+
+ public SupplementaryCharacterData(byte value) {
+ defaultValue = value;
+ dataCount = 0;
+ }
+
+ /**
+ * Appends the given data to tempTable
+ */
+ public void appendElement(int start, int end, byte value) {
+ if (tempTable == null) {
+ tempTable = new long[INITIAL_TABLE_SIZE];
+ }
+
+ if (dataCount == tempTable.length) {
+ long[] tempTempTable = new long[dataCount + ADDITIONAL_TABLE_SIZE];
+ System.arraycopy(tempTable, 0, tempTempTable, 0, dataCount);
+ tempTable = tempTempTable;
+ }
+ tempTable[dataCount++] = ((((long)start<<24) + end)<<8) + value;
+ }
+
+ /**
+ * Returns the data table
+ */
+ public int[] getArray() {
+ return dataTable;
+ }
+
+ /**
+ * Creates dataTable
+ */
+ public void complete() {
+ dataTable = generateTable();
+ }
+
+ /**
+ * Generates a table from the given data
+ */
+ private int[] generateTable() {
+ /* If tempTable is empty, put two data */
+ if (dataCount == 0) {
+ int[] tmpArray = new int[2];
+ tmpArray[0] = composeEntry(0, DEFAULT_VALUE);
+ tmpArray[1] = composeEntry(UPPER_LIMIT, DEFAULT_VALUE);
+ tempTable = null;
+ return tmpArray;
+ }
+
+ Arrays.sort(tempTable, 0, dataCount);
+
+ int[] newTempTable = new int[dataCount*2 + 3];
+
+ int old_index = 0;
+ int new_index = 0;
+ int loop_count = dataCount - 1;
+ long data = tempTable[old_index];
+ int start = (int)((long)(data>>32)) & CODEPOINT_MASK;
+ int end = (int)(data>>8) & CODEPOINT_MASK;
+
+ /*
+ * Add an entry if the first start code point in tempTable is not
+ * the minimum supplementary code point.
+ */
+ if (start != Character.MIN_SUPPLEMENTARY_CODE_POINT) {
+ newTempTable[new_index++] = composeEntry(Character.MIN_SUPPLEMENTARY_CODE_POINT, defaultValue);
+ }
+
+ newTempTable[new_index++] = composeEntry(start, (int)data);
+ for (int i = 0; i < loop_count; i++) {
+ data = tempTable[++old_index];
+ int nextStart = (int)((long)(data>>32)) & CODEPOINT_MASK;
+
+ /*
+ * If the previous end code point is not equal to the previous start
+ * code point and is not consecutive with the next start code point,
+ * insert a filler entry before an entry for the next start code
+ * point.
+ */
+ if (end != start && end != nextStart-1) {
+ newTempTable[new_index++] = composeEntry(end + 1, defaultValue);
+ }
+ newTempTable[new_index++] = composeEntry(nextStart, (int)data);
+ start = nextStart;
+ end = (int)(data>>8) & CODEPOINT_MASK;
+ }
+ newTempTable[new_index++] = composeEntry(++end, defaultValue);
+
+ /* Add an entry for a sentinel if necessary. */
+ if (end < UPPER_LIMIT) {
+ newTempTable[new_index++] = composeEntry(UPPER_LIMIT, defaultValue);
+ }
+
+ /* Copy data to dataTable. */
+ dataTable = new int[new_index];
+ System.arraycopy(newTempTable, 0, dataTable, 0, new_index);
+
+ tempTable = null;
+
+ return dataTable;
+ }
+
+ /**
+ * Composes an entry with the given supplementary code point
+ * (0x010000-0x10FFFF) for the upper 3 bytes and the given value for the
+ * remaining one byte.
+ */
+ private int composeEntry(int codePoint, int value) {
+ return (codePoint<<8) | (value&0xFF);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java b/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java
new file mode 100644
index 0000000..5c8adb5
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java
@@ -0,0 +1,1915 @@
+
+/*
+ * Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.generatecharacter;
+
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.PrintWriter;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.File;
+
+/**
+ * This program generates the source code for the class java.lang.Character.
+ * It also generates native C code that can perform the same operations.
+ * It requires two external input data files:
+ * <ul>
+ * <li> Unicode specification file
+ * <li> Character class template file
+ * </ul>
+ * The Unicode specification file is available from the Unicode consortium.
+ * It has character specification lines that look like this:
+ * <listing>
+ * 0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+ * </listing>
+ * The Character class template file is filled in with additional
+ * information to produce the file Character.java, which can then be
+ * compiled by a Java compiler. The template file contains certain
+ * markers consisting of an alphabetic name string preceded by "$$".
+ * Such markers are replaced with generated program text. As a special
+ * case, the marker "Lookup(xxx)" is recognized, where "xxx" consists of
+ * alphabetic characters constituting a variable name. The character "_"
+ * is considered alphabetic for these purposes.
+ *
+ * @author Guy Steele
+ * @author Alan Liu
+ * @author John O'Conner
+ */
+
+public class GenerateCharacter {
+
+ final static boolean DEBUG = false;
+
+ final static int MAX_UNICODE_VALUE = 0xFFFF;
+ final static String commandMarker = "$$";
+ static String ROOT = "";
+ static String DefaultUnicodeSpecFileName = ROOT + "UnicodeData.txt";
+ static String DefaultSpecialCasingFileName = ROOT + "SpecialCasing.txt";
+ static String DefaultJavaTemplateFileName = ROOT + "Character.java.template";
+ static String DefaultJavaOutputFileName = ROOT + "Character.java";
+ static String DefaultCTemplateFileName = ROOT + "Character.c.template";
+ static String DefaultCOutputFileName = ROOT + "Character.c";
+
+ static String CharacterDataClassName = "CharacterData";
+ static int plane = 0;
+
+ /* The overall idea is that, in the generated Character class source code,
+ most character property data is stored in a special multi-level table whose
+ structure is defined by a sequence of nonnegative integers [k1, k2, ..., kn].
+ The integers must sum to 16 (the number of bits in a character).
+ The first table is indexed by the k1 high-order bits of the character code.
+ The result is concatenated to the next k2 bits of the character code to index
+ the second table, and so on. Eventually the kn low-order bits of the character
+ code are concatenated and used to index one of two tables A and B; A contains
+ 32-bit integer entries and B contains 16-bit short entries. The 48 bits that
+ can be thus obtained encode the properties for the character.
+
+ The default specification is [9, 4, 3, 0]. This particular table format was
+ designed by conducting an exhaustive search of table formats to minimize the
+ space consumed by the tables: the first and third tables need have only byte
+ values (the second table must have short values). Another good choice is
+ [10, 6, 0], which produces a larger table but allows particularly fast table
+ lookup code.
+
+ In each case, where the word "concatenated" is used, this may imply
+ first a << and then a | operation, or perhaps just a | operation if
+ the values in the table can be preshifted (generally possible if the table
+ entries are short rather than byte).
+ */
+
+ /* The character properties are currently encoded into 32 bits in the following manner:
+ 1 bit Mirrored property.
+ 4 bits Bidirectional category (see below) (unused if -nobidi switch specified)
+ 9 bits A signed offset used for converting case .
+ 1 bit If 1, adding the signed offset converts the character to lowercase.
+ 1 bit If 1, subtracting the signed offset converts the character to uppercase.
+ Note: for a titlecase character, both of the preceding bits will be 1
+ and the signed offset will be 1.
+ 1 bit If 1, this character has a titlecase equivalent (possibly itself);
+ in this case, the two bits before this bit can be used to decide
+ whether this character is in fact uppercase, lowercase, or titlecase.
+ 3 bits This field provides a quick way to lex identifiers.
+ The eight possible values for this field are as follows:
+ 0 May not be part of an identifier
+ 1 Ignorable control; may continue a Unicode identifier or Java identifier
+ 2 May continue a Java identifier but not a Unicode identifier (unused)
+ 3 May continue a Unicode identifier or Java identifier
+ 4 Is a Java whitespace character
+ 5 May start or continue a Java identifier;
+ may continue but not start a Unicode identifier
+ (this value is used for connector punctuation such as _)
+ 6 May start or continue a Java identifier;
+ may not occur in a Unicode identifier
+ (this value is used for currency symbols such as $)
+ 7 May start or continue a Unicode identifier or Java identifier
+ Thus:
+ 5, 6, 7 may start a Java identifier
+ 1, 2, 3, 5, 6, 7 may continue a Java identifier
+ 7 may start a Unicode identifier
+ 1, 3, 5, 7 may continue a Unicode identifier
+ 1 is ignorable within an identifier
+ 4 is Java whitespace
+ 2 bits This field indicates whether the character has a numeric property.
+ The four possible values for this field are as follows:
+ 0 This character has no numeric property.
+ 1 Adding the digit offset to the character code and then
+ masking with 0x1F will produce the desired numeric value.
+ 2 This character has a "strange" numeric value.
+ 3 A Java supradecimal digit: adding the digit offset to the
+ character code, then masking with 0x1F, then adding 10
+ will produce the desired numeric value.
+ 5 bits The digit offset (see description of previous field)
+ 5 bits Character type (see below)
+ */
+
+
+ // bit masks identify each component of a 32-bit property field described
+ // above.
+ // shift* indicates how many shifts right must happen to get the
+ // indicated property value in the lowest bits of the 32-bit space.
+ private static final int
+ shiftType = 0, maskType = 0x001F,
+ shiftDigitOffset = 5, maskDigitOffset = 0x03E0,
+ shiftNumericType = 10, maskNumericType = 0x0C00,
+ shiftIdentifierInfo = 12, maskIdentifierInfo = 0x7000,
+ maskUnicodePart = 0x1000,
+ shiftCaseInfo = 15, maskCaseInfo = 0x38000,
+ maskLowerCase = 0x20000,
+ maskUpperCase = 0x10000,
+ maskTitleCase = 0x08000,
+ shiftCaseOffset = 18, maskCaseOffset = 0x07FC0000,
+ shiftCaseOffsetSign = 5,
+ // used only when calculating and
+ // storing digit offsets from char values
+ maskDigit = 0x001F,
+ // case offset are 9 bits
+ maskCase = 0x01FF,
+ shiftBidi = 27, maskBidi = 0x78000000,
+ shiftMirrored = 31, maskMirrored = 0x80000000,
+ shiftPlane = 16, maskPlane = 0xFF0000;
+
+ // Can compare masked values with these to determine
+ // numeric or lexical types.
+ public static int
+ valueNotNumeric = 0x0000,
+ valueDigit = 0x0400,
+ valueStrangeNumeric = 0x0800,
+ valueJavaSupradecimal = 0x0C00,
+ valueIgnorable = 0x1000,
+ valueJavaOnlyPart = 0x2000,
+ valueJavaUnicodePart = 0x3000,
+ valueJavaWhitespace = 0x4000,
+ valueJavaStartUnicodePart = 0x5000,
+ valueJavaOnlyStart = 0x6000,
+ valueJavaUnicodeStart = 0x7000,
+ lowJavaStart = 0x5000,
+ nonzeroJavaPart = 0x3000,
+ valueUnicodeStart = 0x7000;
+
+ // these values are used when only identifier properties are generated
+ // for use in verifier code. Shortens the property down to a single byte.
+ private static final int
+ bitJavaStart = 0x02,
+ bitJavaPart = 0x01,
+ maskIsJavaIdentifierPart = bitJavaPart,
+ maskIsJavaIdentifierStart = bitJavaStart;
+
+ static int maxOffset = maskCase/2 ;
+ static int minOffset = -maxOffset;
+
+ /* The following routines provide simple, concise formatting of long integer values.
+ The number in the name of the method indicates the desired number of characters
+ to be produced. If the number of digits required to represent the integer value
+ is less than that number, then the output is padded on the left with zeros
+ (for hex) or with spaces (for decimal). If the number of digits required to
+ represent the integer value is greater than the desired number, then all the digits
+ that are required are actually produced.
+ */
+
+ static String hex(long n) { return Long.toHexString(n).toUpperCase(); }
+
+ static String hex2(long n) {
+ String q = Long.toHexString(n & 0xFF).toUpperCase();
+ return "00".substring(Math.min(2, q.length())) + q;
+ }
+
+ static String hex4(long n) {
+ String q = Long.toHexString(n & 0xFFFF).toUpperCase();
+ return "0000".substring(Math.min(4, q.length())) + q;
+ }
+
+ static String hex8(long n) {
+ String q = Long.toHexString(n & 0xFFFFFFFFL).toUpperCase();
+ return "00000000".substring(Math.min(8, q.length())) + q;
+ }
+
+ static String hex16(long n) {
+ String q = Long.toHexString(n).toUpperCase();
+ return "0000000000000000".substring(Math.min(16, q.length())) + q;
+ }
+
+ static String dec3(long n) {
+ String q = Long.toString(n);
+ return " ".substring(Math.min(3, q.length())) + q;
+ }
+
+ static String dec5(long n) {
+ String q = Long.toString(n);
+ return " ".substring(Math.min(5, q.length())) + q;
+ }
+
+ /* This routine is called when some failure occurs. */
+
+ static void FAIL(String s) {
+ System.out.println("** " + s);
+ }
+
+ /**
+ * Given the data from the Unicode specification file, this routine builds a map.
+ *
+ * The specification file is assumed to contain its data in sorted order by
+ * character code; as a result, the array passed as an argument to this method
+ * has its components in the same sorted order, with one entry for each defined
+ * Unicode character or character range. (A range is indicated by two consecutive
+ * entries, such that the name of the first entry begins with "<" and ends with
+ * "First>" and the second entry begins with "<" and ends with "Last>".) This is
+ * therefore a sparse representation of the character property data.
+ *
+ * The resulting map is dense representation of the character data. It contains
+ * 2^16 = 65536 entries, each of which is a long integer. (Right now only 32 bits
+ * of this long value are used, but type long is used rather than int to facilitate
+ * future extensions of this source code generator that might require more than
+ * 32 bits to encode relevant character properties.) Entry k holds the encoded
+ * properties for character k.
+ *
+ * Method buildMap manages the transformation from the sparse representation to
+ * the dense representation. It calls method buildOne to handle the encoding
+ * of character property data from a single UnicodeSpec object into 32 bits.
+ * For undefined characters, method buildOne is not called and the map entry for
+ * that character is set to UnicodeSpec.UNASSIGNED.
+ *
+ * @param data character property data from the Unicode specification file
+ * @return an array of length 65536 with one entry for every possible char value
+ *
+ * @see GenerateCharacter#buildOne
+ */
+
+ static long[] buildMap(UnicodeSpec[] data, SpecialCaseMap[] specialMaps) {
+ long[] result;
+ if (bLatin1 == true) {
+ result = new long[256];
+ } else {
+ result = new long[1<<16];
+ }
+ int k=0;
+ int codePoint = plane<<16;
+ UnicodeSpec nonCharSpec = new UnicodeSpec();
+ for (int j = 0; j < data.length && k < result.length; j++) {
+ if (data[j].codePoint == codePoint) {
+ result[k] = buildOne(codePoint, data[j], specialMaps);
+ ++k;
+ ++codePoint;
+ }
+ else if(data[j].codePoint > codePoint) {
+ if (data[j].name.endsWith("Last>")) {
+ // build map data for all chars except last in range
+ while (codePoint < data[j].codePoint && k < result.length) {
+ result[k] = buildOne(codePoint, data[j], specialMaps);
+ ++k;
+ ++codePoint;
+ }
+ }
+ else {
+ // we have a few unassigned chars before data[j].codePoint
+ while (codePoint < data[j].codePoint && k < result.length) {
+ result[k] = buildOne(codePoint, nonCharSpec, specialMaps);
+ ++k;
+ ++codePoint;
+ }
+ }
+ k = data[j].codePoint & 0xFFFF;
+ codePoint = data[j].codePoint;
+ result[k] = buildOne(codePoint, data[j], specialMaps);
+ ++k;
+ ++codePoint;
+
+ }
+ else {
+ System.out.println("An error has occured during spec mapping.");
+ System.exit(0);
+ }
+ }
+ // if there are still unprocessed chars, process them
+ // as unassigned/undefined.
+ codePoint = (plane<<16) | k;
+ while (k < result.length) {
+ result[k] = buildOne(codePoint, nonCharSpec, specialMaps);
+ ++k;
+ ++codePoint;
+ }
+ return result;
+ }
+
+ // The maximum and minimum offsets found while scanning the database
+ static int maxOffsetSeen = 0;
+ static int minOffsetSeen = 0;
+
+ /**
+ * Some Unicode separator characters are not considered Java whitespace.
+ * @param c character to test
+ * @return true if c in an invalid Java whitespace character, false otherwise.
+ */
+ static boolean isInvalidJavaWhiteSpace(int c) {
+ int[] exceptions = {0x00A0, 0x2007, 0x202F, 0xFEFF};
+ boolean retValue = false;
+ for(int x=0;x<exceptions.length;x++) {
+ if(c == exceptions[x]) {
+ retValue = true;
+ break;
+ }
+ }
+ return retValue;
+
+ }
+
+ /**
+ * Given the character property data for one Unicode character, encode the data
+ * of interest into a single long integer value. (Right now only 32 bits
+ * of this long value are used, but type long is used rather than int to facilitate
+ * future extensions of this source code generator that might require more than
+ * 32 bits to encode relevant character properties.)
+ *
+ * @param c the character code for which to encode property data
+ * @param us property data record from the Unicode specification file
+ * (its character code might not be equal to c if it specifies data
+ * for a range of characters)
+ * @return an encoded long value that contains the properties for a single char
+ *
+ * @see GenerateCharacter#buildMap
+ */
+
+ static long buildOne(int c, UnicodeSpec us, SpecialCaseMap[] specialMaps) {
+ long resultA = 0;
+ // record the general category
+ resultA |= us.generalCategory;
+
+ // record the numeric properties
+ NUMERIC: {
+ STRANGE: {
+ int val = 0;
+ // c is A-Z
+ if ((c >= 0x0041) && (c <= 0x005A)) {
+ val = c - 0x0041;
+ resultA |= valueJavaSupradecimal;
+ // c is a-z
+ } else if ((c >= 0x0061) && (c <= 0x007A)) {
+ val = c - 0x0061;
+ resultA |= valueJavaSupradecimal;
+ // c is a full-width A-Z
+ } else if ((c >= 0xFF21) && (c <= 0xFF3A)) {
+ val = c - 0xFF21;
+ resultA |= valueJavaSupradecimal;
+ // c is a full-width a-z
+ } else if ((c >= 0xFF41) && (c <= 0xFF5A)) {
+ val = c - 0xFF41;
+ resultA |= valueJavaSupradecimal;
+ } else if (us.isDecimalValue()) {
+ val = us.decimalValue;
+ resultA |= valueDigit;
+ } else if (us.isDigitValue()) {
+ val = us.digitValue;
+ resultA |= valueDigit;
+ } else {
+ if (us.numericValue.length() == 0) {
+ break NUMERIC; // no numeric value at all
+ } else {
+ try {
+ val = Integer.parseInt(us.numericValue);
+ if (val >= 32 || val < 0) break STRANGE;
+ if (c == 0x215F) break STRANGE;
+ } catch(NumberFormatException e) {
+ break STRANGE;
+ }
+ resultA |= valueDigit;
+ }
+ }
+ if (val >= 32 || val < 0) break STRANGE;
+ resultA |= ((val - c & maskDigit) << shiftDigitOffset);
+ break NUMERIC;
+ } // end STRANGE
+ resultA |= valueStrangeNumeric;
+ } // end NUMERIC
+
+ // record case mapping
+ int offset = 0;
+ // might have a 1:M mapping
+ int specialMap = SpecialCaseMap.find(c, specialCaseMaps);
+ boolean bHasUpper = (us.hasUpperMap()) || (specialMap != -1);
+ if (bHasUpper) {
+ resultA |= maskUpperCase;
+ }
+ if (specialMap != -1) {
+ // has mapping, but cannot record the
+ // proper offset; can only flag it and provide special case
+ // code in Character.java
+ offset = -1;
+ }
+ else if (us.hasUpperMap()) {
+ offset = c - us.upperMap;
+ }
+
+ if (us.hasLowerMap()) {
+ resultA |= maskLowerCase;
+ if (offset == 0)
+ offset = us.lowerMap - c;
+ else if (offset != (us.lowerMap - c)) {
+ if (DEBUG) {
+ FAIL("Character " + hex(c) +
+ " has incompatible lowercase and uppercase mappings");
+ }
+ }
+ }
+ if ((us.hasTitleMap() && us.titleMap != us.upperMap) ||
+ (bHasUpper && us.hasLowerMap())) {
+ resultA |= maskTitleCase;
+ }
+ if (bHasUpper && !us.hasLowerMap() && !us.hasTitleMap() && verbose) {
+ System.out.println("Warning: Character " + hex4(c) + " has upper but " +
+ "no title case; Java won't know this");
+ }
+ if (offset < minOffsetSeen) minOffsetSeen = offset;
+ if (offset > maxOffsetSeen) maxOffsetSeen = offset;
+ if (offset > maxOffset || offset < minOffset) {
+ if (DEBUG) {
+ FAIL("Case offset " + offset + " for character " + hex4(c) + " must be handled as a special case");
+ }
+ offset = maskCase;
+ }
+ resultA |= ((offset & maskCase) << shiftCaseOffset);
+
+
+ // record lexical info about this character
+ if (us.generalCategory == UnicodeSpec.LOWERCASE_LETTER
+ || us.generalCategory == UnicodeSpec.UPPERCASE_LETTER
+ || us.generalCategory == UnicodeSpec.TITLECASE_LETTER
+ || us.generalCategory == UnicodeSpec.MODIFIER_LETTER
+ || us.generalCategory == UnicodeSpec.OTHER_LETTER
+ || us.generalCategory == UnicodeSpec.LETTER_NUMBER) {
+ resultA |= valueJavaUnicodeStart;
+ }
+ else if (us.generalCategory == UnicodeSpec.COMBINING_SPACING_MARK
+ || us.generalCategory == UnicodeSpec.NON_SPACING_MARK
+ || us.generalCategory == UnicodeSpec.DECIMAL_DIGIT_NUMBER) {
+ resultA |= valueJavaUnicodePart;
+ }
+ else if (us.generalCategory == UnicodeSpec.CONNECTOR_PUNCTUATION) {
+ resultA |= valueJavaStartUnicodePart;
+ }
+ else if (us.generalCategory == UnicodeSpec.CURRENCY_SYMBOL) {
+ resultA |= valueJavaOnlyStart;
+ }
+ else if (((c >= 0x0000) && (c <= 0x0008))
+ || ((c >= 0x000E) && (c <= 0x001B))
+ || ((c >= 0x007F) && (c <= 0x009F))
+ || us.generalCategory == UnicodeSpec.FORMAT) {
+ resultA |= valueIgnorable;
+ }
+ else if (us.generalCategory == UnicodeSpec.SPACE_SEPARATOR
+ || us.generalCategory == UnicodeSpec.LINE_SEPARATOR
+ || us.generalCategory == UnicodeSpec.PARAGRAPH_SEPARATOR) {
+ if (!isInvalidJavaWhiteSpace(c)) resultA |= valueJavaWhitespace;
+ }
+ else if (((c >= 0x0009) && (c <= 0x000D))
+ || ((c >= 0x001C) && (c <= 0x001F))) {
+ resultA |= valueJavaWhitespace;
+ }
+
+ // record bidi category
+ if (!nobidi) {
+ int tmpBidi =
+ (us.bidiCategory > UnicodeSpec.DIRECTIONALITY_OTHER_NEUTRALS ||
+ us.bidiCategory == -1) ? maskBidi : (us.bidiCategory << shiftBidi);
+ resultA |= tmpBidi;
+ }
+
+ // record mirrored property
+ if (!nomirror) {
+ resultA |= us.mirrored ? maskMirrored : 0;
+ }
+
+ if (identifiers) {
+ long replacement = 0;
+ if ((resultA & maskIdentifierInfo) >= lowJavaStart) {
+ replacement |= bitJavaStart;
+ }
+ if ( ((resultA & nonzeroJavaPart) != 0)
+ && ((resultA & maskIdentifierInfo) != valueIgnorable)) {
+ replacement |= bitJavaPart;
+ }
+ resultA = replacement;
+ }
+ return resultA;
+ }
+
+ /**
+ * This is the heart of the table compression strategy. The inputs are a map
+ * and a number of bits (size). The map is simply an array of long integer values;
+ * the number of bits indicates how index values for that map are to be split.
+ * The length of the given map must be a multiple of (1 << size). The result is
+ * a new map z and a compressed table t such that for every valid index value k
+ * for the original map, t[(z[k>>size]<<size)|(k & ((1<<size)-1))] == map[k].
+ *
+ * In other words, the index k can be split into two parts, namely the "size"
+ * low-order bits and all the remaining high-order bits; the high-order bits are then
+ * remapped by map z to produce an index into table t. In effect, the data of the
+ * original map m is broken up into blocks of size (1<<size); the compression relies
+ * on the expectation that many of these blocks will be identical and therefore need
+ * be represented only once in the compressed table t.
+ *
+ * This method is intended to be used iteratively. The first map to be handed
+ * to it is the one constructed by method buildMap. After that, the first of the
+ * two arrays returned by this method is fed back into it for further compression.
+ * At the end of the iteration, one has a starter map and a sequence of tables.
+ *
+ * The algorithm used to implement this computation is straightforward and not
+ * especially clever. It uses brute-force linear search (the loop labeled MIDDLE)
+ * to locate identical blocks, so overall the time complexity of the algorithm
+ * is quadratic in the length of the input map. Fortunately, speed is not crucial
+ * to this application.
+ *
+ * @param map a map to be compressed
+ * @param size the number of index bits to be split off by the compression
+ * @return an array of length 2 containing two arrays; the first is a new map
+ * and the second is a compressed data table
+ *
+ * @see GenerateCharacter#buildMap
+ */
+
+ static long[][] buildTable(long[] map, int size) {
+ int n = map.length;
+ if (((n >> size) << size) != n) {
+ FAIL("Length " + n + " is not a multiple of " + (1 << size));
+ }
+ int m = 1 << size;
+ // We know the final length of the new map up front.
+ long[] newmap = new long[n >> size];
+ // The buffer is used temporarily to hold data for the compressed table
+ // because we don't know its final length yet.
+ long[] buffer = new long[n];
+ int ptr = 0;
+OUTER: for (int i = 0; i < n; i += m) {
+ // For every block of size m in the original map...
+ MIDDLE: for (int j = 0; j < ptr; j += m) {
+ // Find out whether there is already a block just like it in the buffer.
+ for (int k = 0; k < m; k++) {
+ if (buffer[j+k] != map[i+k])
+ continue MIDDLE;
+ }
+ // There is a block just like it at position j, so just
+ // put its index into the new map (thereby sharing it).
+ newmap[i >> size] = (j >> size);
+ continue OUTER;
+ } // end MIDDLE
+ // There is no block just like it already, so add it to
+ // the buffer and put its index into the new map.
+ for (int k = 0; k < m; k++) {
+ buffer[ptr+k] = map[i+k];
+ }
+ newmap[i >> size] = (ptr >> size);
+ ptr += m;
+ } // end OUTER
+ // Now we know how long the compressed table should be,
+ // so create a new array and copy data from the temporary buffer.
+ long[] newdata = new long[ptr];
+ for (int j = 0; j < ptr; j++) {
+ newdata[j] = buffer[j];
+ }
+ // Return the new map and the new data table.
+ long[][] result = { newmap, newdata };
+ return result;
+ }
+
+ /**
+ * Once the compressed tables have been computed, this method reads in a
+ * template file for the source code to be generated and writes out the final
+ * source code by acting as a sort of specialized macro processor.
+ *
+ * The first output line is a comment saying that the file was automatically
+ * generated; it includes a timestamp. All other output is generated by
+ * reading a line from the template file, performing macro replacements,
+ * and then writing the resulting line or lines of code to the output file.
+ *
+ * This method handles the I/O, the timestamp comment, and the locating of
+ * macro calls within each input line. The method replaceCommand is called
+ * to generate replacement text for each macro call.
+ *
+ * Macro calls to be replaced are indicated in the template file by
+ * occurrences of the commandMarker "$$". The rest of the call may consist
+ * of Java letters (including the underscore "_") and also of balanced
+ * parentheses.
+ *
+ * @param theTemplateFileName
+ * the file name for the template input file
+ * @param theOutputFileName
+ * the file name for the source code output file
+ *
+ * @see GenerateCharacter#replaceCommand
+ */
+
+ static void generateCharacterClass(String theTemplateFileName,
+ String theOutputFileName)
+ throws FileNotFoundException, IOException {
+ BufferedReader in = new BufferedReader(new FileReader(theTemplateFileName));
+ PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(theOutputFileName)));
+ out.println(commentStart +
+ " This file was generated AUTOMATICALLY from a template file " +
+ new java.util.Date() + commentEnd);
+ int marklen = commandMarker.length();
+ LOOP: while(true) {
+ try {
+ String line = in.readLine();
+ if (line == null) break LOOP;
+ int pos = 0;
+ int depth = 0;
+ while ((pos = line.indexOf(commandMarker, pos)) >= 0) {
+ int newpos = pos + marklen;
+ char ch = 'x';
+ SCAN: while (newpos < line.length() &&
+ (Character.isJavaIdentifierStart(ch = line.charAt(newpos))
+ || ch == '(' || (ch == ')' && depth > 0))) {
+ ++newpos;
+ if (ch == '(') {
+ ++depth;
+ }
+ else if (ch == ')') {
+ --depth;
+ if (depth == 0)
+ break SCAN;
+ }
+ }
+ String replacement = replaceCommand(line.substring(pos + marklen, newpos));
+ line = line.substring(0, pos) + replacement + line.substring(newpos);
+ pos += replacement.length();
+ }
+ out.println(line);
+ }
+ catch (IOException e) {
+ break LOOP;
+ }
+ }
+ in.close();
+ out.close();
+ }
+
+ /**
+ * The replaceCommand method takes a command (a macro call without the
+ * leading marker "$$") and computes replacement text for it.
+ *
+ * Most of the commands are simply names of integer constants that are defined
+ * in the source code of this GenerateCharacter class. The replacement text is
+ * simply the value of the constant as an appropriately formatted integer literal.
+ *
+ * Two cases are more complicated, however. The command "Tables" causes the
+ * final map and compressed tables to be emitted, with elaborate comments
+ * describing their contents. (This is actually handled by method genTables.)
+ * The command "Lookup(xxx)", where "xxx" is the name of a variable, generates
+ * an expression that will return the character property data for the character
+ * whose code is the value of the variable "xxx". (this is handled by method
+ * "genAccess".)
+ *
+ * @param x a command from the template file to be replaced
+ * @return the replacement text, as a String
+ *
+ * @see GenerateCharacter#genTables
+ * @see GenerateCharacter#genAccess
+ * @see GenerateCharacter#generateCharacterClass
+ */
+
+ static String replaceCommand(String x) {
+ if (x.equals("Tables")) return genTables();
+ if (x.equals("Initializers")) return genInitializers();
+ if (x.length() >= 9 && x.substring(0, 7).equals("Lookup(") &&
+ x.substring(x.length()-1).equals(")") )
+ return genAccess("A", x.substring(7, x.length()-1), (identifiers ? 2 : 32));
+ if (x.equals("shiftType")) return Long.toString(shiftType);
+ if (x.equals("shiftIdentifierInfo")) return Long.toString(shiftIdentifierInfo);
+ if (x.equals("maskIdentifierInfo")) return "0x" + hex8(maskIdentifierInfo);
+ if (x.equals("maskUnicodePart")) return "0x" + hex8(maskUnicodePart);
+ if (x.equals("shiftCaseOffset")) return Long.toString(shiftCaseOffset);
+ if (x.equals("shiftCaseInfo")) return Long.toString(shiftCaseInfo);
+ if (x.equals("shiftCaseOffsetSign")) return Long.toString(shiftCaseOffsetSign);
+ if (x.equals("maskCase")) return "0x" + hex8(maskCase);
+ if (x.equals("maskCaseOffset")) return "0x" + hex8(maskCaseOffset);
+ if (x.equals("maskLowerCase")) return "0x" + hex8(maskLowerCase);
+ if (x.equals("maskUpperCase")) return "0x" + hex8(maskUpperCase);
+ if (x.equals("maskTitleCase")) return "0x" + hex8(maskTitleCase);
+ if (x.equals("valueIgnorable")) return "0x" + hex8(valueIgnorable);
+ if (x.equals("valueJavaUnicodeStart")) return "0x" + hex8(valueJavaUnicodeStart);
+ if (x.equals("valueJavaOnlyStart")) return "0x" + hex8(valueJavaOnlyStart);
+ if (x.equals("valueJavaUnicodePart")) return "0x" + hex8(valueJavaUnicodePart);
+ if (x.equals("valueJavaOnlyPart")) return "0x" + hex8(valueJavaOnlyPart);
+ if (x.equals("valueJavaWhitespace")) return "0x" + hex8(valueJavaWhitespace);
+ if (x.equals("lowJavaStart")) return "0x" + hex8(lowJavaStart);
+ if (x.equals("nonzeroJavaPart")) return "0x" + hex8(nonzeroJavaPart);
+ if (x.equals("bitJavaStart")) return "0x" + hex8(bitJavaStart);
+ if (x.equals("bitJavaPart")) return Long.toString(bitJavaPart);
+ if (x.equals("valueUnicodeStart")) return "0x" + hex8(valueUnicodeStart);
+ if (x.equals("maskIsJavaIdentifierStart")) return "0x" + hex(maskIsJavaIdentifierStart);
+ if (x.equals("maskIsJavaIdentifierPart")) return "0x" + hex(maskIsJavaIdentifierPart);
+ if (x.equals("shiftDigitOffset")) return Long.toString(shiftDigitOffset);
+ if (x.equals("maskDigitOffset")) return "0x" + hex(maskDigitOffset);
+ if (x.equals("maskDigit")) return "0x" + hex(maskDigit);
+ if (x.equals("shiftNumericType")) return Long.toString(shiftNumericType);
+ if (x.equals("maskNumericType")) return "0x" + hex(maskNumericType);
+ if (x.equals("valueNotNumeric")) return "0x" + hex8(valueNotNumeric);
+ if (x.equals("valueDigit")) return "0x" + hex8(valueDigit);
+ if (x.equals("valueStrangeNumeric")) return "0x" + hex8(valueStrangeNumeric);
+ if (x.equals("valueJavaSupradecimal")) return "0x" + hex8(valueJavaSupradecimal);
+ if (x.equals("valueDigit")) return "0x" + hex8(valueDigit);
+ if (x.equals("valueStrangeNumeric")) return "0x" + hex8(valueStrangeNumeric);
+ if (x.equals("maskType")) return "0x" + hex(maskType);
+ if (x.equals("shiftBidi")) return Long.toString(shiftBidi);
+ if (x.equals("maskBidi")) return "0x" + hex(maskBidi);
+ if (x.equals("maskMirrored")) return "0x" + hex8(maskMirrored);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.UNASSIGNED][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.UNASSIGNED);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.UPPERCASE_LETTER][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.UPPERCASE_LETTER);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.LOWERCASE_LETTER][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.LOWERCASE_LETTER);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.TITLECASE_LETTER][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.TITLECASE_LETTER);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.MODIFIER_LETTER][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.MODIFIER_LETTER);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.OTHER_LETTER][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.OTHER_LETTER);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.NON_SPACING_MARK][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.NON_SPACING_MARK);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.ENCLOSING_MARK][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.ENCLOSING_MARK);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.COMBINING_SPACING_MARK][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.COMBINING_SPACING_MARK);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.DECIMAL_DIGIT_NUMBER][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DECIMAL_DIGIT_NUMBER);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.OTHER_NUMBER][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.OTHER_NUMBER);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.SPACE_SEPARATOR][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.SPACE_SEPARATOR);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.LINE_SEPARATOR][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.LINE_SEPARATOR);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.PARAGRAPH_SEPARATOR][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.PARAGRAPH_SEPARATOR);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.CONTROL][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.CONTROL);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.FORMAT][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.FORMAT);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.PRIVATE_USE][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.PRIVATE_USE);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.SURROGATE][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.SURROGATE);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.DASH_PUNCTUATION][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DASH_PUNCTUATION);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.START_PUNCTUATION][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.START_PUNCTUATION);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.END_PUNCTUATION][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.END_PUNCTUATION);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.INITIAL_QUOTE_PUNCTUATION][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.INITIAL_QUOTE_PUNCTUATION);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.FINAL_QUOTE_PUNCTUATION][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.FINAL_QUOTE_PUNCTUATION);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.CONNECTOR_PUNCTUATION][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.CONNECTOR_PUNCTUATION);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.OTHER_PUNCTUATION][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.OTHER_PUNCTUATION);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.LETTER_NUMBER][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.LETTER_NUMBER);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.MATH_SYMBOL][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.MATH_SYMBOL);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.CURRENCY_SYMBOL][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.CURRENCY_SYMBOL);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.MODIFIER_SYMBOL][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.MODIFIER_SYMBOL);
+ if (x.equals(UnicodeSpec.generalCategoryList[UnicodeSpec.OTHER_SYMBOL][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.OTHER_SYMBOL);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_LEFT_TO_RIGHT][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_LEFT_TO_RIGHT);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_RIGHT_TO_LEFT][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_RIGHT_TO_LEFT);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_POP_DIRECTIONAL_FORMAT][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_POP_DIRECTIONAL_FORMAT);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_EUROPEAN_NUMBER][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_EUROPEAN_NUMBER);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_ARABIC_NUMBER][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_ARABIC_NUMBER);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_COMMON_NUMBER_SEPARATOR][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_COMMON_NUMBER_SEPARATOR);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_NONSPACING_MARK][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_NONSPACING_MARK);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_BOUNDARY_NEUTRAL][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_BOUNDARY_NEUTRAL);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_PARAGRAPH_SEPARATOR][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_PARAGRAPH_SEPARATOR);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_SEGMENT_SEPARATOR][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_SEGMENT_SEPARATOR);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_WHITESPACE][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_WHITESPACE);
+ if (x.equals(UnicodeSpec.bidiCategoryList[UnicodeSpec.DIRECTIONALITY_OTHER_NEUTRALS][UnicodeSpec.LONG]))
+ return Integer.toString(UnicodeSpec.DIRECTIONALITY_OTHER_NEUTRALS);
+ FAIL("Unknown text substitution marker " + commandMarker + x);
+ return commandMarker + x;
+ }
+
+ /**
+ * The genTables method generates source code for all the lookup tables
+ * needed to represent the various Unicode character properties.
+ * It simply calls the method genTable once for each table to be generated
+ * and then generates a summary comment.
+ *
+ * @return the replacement text for the "Tables" command, as a String
+ *
+ * @see GenerateCharacter#genTable
+ * @see GenerateCharacter#replaceCommand
+ */
+ static String genTables() {
+ int n = sizes.length;
+ StringBuffer result = new StringBuffer();
+ // liu : Add a comment showing the source of this table
+ result.append(commentStart + " The following tables and code generated using:" +
+ commentEnd + "\n ");
+ result.append(commentStart + ' ' + commandLineDescription + commentEnd + "\n ");
+
+ if (plane == 0 && bLatin1 == false) {
+ genCaseMapTableDeclaration(result);
+ genCaseMapTable(initializers, specialCaseMaps);
+ }
+ int totalBytes = 0;
+ for (int k = 0; k < n - 1; k++) {
+ genTable(result, tableNames[k], tables[k], 0, bytes[k]<<3, sizes[k], preshifted[k],
+ sizes[k+1], false, false, k==0);
+ int s = bytes[k];
+ if (s == 1 && useCharForByte) {
+ s = 2;
+ }
+ totalBytes += tables[k].length * s;
+ }
+ genTable(result, "A", tables[n - 1], 0, (identifiers ? 2 : 32),
+ sizes[n - 1], false, 0, true, !(identifiers), false);
+
+ // If we ever need more than 32 bits to represent the character properties,
+ // then a table "B" may be needed as well.
+ // genTable(result, "B", tables[n - 1], 32, 16, sizes[n - 1], false, 0, true, true, false);
+
+ totalBytes += ((((tables[n - 1].length * (identifiers ? 2 : 32)) + 31) >> 5) << 2);
+ result.append(commentStart);
+ result.append(" In all, the character property tables require ");
+ result.append(totalBytes).append(" bytes.").append(commentEnd);
+ if (verbose) {
+ System.out.println("The character property tables require "
+ + totalBytes + " bytes.");
+ }
+ return result.toString();
+ }
+
+ /**
+ * The genInitializers method generates the body of the
+ * ensureInitted() method, which enables lazy initialization of
+ * the case map table and other tables.
+ */
+ static String genInitializers() {
+ return initializers.toString();
+ }
+
+ /**
+ * Return the total number of bytes needed by all tables. This is a stripped-
+ * down copy of genTables().
+ */
+ static int getTotalBytes() {
+ int n = sizes.length;
+ int totalBytes = 0;
+ for (int k = 0; k < n - 1; k++) {
+ totalBytes += tables[k].length * bytes[k];
+ }
+ totalBytes += ((((tables[n - 1].length * (identifiers ? 2 : 32))
+ + 31) >> 5) << 2);
+ return totalBytes;
+ }
+
+ static void appendEscapedStringFragment(StringBuffer result,
+ char[] line,
+ int length,
+ boolean lastFragment) {
+ result.append(" \"");
+ for (int k=0; k<length; ++k) {
+ result.append("\\u");
+ result.append(hex4(line[k]));
+ }
+ result.append("\"");
+ result.append(lastFragment ? ";" : "+");
+ result.append("\n");
+ }
+
+ static String SMALL_INITIALIZER =
+ " { // THIS CODE WAS AUTOMATICALLY CREATED BY GenerateCharacter:\n"+
+ // " $$name = new $$type[$$size];\n"+
+ " int len = $$name_DATA.length();\n"+
+ " int j=0;\n"+
+ " for (int i=0; i<len; ++i) {\n"+
+ " int c = $$name_DATA.charAt(i);\n"+
+ " for (int k=0; k<$$entriesPerChar; ++k) {\n"+
+ " $$name[j++] = ($$type)c;\n"+
+ " c >>= $$bits;\n"+
+ " }\n"+
+ " }\n"+
+ " assert (j == $$size);\n"+
+ " }\n";
+
+ static String SAME_SIZE_INITIALIZER =
+ " { // THIS CODE WAS AUTOMATICALLY CREATED BY GenerateCharacter:\n"+
+ " assert ($$name_DATA.length() == $$size);\n"+
+ // " $$name = new $$type[$$size];\n"+
+ " for (int i=0; i<$$size; ++i)\n"+
+ " $$name[i] = ($$type)$$name_DATA.charAt(i);\n"+
+ " }\n";
+
+ static String BIG_INITIALIZER =
+ " { // THIS CODE WAS AUTOMATICALLY CREATED BY GenerateCharacter:\n"+
+ // " $$name = new $$type[$$size];\n"+
+ " int len = $$name_DATA.length();\n"+
+ " int j=0;\n"+
+ " int charsInEntry=0;\n"+
+ " $$type entry=0;\n"+
+ " for (int i=0; i<len; ++i) {\n"+
+ " entry |= $$name_DATA.charAt(i);\n"+
+ " if (++charsInEntry == $$charsPerEntry) {\n"+
+ " $$name[j++] = entry;\n"+
+ " entry = 0;\n"+
+ " charsInEntry = 0;\n"+
+ " }\n"+
+ " else {\n"+
+ " entry <<= 16;\n"+
+ " }\n"+
+ " }\n"+
+ " assert (j == $$size);\n"+
+ " }\n";
+
+ static String INT32_INITIALIZER =
+ " { // THIS CODE WAS AUTOMATICALLY CREATED BY GenerateCharacter:\n"+
+ " char[] data = $$name_DATA.toCharArray();\n"+
+ " assert (data.length == ($$size * 2));\n"+
+ " int i = 0, j = 0;\n"+
+ " while (i < ($$size * 2)) {\n"+
+ " int entry = data[i++] << 16;\n"+
+ " $$name[j++] = entry | data[i++];\n"+
+ " }\n"+
+ " }\n";
+
+ static void addInitializer(String name, String type, int entriesPerChar,
+ int bits, int size) {
+
+ String template = (entriesPerChar == 1) ? SAME_SIZE_INITIALIZER :
+ ((entriesPerChar > 0) ? SMALL_INITIALIZER : BIG_INITIALIZER);
+ if (entriesPerChar == -2) {
+ template = INT32_INITIALIZER;
+ }
+ int marklen = commandMarker.length();
+ int pos = 0;
+ while ((pos = template.indexOf(commandMarker, pos)) >= 0) {
+ int newpos = pos + marklen;
+ char ch = 'x';
+ while (newpos < template.length() &&
+ Character.isJavaIdentifierStart(ch = template.charAt(newpos)) &&
+ ch != '_') // Don't allow this in token names
+ ++newpos;
+ String token = template.substring(pos+marklen, newpos);
+ String replacement = "ERROR";
+
+ if (token.equals("name")) replacement = name;
+ else if (token.equals("type")) replacement = type;
+ else if (token.equals("bits")) replacement = ""+bits;
+ else if (token.equals("size")) replacement = ""+size;
+ else if (token.equals("entriesPerChar")) replacement = ""+entriesPerChar;
+ else if (token.equals("charsPerEntry")) replacement = ""+(-entriesPerChar);
+ else FAIL("Unrecognized token: " + token);
+
+ template = template.substring(0, pos) + replacement + template.substring(newpos);
+ pos += replacement.length();
+ }
+ initializers.append(template);
+ }
+
+ /**
+ * The genTable method generates source code for one lookup table.
+ * Most of the complexity stems from handling various options as to
+ * the type of the array components, the precise representation of the
+ * values, the format in which to render each value, the number of values
+ * to emit on each line of source code, and the kinds of useful comments
+ * to be generated.
+ *
+ * @param result a StringBuffer, to which the generated source code
+ * text is to be appended
+ * @param name the name of the table
+ * @param table the table data (an array of long values)
+ * @param extract a distance, in bits, by which each entry of the table
+ * is to be right-shifted before it is processed
+ * @param bits the number of bits (not bytes) to be used to represent
+ * each table entry
+ * @param size the table data is divided up into blocks of size (1<<size);
+ * in this method, this information is used only to affect
+ * how many table values are to be generated per line
+ * @param preshifted if this flag is true, then the table entries are to be
+ * emitted in a preshifted form; that is, each value should
+ * be left-shifted by the amount "shift", so that this work
+ * is built into the table and need not be performed by an
+ * explicit shift operator at run time
+ * @param shift this is the shift amount for preshifting of table entries
+ * @param hexFormat if this flag is true, table entries should be emitted as
+ * hexadecimal literals; otherwise decimal literals are used
+ * @param properties if this flag is true, the table entries are encoded
+ * character properties rather than indexes into yet other tables;
+ * therefore comments describing the encoded properties should
+ * be generated
+ * @param hexComment if this flag is true, each line of output is labelled with
+ * a hexadecimal comment indicating the character values to
+ * which that line applies; otherwise, decimal values indicating
+ * table indices are generated
+ *
+ * @see GenerateCharacter#genTables
+ * @see GenerateCharacter#replaceCommand
+ */
+
+ static void genTable(StringBuffer result, String name,
+ long[] table, int extract, int bits, int size,
+ boolean preshifted, int shift, boolean hexFormat,
+ boolean properties, boolean hexComment) {
+
+ String atype = bits == 1 ? (Csyntax ? "unsigned long" : "int") :
+ bits == 2 ? (Csyntax ? "unsigned long" : "int") :
+ bits == 4 ? (Csyntax ? "unsigned long" : "int") :
+ bits == 8 ? (Csyntax ? "unsigned char" : "byte") :
+ bits == 16 ? (Csyntax ? "unsigned short" : "char") :
+ bits == 32 ? (Csyntax ? "unsigned long" : "int") :
+ (Csyntax ? "int64" : "long");
+ long maxPosEntry = bits == 1 ? Integer.MAX_VALUE : // liu
+ bits == 2 ? Integer.MAX_VALUE :
+ bits == 4 ? Integer.MAX_VALUE :
+ bits == 8 ? Byte.MAX_VALUE :
+ bits == 16 ? Short.MAX_VALUE :
+ bits == 32 ? Integer.MAX_VALUE :
+ Long.MAX_VALUE;
+ int entriesPerChar = bits <= 16 ? (16 / bits) : -(bits / 16);
+ boolean shiftEntries = preshifted && shift != 0;
+ if (bits == 8 && tableAsString && useCharForByte) {
+ atype = "char";
+ maxPosEntry = Character.MAX_VALUE;
+ entriesPerChar = 1;
+ }
+ boolean noConversion = atype.equals("char");
+
+ result.append(commentStart);
+ result.append(" The ").append(name).append(" table has ").append(table.length);
+ result.append(" entries for a total of ");
+ int sizeOfTable = ((table.length * bits + 31) >> 5) << 2;
+ if (bits == 8 && useCharForByte) {
+ sizeOfTable *= 2;
+ }
+ result.append(sizeOfTable);
+ result.append(" bytes.").append(commentEnd).append("\n\n");
+ if (Csyntax)
+ result.append(" static ");
+ else
+ result.append(" static final ");
+ result.append(atype);
+ result.append(" ").append(name).append("[");
+ if (Csyntax)
+ result.append(table.length >> (bits == 1 ? 5 : bits == 2 ? 4 : bits == 4 ? 3 : 0));
+ if (tableAsString) {
+ if (noConversion) {
+ result.append("] = (\n");
+ } else {
+ result.append("] = new ").append(atype).append("["+table.length+"];\n ");
+ result.append("static final String ").append(name).append("_DATA =\n");
+ }
+ int CHARS_PER_LINE = 8;
+ StringBuffer theString = new StringBuffer();
+ int entriesInCharSoFar = 0;
+ char ch = '\u0000';
+ int charsPerEntry = -entriesPerChar;
+ for (int j=0; j<table.length; ++j) {
+ long entry = table[j] >> extract;
+ if (shiftEntries) entry <<= shift;
+ if (entry >= (1L << bits)) {
+ FAIL("Entry too big");
+ }
+ if (entriesPerChar > 0) {
+ // Pack multiple entries into a character
+ ch = (char)(((int)ch >> bits) | (entry << (entriesPerChar-1)*bits));
+ ++entriesInCharSoFar;
+ if (entriesInCharSoFar == entriesPerChar) {
+ // Character is full
+ theString.append(ch);
+ entriesInCharSoFar = 0;
+ ch = '\u0000';
+ }
+ }
+ else {
+ // Use multiple characters per entry
+ for (int k=0; k<charsPerEntry; ++k) {
+ ch = (char)(entry >> ((charsPerEntry-1)*16));
+ entry <<= 16;
+ theString.append(ch);
+ }
+ }
+ }
+ if (entriesInCharSoFar > 0) {
+ while (entriesInCharSoFar < entriesPerChar) {
+ ch = (char)((int)ch >> bits);
+ ++entriesInCharSoFar;
+ }
+ theString.append(ch);
+ entriesInCharSoFar = 0;
+ }
+ result.append(Utility.formatForSource(theString.toString(), " "));
+ if (noConversion) {
+ result.append(").toCharArray()");
+ }
+ result.append(";\n\n ");
+
+ if (!noConversion) {
+ addInitializer(name, atype, entriesPerChar, bits, table.length);
+ }
+ }
+ else {
+ result.append("] = {");
+ boolean castEntries = shiftEntries && (bits < 32);
+ int printPerLine = hexFormat ? (bits == 1 ? 32*4 :
+ bits == 2 ? 16*4 :
+ bits == 4 ? 8*4 :
+ bits == 8 ? 8 :
+ bits == 16 ? 8 :
+ bits == 32 ? 4 : 2) :
+ (bits == 8 ? 8 :
+ bits == 16 ? 8 : 4);
+ int printMask = properties ? 0 :
+ Math.min(1 << size,
+ printPerLine >> (castEntries ? (Csyntax ? 2 : 1) : 0)) - 1;
+ int commentShift = ((1 << size) == table.length) ? 0 : size;
+ int commentMask = ((1 << size) == table.length) ? printMask : (1 << size) - 1;
+ long val = 0;
+ for (int j = 0; j < table.length; j++) {
+ if ((j & printMask) == 0) {
+ while (result.charAt(result.length() - 1) == ' ')
+ result.setLength(result.length() - 1);
+ result.append("\n ");
+ }
+ PRINT: {
+ if (castEntries)
+ result.append("(").append(atype).append(")(");
+ long entry = table[j] >> extract;
+ int packMask = ((1 << (bits == 1 ? 5 : bits == 2 ? 4 : bits == 4 ? 3 : 2)) - 1);
+ int k = j & packMask;
+ if (bits >= 8)
+ val = entry;
+ else if (k == 0) {
+ val = entry;
+ break PRINT;
+ }
+ else {
+ val |= (entry << (k*bits));
+ if (k != packMask)
+ break PRINT;
+ }
+ if (val > maxPosEntry && !Csyntax) { // liu
+ // For values that are out of range, convert them to in-range negative values.
+ // Actually, output the '-' and convert them to the negative of the corresponding
+ // in-range negative values. E.g., convert 130 == -126 (in 8 bits) -> 126.
+ result.append('-');
+ val = maxPosEntry + maxPosEntry + 2 - val;
+ }
+ if (hexFormat) {
+ result.append("0x");
+ if (bits == 8)
+ result.append(hex2((byte)val));
+ else if (bits == 16)
+ result.append(hex4((short)val));
+ else if (bits == 32 || bits < 8)
+ result.append(hex8((int)val));
+ else {
+ result.append(hex16((long)val));
+ if (!Csyntax)
+ result.append("L");
+ }
+ }
+ else {
+ if (bits == 8)
+ result.append(dec3(val));
+ else if (bits == 64) {
+ result.append(dec5(val));
+ if (!Csyntax)
+ result.append("L");
+ }
+ else
+ result.append(dec5(val));
+ }
+ if (shiftEntries)
+ result.append("<<").append(shift);
+ if (castEntries) result.append(")");
+ if (j < (table.length - 1))
+ result.append(", ");
+ else
+ result.append(" ");
+ if ((j & printMask) == printMask) {
+ result.append(" ").append(commentStart).append(" ");
+ if (hexComment)
+ result.append("0x").append(hex4((j & ~commentMask) << (16 - size)));
+ else
+ result.append(dec3((j & ~commentMask) >> commentShift));
+ if (properties) propertiesComments(result, val);
+ result.append(commentEnd);
+ }
+ } // end PRINT
+ }
+ result.append("\n };\n\n ");
+ }
+ }
+
+ static void genCaseMapTableDeclaration(StringBuffer result) {
+ String myTab = " ";
+ result.append(myTab + "static final char[][][] charMap;\n");
+ }
+
+ static void genCaseMapTable(StringBuffer result, SpecialCaseMap[] specialCaseMaps){
+ String myTab = " ";
+ int ch;
+ char[] map;
+ result.append(myTab + "charMap = new char[][][] {\n");
+ for (int x = 0; x < specialCaseMaps.length; x++) {
+ ch = specialCaseMaps[x].getCharSource();
+ map = specialCaseMaps[x].getUpperCaseMap();
+ result.append(myTab + myTab);
+ result.append("{ ");
+ result.append("{\'\\u"+hex4(ch)+"\'}, {");
+ for (int y = 0; y < map.length; y++) {
+ result.append("\'\\u"+hex4(map[y])+"\', ");
+ }
+ result.append("} },\n");
+ }
+ result.append(myTab + "};\n");
+
+ }
+
+ /**
+ * The propertiesComments method generates comments describing encoded
+ * character properties.
+ *
+ * @param result a StringBuffer, to which the generated source code
+ * text is to be appended
+ * @param val encoded character properties
+ *
+ * @see GenerateCharacter#genTable
+ */
+
+ static void propertiesComments(StringBuffer result, long val) {
+ result.append(" ");
+ switch ((int)(val & maskType)) {
+ case UnicodeSpec.CONTROL:
+ result.append("Cc");
+ break;
+ case UnicodeSpec.FORMAT:
+ result.append("Cf");
+ break;
+ case UnicodeSpec.PRIVATE_USE:
+ result.append("Co");
+ break;
+ case UnicodeSpec.SURROGATE:
+ result.append("Cs");
+ break;
+ case UnicodeSpec.LOWERCASE_LETTER:
+ result.append("Ll");
+ break;
+ case UnicodeSpec.MODIFIER_LETTER:
+ result.append("Lm");
+ break;
+ case UnicodeSpec.OTHER_LETTER:
+ result.append("Lo");
+ break;
+ case UnicodeSpec.TITLECASE_LETTER:
+ result.append("Lt");
+ break;
+ case UnicodeSpec.UPPERCASE_LETTER:
+ result.append("Lu");
+ break;
+ case UnicodeSpec.COMBINING_SPACING_MARK:
+ result.append("Mc");
+ break;
+ case UnicodeSpec.ENCLOSING_MARK:
+ result.append("Me");
+ break;
+ case UnicodeSpec.NON_SPACING_MARK:
+ result.append("Mn");
+ break;
+ case UnicodeSpec.DECIMAL_DIGIT_NUMBER:
+ result.append("Nd");
+ break;
+ case UnicodeSpec.LETTER_NUMBER:
+ result.append("Nl");
+ break;
+ case UnicodeSpec.OTHER_NUMBER:
+ result.append("No");
+ break;
+ case UnicodeSpec.CONNECTOR_PUNCTUATION:
+ result.append("Pc");
+ break;
+ case UnicodeSpec.DASH_PUNCTUATION:
+ result.append("Pd");
+ break;
+ case UnicodeSpec.END_PUNCTUATION:
+ result.append("Pe");
+ break;
+ case UnicodeSpec.OTHER_PUNCTUATION:
+ result.append("Po");
+ break;
+ case UnicodeSpec.START_PUNCTUATION:
+ result.append("Ps");
+ break;
+ case UnicodeSpec.CURRENCY_SYMBOL:
+ result.append("Sc");
+ break;
+ case UnicodeSpec.MODIFIER_SYMBOL:
+ result.append("Sk");
+ break;
+ case UnicodeSpec.MATH_SYMBOL:
+ result.append("Sm");
+ break;
+ case UnicodeSpec.OTHER_SYMBOL:
+ result.append("So");
+ break;
+ case UnicodeSpec.LINE_SEPARATOR:
+ result.append("Zl"); break;
+ case UnicodeSpec.PARAGRAPH_SEPARATOR:
+ result.append("Zp");
+ break;
+ case UnicodeSpec.SPACE_SEPARATOR:
+ result.append("Zs");
+ break;
+ case UnicodeSpec.UNASSIGNED:
+ result.append("unassigned");
+ break;
+ }
+
+ switch ((int)((val & maskBidi) >> shiftBidi)) {
+ case UnicodeSpec.DIRECTIONALITY_LEFT_TO_RIGHT:
+ result.append(", L");
+ break;
+ case UnicodeSpec.DIRECTIONALITY_RIGHT_TO_LEFT:
+ result.append(", R");
+ break;
+ case UnicodeSpec.DIRECTIONALITY_EUROPEAN_NUMBER:
+ result.append(", EN");
+ break;
+ case UnicodeSpec.DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR:
+ result.append(", ES");
+ break;
+ case UnicodeSpec.DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR:
+ result.append(", ET");
+ break;
+ case UnicodeSpec.DIRECTIONALITY_ARABIC_NUMBER:
+ result.append(", AN");
+ break;
+ case UnicodeSpec.DIRECTIONALITY_COMMON_NUMBER_SEPARATOR:
+ result.append(", CS");
+ break;
+ case UnicodeSpec.DIRECTIONALITY_PARAGRAPH_SEPARATOR:
+ result.append(", B");
+ break;
+ case UnicodeSpec.DIRECTIONALITY_SEGMENT_SEPARATOR:
+ result.append(", S");
+ break;
+ case UnicodeSpec.DIRECTIONALITY_WHITESPACE:
+ result.append(", WS");
+ break;
+ case UnicodeSpec.DIRECTIONALITY_OTHER_NEUTRALS:
+ result.append(", ON");
+ break;
+ }
+ if ((val & maskUpperCase) != 0) {
+ result.append(", hasUpper (subtract ");
+ result.append((val & maskCaseOffset) >> shiftCaseOffset).append(")");
+ }
+ if ((val & maskLowerCase) != 0) {
+ result.append(", hasLower (add ");
+ result.append((val & maskCaseOffset) >> shiftCaseOffset).append(")");
+ }
+ if ((val & maskTitleCase) != 0) {
+ result.append(", hasTitle");
+ }
+ if ((val & maskIdentifierInfo) == valueIgnorable) {
+ result.append(", ignorable");
+ }
+ if ((val & maskIdentifierInfo) == valueJavaUnicodePart) {
+ result.append(", identifier part");
+ }
+ if ((val & maskIdentifierInfo) == valueJavaStartUnicodePart) {
+ result.append(", underscore");
+ }
+ if ((val & maskIdentifierInfo) == valueJavaWhitespace) {
+ result.append(", whitespace");
+ }
+ if ((val & maskIdentifierInfo) == valueJavaOnlyStart) {
+ result.append(", currency");
+ }
+ if ((val & maskIdentifierInfo) == valueJavaUnicodeStart) {
+ result.append(", identifier start");
+ }
+ if ((val & maskNumericType) == valueDigit) {
+ result.append(", decimal ");
+ result.append((val & maskDigitOffset) >> shiftDigitOffset);
+ }
+ if ((val & maskNumericType) == valueStrangeNumeric) {
+ result.append(", strange");
+ }
+ if ((val & maskNumericType) == valueJavaSupradecimal) {
+ result.append(", supradecimal ");
+ result.append((val & maskDigitOffset) >> shiftDigitOffset);
+ }
+ }
+
+ static String[] tableNames = { "X", "Y", "Z", "P", "Q", "R", "S", "T", "U", "V", "W" };
+
+ static String tableName(int j) { return tableNames[j]; }
+
+ /**
+ * The genAccess method generates source code for one table access expression.
+ *
+ * Most of the complexity stems from handling various options as to
+ * table representation, such as whether it contains values so large that
+ * they are represented as negative values and whether the table values are
+ * preshifted. This method also avoids such "ugly" expressions as shifting
+ * by distance zero, masking when no masking is necessary, and so on.
+ * For clarity, it generates expressions that do not rely on operator
+ * precedence, but otherwise it avoids generating redundant parentheses.
+ *
+ * A generated expression might look like A[Y[(X[ch>>6]<<6)|(ch&0x3F)]]
+ * or A[Z[Y[(X[ch>>7]<<4)|((ch>>3)&0xF)]|(ch&0x7)]], for example.
+ *
+ * @param tbl the name of the final table to be accessed
+ * @param var the variable name that appeared in parentheses in the
+ * "Lookup" command
+ * @param bits the number of bits (not bytes) to be used to represent
+ * the final table entry
+ * @return the replacement text for the "Lookup(xxx)" command, as a String
+ *
+ * @see GenerateCharacter#replaceCommand
+ */
+
+ static String genAccess(String tbl, String var, int bits) {
+ String access = null;
+ int bitoffset = bits == 1 ? 5 : bits == 2 ? 4 : bits == 4 ? 3 : 0;
+ for (int k = 0; k < sizes.length; k++) {
+ int offset = ((k < sizes.length - 1) ? 0 : bitoffset);
+ int shift = shifts[k] + offset;
+ String shifted = (shift == 0) ? var : "(" + var + ">>" + shift + ")";
+ int mask = (1 << (sizes[k] - offset)) - 1;
+ String masked = (k == 0) ? shifted :
+ "(" + shifted + "&0x" + hex(mask) + ")";
+ String index = (k == 0) ? masked :
+ (mask == 0) ? access : "(" + access + "|" + masked + ")";
+ String indexNoParens = (index.charAt(0) != '(') ? index :
+ index.substring(1, index.length() - 1);
+ String tblname = (k == sizes.length - 1) ? tbl : tableName(k);
+ String fetched = tblname + "[" + indexNoParens + "]";
+ String zeroextended = (zeroextend[k] == 0) ? fetched :
+ "(" + fetched + "&0x" + hex(zeroextend[k]) + ")";
+ int adjustment = preshifted[k] ? 0 :
+ sizes[k+1] - ((k == sizes.length - 2) ? bitoffset : 0);
+ String adjusted = (preshifted[k] || adjustment == 0) ? zeroextended :
+ "(" + zeroextended + "<<" + adjustment + ")";
+ String bitshift = (bits == 1) ? "(" + var + "&0x1F)" :
+ (bits == 2) ? "((" + var + "&0xF)<<1)" :
+ (bits == 4) ? "((" + var + "&7)<<2)" : null;
+ String extracted = ((k < sizes.length - 1) || (bits >= 8)) ? adjusted :
+ "((" + adjusted + ">>" + bitshift + ")&" +
+ (bits == 4 ? "0xF" : "" + ((1 << bits) - 1)) + ")";
+ access = extracted;
+ }
+ return access;
+ }
+
+ /* The command line arguments are decoded and used to set the following
+ global variables.
+ */
+
+ static boolean verbose = false;
+ static boolean nobidi = false;
+ static boolean nomirror = false;
+ static boolean identifiers = false;
+ static boolean Csyntax = false;
+ static String TemplateFileName = null;
+ static String OutputFileName = null;
+ static String UnicodeSpecFileName = null; // liu
+ static String SpecialCasingFileName = null;
+ static boolean useCharForByte = false;
+ static int[] sizes;
+ static int bins = 0; // liu; if > 0, then perform search
+ static boolean tableAsString = false;
+ static boolean bLatin1 = false;
+
+ static String commandLineDescription;
+
+ /* Other global variables, equal in length to the "sizes" array. */
+
+ static int[] shifts;
+ static int[] zeroextend;
+ static int[] bytes;
+ static boolean[] preshifted;
+ static long[][] tables;
+
+
+ /* Other global variables */
+ static String commentStart;
+ static String commentEnd;
+
+ static StringBuffer initializers = new StringBuffer();
+
+ /* special casing rules for 1:M toUpperCase mappings */
+ static SpecialCaseMap[] specialCaseMaps;
+
+ /**
+ * Process the command line arguments.
+ *
+ * The allowed flags in command line are:
+ * <dl>
+ * <dt> -verbose <dd> Emit comments to standard output describing
+ * what's going on during the processing.
+ * <dt> -nobidi <dd> Do not include bidi categories in the
+ * encoded character properties.
+ * <dt> -nomirror <dd> Do no include mirror property in the encoded
+ * character properties.
+ * <dt> -identifiers <dd> Generate tables for scanning identifiers only.
+ * <dt> -c <dd> Output code in C syntax instead of Java syntax.
+ * <dt> -o filename <dd> Specify output file name.
+ * <dt> -template filename <dd> Specify template input file name.
+ * <dt> -spec filename <dd> Specify Unicode spec file name.
+ * <dt> -specialcasing filename <dd> Specify Unicode special casing file name.
+ * <dt> -search bins <dd> Try different partitions into the specified
+ * number of bins. E.g., for 2 bins, try
+ * 16 0, 15 1,..., 0 16.
+ * <dt> -string <dd> Create table as string. Only valid with Java
+ * syntax.
+ * <dt> -latin1 <dd> Create a latin 1 only property table.
+ * </dl>
+ * In addition, decimal literals may appear as command line arguments;
+ * each one represents the number of bits of the character to be broken
+ * off at each lookup step. If present, they must add up to 16 (the number
+ * of bits in a char value). For smaller tables, the last value should
+ * be 0; values other than the last one may not be zero. If no such
+ * numeric values are provided, default values are used.
+ *
+ * @param args the command line arguments, as an array of String
+ *
+ * @see GenerateCharacter#main
+ */
+
+ static void processArgs(String[] args) {
+ StringBuffer desc = new StringBuffer("java GenerateCharacter");
+ for (int j=0; j<args.length; ++j) {
+ desc.append(" " + args[j]);
+ }
+ for (int j = 0; j < args.length; j++) {
+ if (args[j].equals("-verbose") || args[j].equals("-v"))
+ verbose = true;
+ else if (args[j].equals("-nobidi"))
+ nobidi = true;
+ else if (args[j].equals("-nomirror"))
+ nomirror = true;
+ else if (args[j].equals("-identifiers"))
+ identifiers = true;
+ else if (args[j].equals("-c"))
+ Csyntax = true;
+ else if (args[j].equals("-string"))
+ tableAsString = true;
+ else if (args[j].equals("-o")) {
+ if (j == args.length - 1) {
+ FAIL("File name missing after -o");
+ }
+ else {
+ OutputFileName = args[++j];
+ }
+ }
+ else if (args[j].equals("-search")) {
+ if (j == args.length - 1)
+ FAIL("Bin count missing after -search");
+ else {
+ bins = Integer.parseInt(args[++j]);
+ if (bins < 1 || bins > 10)
+ FAIL("Bin count must be >= 1 and <= 10");
+ }
+ }
+ else if (args[j].equals("-template")) {
+ if (j == args.length - 1)
+ FAIL("File name missing after -template");
+ else
+ TemplateFileName = args[++j];
+ }
+ else if (args[j].equals("-spec")) { // liu
+ if (j == args.length - 1) {
+ FAIL("File name missing after -spec");
+ }
+ else {
+ UnicodeSpecFileName = args[++j];
+ }
+ }
+ else if (args[j].equals("-specialcasing")) {
+ if (j == args.length -1) {
+ FAIL("File name missing after -specialcasing");
+ }
+ else {
+ SpecialCasingFileName = args[++j];
+ }
+ }
+ else if (args[j].equals("-plane")) {
+ if (j == args.length -1) {
+ FAIL("Plane number missing after -plane");
+ }
+ else {
+ plane = Integer.parseInt(args[++j]);
+ }
+ if (plane > 0) {
+ bLatin1 = false;
+ }
+ }
+ else if ("-usecharforbyte".equals(args[j])) {
+ useCharForByte = true;
+ }
+ else if (args[j].equals("-latin1")) {
+ bLatin1 = true;
+ plane = 0;
+ }
+ else {
+ try {
+ int val = Integer.parseInt(args[j]);
+ if (val < 0 || val > 32) FAIL("Incorrect bit field width: " + args[j]);
+ if (sizes == null)
+ sizes = new int[1];
+ else {
+ int[] newsizes = new int[sizes.length + 1];
+ System.arraycopy(sizes, 0, newsizes, 0, sizes.length);
+ sizes = newsizes;
+ }
+ sizes[sizes.length - 1] = val;
+ }
+ catch(NumberFormatException e) {
+ FAIL("Unknown switch: " + args[j]);
+ }
+ }
+ }
+ if (Csyntax && tableAsString) {
+ FAIL("Can't specify table as string with C syntax");
+ }
+ if (sizes == null) {
+ desc.append(" [");
+ if (identifiers) {
+ int[] newsizes = { 8, 4, 4 }; // Good default values
+ desc.append("8 4 4]");
+ sizes = newsizes;
+ }
+ else {
+ int[] newsizes = { 10, 5, 1 }; // Guy's old defaults for 2.0.14: { 9, 4, 3, 0 }
+ desc.append("10 5 1]");
+ sizes = newsizes;
+ }
+ }
+ if (UnicodeSpecFileName == null) { // liu
+ UnicodeSpecFileName = DefaultUnicodeSpecFileName;
+ desc.append(" [-spec " + UnicodeSpecFileName + ']');
+ }
+ if (SpecialCasingFileName == null) {
+ SpecialCasingFileName = DefaultSpecialCasingFileName;
+ desc.append(" [-specialcasing " + SpecialCasingFileName + ']');
+ }
+ if (TemplateFileName == null) {
+ TemplateFileName = (Csyntax ? DefaultCTemplateFileName
+ : DefaultJavaTemplateFileName);
+ desc.append(" [-template " + TemplateFileName + ']');
+ }
+ if (OutputFileName == null) {
+ OutputFileName = (Csyntax ? DefaultCOutputFileName
+ : DefaultJavaOutputFileName);
+ desc.append(" [-o " + OutputFileName + ']');
+ }
+ commentStart = (Csyntax ? "/*" : "//");
+ commentEnd = (Csyntax ? " */" : "");
+ commandLineDescription = desc.toString();
+ }
+
+ private static void searchBins(long[] map, int binsOccupied) throws Exception {
+ int bitsFree = 16;
+ for (int i=0; i<binsOccupied; ++i) bitsFree -= sizes[i];
+ if (binsOccupied == (bins-1)) {
+ sizes[binsOccupied] = bitsFree;
+ generateForSizes(map);
+ }
+ else {
+ for (int i=1; i<bitsFree; ++i) { // Don't allow bins of 0 except for last one
+ sizes[binsOccupied] = i;
+ searchBins(map, binsOccupied+1);
+ }
+ }
+ }
+
+ private static void generateForSizes(long[] map) throws Exception {
+ int sum = 0;
+ shifts = new int[sizes.length];
+ for (int k = sizes.length - 1; k >= 0; k--) {
+ shifts[k] = sum;
+ sum += sizes[k];
+ }
+ if ((1 << sum) < map.length || (1 << (sum - 1)) >= map.length) {
+ FAIL("Bit field widths total to " + sum +
+ ": wrong total for map of size " + map.length);
+ }
+ // need a table for each set of lookup bits in char
+ tables = new long[sizes.length][];
+ // the last table is the map
+ tables[sizes.length - 1] = map;
+ for (int j = sizes.length - 1; j > 0; j--) {
+ if (verbose && bins==0)
+ System.err.println("Building map " + (j+1) + " of bit width " + sizes[j]);
+ long[][] temp = buildTable(tables[j], sizes[j]);
+ tables[j-1] = temp[0];
+ tables[j] = temp[1];
+ }
+ preshifted = new boolean[sizes.length];
+ zeroextend = new int[sizes.length];
+ bytes = new int[sizes.length];
+ for (int j = 0; j < sizes.length - 1; j++) {
+ int len = tables[j+1].length;
+ int size = sizes[j+1];
+ if (len > 0x100 && (len >> size) <= 0x100) {
+ len >>= size;
+ preshifted[j] = false;
+ }
+ else if (len > 0x10000 && (len >> size) <= 0x10000) {
+ len >>= size;
+ preshifted[j] = false;
+ }
+ else preshifted[j] = true;
+ if (Csyntax)
+ zeroextend[j] = 0;
+ else if (len > 0x7F && len <= 0xFF) {
+ if (!useCharForByte) {
+ zeroextend[j] = 0xFF;
+ }
+ } else if (len > 0x7FFF && len <= 0xFFFF)
+ zeroextend[j] = 0xFFFF;
+ else zeroextend[j] = 0;
+ if (len <= 0x100) bytes[j] = 1;
+ else if (len <= 0x10000) bytes[j] = 2;
+ else bytes[j] = 4;
+ }
+ preshifted[sizes.length - 1] = true;
+ zeroextend[sizes.length - 1] = 0;
+ bytes[sizes.length - 1] = 0;
+ if (bins > 0) {
+ int totalBytes = getTotalBytes();
+ String access = genAccess("A", "ch", (identifiers ? 2 : 32));
+ int accessComplexity = 0;
+ for (int j=0; j<access.length(); ++j) {
+ char ch = access.charAt(j);
+ if ("[&|><".indexOf(ch) >= 0) ++accessComplexity;
+ if (ch == '<' || ch == '>') ++j;
+ }
+ System.out.print("(");
+ for (int j=0; j<sizes.length; ++j) System.out.print(" " + sizes[j]);
+ System.out.println(" ) " + totalBytes + " " + accessComplexity + " " + access);
+ return;
+ }
+ if (verbose) {
+ System.out.println(" n\t size\tlength\tshift\tzeroext\tbytes\tpreshifted");
+ for (int j = 0; j < sizes.length; j++) {
+ System.out.println(dec5(j) + "\t" +
+ dec5(sizes[j]) + "\t" +
+ dec5(tables[j].length) + "\t" +
+ dec5(shifts[j]) + "\t" +
+ dec5(zeroextend[j]) + "\t" +
+ dec5(bytes[j]) + "\t " +
+ preshifted[j]);
+ }
+ }
+ if (verbose) {
+ System.out.println("Generating source code for class Character");
+ System.out.println("A table access looks like " +
+ genAccess("A", "ch", (identifiers ? 2 : 32)));
+ }
+ generateCharacterClass(TemplateFileName, OutputFileName);
+ }
+
+ /**
+ * The main program for generating source code for the Character class.
+ * The basic outline of its operation is:
+ * <ol>
+ * <li> Process the command line arguments. One result of this process
+ * is a list of sizes (measured in bits and summing to 16).
+ * <li> Get the Unicode character property data from the specification file.
+ * <li> From that, build a map that has, for each character code, its
+ * relevant properties encoded as a long integer value.
+ * <li> Repeatedly compress the map, producing a compressed table and a
+ * new map. This is done once for each size value in the list.
+ * When this is done, we have a set of tables.
+ * <li> Make some decisions about table representation; record these
+ * decisions in arrays named preshifted, zeroextend, and bytes.
+ * <li> Generate the source code for the class Character by performing
+ * macro processing on a template file.
+ * </ol>
+ *
+ * @param args the command line arguments, as an array of String
+ *
+ * @see GenerateCharacter#processArgs
+ * @see UnicodeSpec@readSpecFile
+ * @see GenerateCharacter#buildMap
+ * @see GenerateCharacter#buildTable
+ * @see GenerateCharacter#generateCharacterClass
+ */
+
+ public static void main(String[] args) {
+ processArgs(args);
+ try {
+
+ UnicodeSpec[] data = UnicodeSpec.readSpecFile(new File(UnicodeSpecFileName), plane);
+
+ specialCaseMaps = SpecialCaseMap.readSpecFile(new File(SpecialCasingFileName), plane);
+ if (verbose) {
+ System.out.println(data.length + " items read from Unicode spec file " + UnicodeSpecFileName); // liu
+ }
+ long[] map = buildMap(data, specialCaseMaps);
+ if (verbose) {
+ System.err.println("Completed building of initial map");
+ }
+
+ if (bins == 0) {
+ generateForSizes(map);
+ }
+ else {
+ while (bins > 0) {
+ sizes = new int[bins];
+ searchBins(map, 0);
+ --bins;
+ }
+ }
+ if (verbose && false) {
+ System.out.println("Offset range seen: -" + hex8(-minOffsetSeen) + "..+" +
+ hex8(maxOffsetSeen));
+ System.out.println(" allowed: -" + hex8(-minOffset) + "..+" +
+ hex8(maxOffset));
+ }
+ }
+ catch (FileNotFoundException e) { FAIL(e.toString()); }
+ catch (IOException e) { FAIL(e.toString()); }
+ catch (Throwable e) {
+ System.out.println("Unexpected exception:");
+ e.printStackTrace();
+ FAIL("Unexpected exception!");
+ }
+ if (verbose) { System.out.println("Done!");}
+ }
+
+} // end class
diff --git a/jdk/make/tools/src/build/tools/generatecharacter/PrintCharacterRanges.java b/jdk/make/tools/src/build/tools/generatecharacter/PrintCharacterRanges.java
new file mode 100644
index 0000000..67d906f
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/generatecharacter/PrintCharacterRanges.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.generatecharacter;
+
+import java.lang.reflect.*;
+import java.util.*;
+
+/** Recovers and prints ranges for certain java.lang.Character
+ properties. Useful for generating fast-path Latin-1 code. */
+
+public class PrintCharacterRanges {
+ static class BooleanRange {
+ private int begin;
+ private int end;
+
+ BooleanRange(int begin, int end) {
+ this.begin = begin;
+ this.end = end;
+ }
+
+ int begin() { return begin; }
+ int end() { return end; }
+ }
+
+ private static List/*<BooleanRange>*/ recoverBooleanRanges(String methodName) throws Exception {
+ List result = new ArrayList();
+ int currentRangeStart = -1;
+ Method method = Character.class.getDeclaredMethod(methodName, new Class[] { Character.TYPE });
+ if (method == null) {
+ throw new RuntimeException("No method \"" + methodName + "\"(C) found");
+ }
+
+ for (int i = 0; i <= 255; i++) {
+ boolean methodRes = ((Boolean) method.invoke(null, new Object[] { new Character((char) i) })).booleanValue();
+ if (methodRes) {
+ if (currentRangeStart < 0) {
+ currentRangeStart = i;
+ }
+ if (i == 255) {
+ result.add(new BooleanRange(currentRangeStart, i));
+ }
+ } else {
+ if (currentRangeStart >= 0) {
+ result.add(new BooleanRange(currentRangeStart, i - 1));
+ currentRangeStart = -1;
+ }
+ }
+ }
+
+ return result;
+ }
+
+ private static String describe(int num) {
+ StringBuffer s = new StringBuffer();
+ s.append(num);
+ s.append(" ('");
+ if (num > 32 && num < 123) {
+ s.append((char) num);
+ } else {
+ s.append("\\u");
+ String hex = Long.toHexString(num).toUpperCase();
+ for (int i = 0; i < (4 - hex.length()); i++) {
+ s.append('0');
+ }
+ s.append(hex);
+ }
+ s.append("')");
+ return s.toString();
+ }
+
+ private static void printBooleanRanges(List/*<BooleanRange>*/ ranges, String methodName) {
+ System.out.print(methodName + ":");
+ for (Iterator iter = ranges.iterator(); iter.hasNext();) {
+ BooleanRange range = (BooleanRange) iter.next();
+ System.out.print(" [ " + describe(range.begin()) + ", " + describe(range.end()) + " ]");
+ }
+ System.out.println("");
+ }
+
+ private static void recoverAndPrintBooleanRanges(String methodName) throws Exception {
+ List ranges = recoverBooleanRanges(methodName);
+ printBooleanRanges(ranges, methodName);
+ }
+
+ static class ShiftRange {
+ private int begin;
+ private int end;
+ private int offset;
+
+ ShiftRange(int begin, int end, int offset) {
+ this.begin = begin;
+ this.end = end;
+ this.offset = offset;
+ }
+
+ int begin() { return begin; }
+ int end() { return end; }
+ int offset() { return offset; }
+ }
+
+ private static List/*<ShiftRange>*/ recoverShiftRanges(String methodName) throws Exception {
+ List result = new ArrayList();
+ int currentRangeStart = -1;
+ int currentRangeOffset = -1;
+ Method method = Character.class.getDeclaredMethod(methodName, new Class[] { Character.TYPE });
+ if (method == null) {
+ throw new RuntimeException("No method \"" + methodName + "\"(C) found");
+ }
+
+ for (int i = 0; i <= 255; i++) {
+ char methodRes = ((Character) method.invoke(null, new Object[] { new Character((char) i) })).charValue();
+ if (methodRes != i) {
+ int offset = methodRes - i;
+ if (currentRangeStart < 0) {
+ currentRangeStart = i;
+ } else if (offset != currentRangeOffset) {
+ result.add(new ShiftRange(currentRangeStart, i - 1, currentRangeOffset));
+ currentRangeStart = i;
+ }
+ currentRangeOffset = offset;
+ if (i == 255) {
+ result.add(new ShiftRange(currentRangeStart, i, currentRangeOffset));
+ }
+ } else {
+ if (currentRangeStart >= 0) {
+ result.add(new ShiftRange(currentRangeStart, i - 1, currentRangeOffset));
+ currentRangeStart = -1;
+ }
+ }
+ }
+
+ return result;
+ }
+
+ private static void printShiftRanges(List/*<ShiftRange>*/ ranges, String methodName) {
+ System.out.print(methodName + ":");
+ boolean isFirst = true;
+ for (Iterator iter = ranges.iterator(); iter.hasNext();) {
+ ShiftRange range = (ShiftRange) iter.next();
+ if (isFirst) {
+ isFirst = false;
+ } else {
+ System.out.print(", ");
+ }
+ System.out.print(" [ " + describe(range.begin()) + ", " + describe(range.end()) + " ] -> [ " +
+ describe((range.begin() + range.offset())) + ", " + describe((range.end() + range.offset())) + " ] (" +
+ range.offset() + ")");
+ }
+ System.out.println("");
+ }
+
+ private static void recoverAndPrintShiftRanges(String methodName) throws Exception {
+ List ranges = recoverShiftRanges(methodName);
+ printShiftRanges(ranges, methodName);
+ }
+
+ public static void main(String[] args) {
+ try {
+ recoverAndPrintBooleanRanges("isDefined");
+ recoverAndPrintBooleanRanges("isDigit");
+ recoverAndPrintBooleanRanges("isIdentifierIgnorable");
+ recoverAndPrintBooleanRanges("isISOControl");
+ recoverAndPrintBooleanRanges("isJavaIdentifierPart");
+ recoverAndPrintBooleanRanges("isJavaIdentifierStart");
+ recoverAndPrintBooleanRanges("isLetter");
+ recoverAndPrintBooleanRanges("isLetterOrDigit");
+ recoverAndPrintBooleanRanges("isLowerCase");
+ recoverAndPrintBooleanRanges("isMirrored");
+ recoverAndPrintBooleanRanges("isSpaceChar");
+ recoverAndPrintBooleanRanges("isTitleCase");
+ recoverAndPrintBooleanRanges("isUnicodeIdentifierPart");
+ recoverAndPrintBooleanRanges("isUnicodeIdentifierStart");
+ recoverAndPrintBooleanRanges("isUpperCase");
+ recoverAndPrintBooleanRanges("isWhitespace");
+
+ recoverAndPrintShiftRanges("toUpperCase");
+ recoverAndPrintShiftRanges("toLowerCase");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/generatecharacter/SpecialCaseMap.java b/jdk/make/tools/src/build/tools/generatecharacter/SpecialCaseMap.java
new file mode 100644
index 0000000..0a61d64
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/generatecharacter/SpecialCaseMap.java
@@ -0,0 +1,357 @@
+/*
+ * Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.generatecharacter;
+
+import java.io.*;
+import java.util.*;
+import java.lang.*;
+
+/**
+ * SpecialCaseMap has the responsibility of storing the
+ * 1:M, locale-sensitive, and context sensitive case mappings
+ * that occur when uppercasing Unicode 4.0 characters. This class can
+ * read and parse the SpecialCasing.txt file that contains those mappings.
+ * <p>
+ * A single SpecialCaseMap contains the mapping for one character.
+ * <p>
+ * @author John O'Conner
+ */
+public class SpecialCaseMap implements Comparable {
+
+ SpecialCaseMap() {
+ chSource = 0xFFFF;
+ }
+
+
+ /**
+ * Read and parse a Unicode special case map file.
+ *
+ * @param file a file specifying the Unicode special case mappings
+ * @return an array of SpecialCaseMap objects, one for each line of the
+ * special case map data file that could be successfully parsed
+ */
+
+ public static SpecialCaseMap[] readSpecFile(File file, int plane) throws FileNotFoundException {
+ ArrayList caseMaps = new ArrayList(150);
+ int count = 0;
+ BufferedReader f = new BufferedReader(new FileReader(file));
+ String line = null;
+ loop:
+ while(true) {
+ try {
+ line = f.readLine();
+ }
+ catch (IOException e) { break loop; }
+ if (line == null) break loop;
+ SpecialCaseMap item = parse(line.trim());
+ if (item != null) {
+ if(item.getCharSource() >> 16 < plane) continue;
+ if((int)(item.getCharSource() >> 16) > plane) break;
+ caseMaps.add(item);
+ ++count;
+ }
+
+ }
+ caseMaps.trimToSize();
+ SpecialCaseMap[] result = new SpecialCaseMap[caseMaps.size()];
+ caseMaps.toArray(result);
+ Arrays.sort(result);
+ return result;
+
+ }
+
+ /**
+ * Given one line of a Unicode special casing data file as a String, parse the line
+ * and return a SpecialCaseMap object that contains the case mapping.
+ *
+ * @param s a line of the Unicode special case map data file to be parsed
+ * @return a SpecialCaseMap object, or null if the parsing process failed for some reason
+ */
+ public static SpecialCaseMap parse(String s) {
+ SpecialCaseMap spec = null;
+ String[] tokens = new String[REQUIRED_FIELDS];
+ if ( s != null && s.length() != 0 && s.charAt(0) != '#') {
+ try {
+ int x = 0, tokenStart = 0, tokenEnd = 0;
+ for (x=0; x<REQUIRED_FIELDS-1; x++) {
+ tokenEnd = s.indexOf(';', tokenStart);
+ tokens[x] = s.substring(tokenStart, tokenEnd);
+ tokenStart = tokenEnd+1;
+ }
+ tokens[x] = s.substring(tokenStart);
+
+ if(tokens[FIELD_CONDITIONS].indexOf(';') == -1) {
+ spec = new SpecialCaseMap();
+ spec.setCharSource(parseChar(tokens[FIELD_SOURCE]));
+ spec.setUpperCaseMap(parseCaseMap(tokens[FIELD_UPPERCASE]));
+ spec.setLowerCaseMap(parseCaseMap(tokens[FIELD_LOWERCASE]));
+ spec.setTitleCaseMap(parseCaseMap(tokens[FIELD_TITLECASE]));
+ spec.setLocale(parseLocale(tokens[FIELD_CONDITIONS]));
+ spec.setContext(parseContext(tokens[FIELD_CONDITIONS]));
+ }
+ }
+ catch(Exception e) {
+ spec = null;
+ System.out.println("Error parsing spec line.");
+ }
+ }
+ return spec;
+ }
+
+ static int parseChar(String token) throws NumberFormatException {
+ return Integer.parseInt(token, 16);
+ }
+
+ static char[] parseCaseMap(String token ) throws NumberFormatException {
+ int pos = 0;
+ StringBuffer buff = new StringBuffer();
+ int start = 0, end = 0;
+ while(pos < token.length() ){
+ while(Character.isSpaceChar(token.charAt(pos++)));
+ --pos;
+ start = pos;
+ while(pos < token.length() && !Character.isSpaceChar(token.charAt(pos))) pos++;
+ end = pos;
+ int ch = parseChar(token.substring(start,end));
+ if (ch > 0xFFFF) {
+ buff.append(getHighSurrogate(ch));
+ buff.append(getLowSurrogate(ch));
+ } else {
+ buff.append((char)ch);
+ }
+ }
+ char[] map = new char[buff.length()];
+ buff.getChars(0, buff.length(), map, 0);
+ return map;
+ }
+
+ static Locale parseLocale(String token) {
+ return null;
+ }
+
+ static String[] parseContext(String token) {
+ return null;
+ }
+
+ static int find(int ch, SpecialCaseMap[] map) {
+ if ((map == null) || (map.length == 0)) {
+ return -1;
+ }
+ int top, bottom, current;
+ bottom = 0;
+ top = map.length;
+ current = top/2;
+ // invariant: top > current >= bottom && ch >= map.chSource
+ while (top - bottom > 1) {
+ if (ch >= map[current].getCharSource()) {
+ bottom = current;
+ } else {
+ top = current;
+ }
+ current = (top + bottom) / 2;
+ }
+ if (ch == map[current].getCharSource()) return current;
+ else return -1;
+ }
+
+ /*
+ * Extracts and returns the high surrogate value from a UTF-32 code point.
+ * If argument is a BMP character, then it is converted to a char and returned;
+ * otherwise the high surrogate value is extracted.
+ * @param codePoint a UTF-32 codePoint with value greater than 0xFFFF.
+ * @return the high surrogate value that helps create <code>codePoint</code>; else
+ * the char representation of <code>codePoint</code> if it is a BMP character.
+ * @since 1.5
+ */
+ static char getHighSurrogate(int codePoint) {
+ char high = (char)codePoint;
+ if (codePoint > 0xFFFF) {
+ high = (char)((codePoint - 0x10000)/0x0400 + 0xD800);
+ }
+ return high;
+ }
+
+
+ /*
+ * Extracts and returns the low surrogate value from a UTF-32 code point.
+ * If argument is a BMP character, then it is converted to a char and returned;
+ * otherwise the high surrogate value is extracted.
+ * @param codePoint a UTF-32 codePoint with value greater than 0xFFFF.
+ * @return the low surrogate value that helps create <code>codePoint</code>; else
+ * the char representation of <code>codePoint</code> if it is a BMP character.
+ * @since 1.5
+ */
+ static char getLowSurrogate(int codePoint) {
+ char low = (char)codePoint;
+ if(codePoint > 0xFFFF) {
+ low = (char)((codePoint - 0x10000)%0x0400 + 0xDC00);
+ }
+ return low;
+ }
+
+ static String hex6(int n) {
+ String str = Integer.toHexString(n & 0xFFFFFF).toUpperCase();
+ return "000000".substring(Math.min(6, str.length())) + str;
+
+ }
+
+ static String hex6(char[] map){
+ StringBuffer buff = new StringBuffer();
+ int x=0;
+ buff.append(hex6(map[x++]));
+ while(x<map.length) {
+ buff.append(" " + hex6(map[x++]));
+ }
+ return buff.toString();
+ }
+
+ void setCharSource(int ch) {
+ chSource = ch;
+ }
+
+ void setLowerCaseMap(char[] map) {
+ lowerCaseMap = map;
+ }
+
+ void setUpperCaseMap(char[] map) {
+ upperCaseMap = map;
+ }
+
+ void setTitleCaseMap(char[] map) {
+ titleCaseMap = map;
+ }
+
+ void setLocale(Locale locale) {
+ this.locale = locale;
+ }
+
+ void setContext(String[] context) {
+ this.context = context;
+ }
+
+ public int getCharSource() {
+ return chSource;
+ }
+
+ public char[] getLowerCaseMap() {
+ return lowerCaseMap;
+ }
+
+ public char[] getUpperCaseMap() {
+ return upperCaseMap;
+ }
+
+ public char[] getTitleCaseMap() {
+ return titleCaseMap;
+ }
+
+ public Locale getLocale() {
+ return locale;
+ }
+
+ public String[] getContext() {
+ return context;
+ }
+
+
+ int chSource;
+ Locale locale;
+ char[] lowerCaseMap;
+ char[] upperCaseMap;
+ char[] titleCaseMap;
+ String[] context;
+
+ /**
+ * Fields that can be found in the SpecialCasing.txt file.
+ */
+ static int REQUIRED_FIELDS = 5;
+ static int FIELD_SOURCE = 0;
+ static int FIELD_LOWERCASE = 1;
+ static int FIELD_TITLECASE = 2;
+ static int FIELD_UPPERCASE = 3;
+ static int FIELD_CONDITIONS = 4;
+
+ /**
+ * Context values
+ */
+ static String CONTEXT_FINAL = "FINAL";
+ static String CONTEXT_NONFINAL = "NON_FINAL";
+ static String CONTEXT_MODERN = "MODERN";
+ static String CONTEXT_NONMODERN = "NON_MODERN";
+
+ public int compareTo(Object otherObject) {
+ SpecialCaseMap other = (SpecialCaseMap)otherObject;
+ if (chSource < other.chSource) {
+ return -1;
+ }
+ else if (chSource > other.chSource) {
+ return 1;
+ }
+ else return 0;
+ }
+
+ public boolean equals(Object o1) {
+ boolean bEqual = false;
+ if (0 == compareTo(o1)) {
+ bEqual = true;
+ }
+ return bEqual;
+ }
+
+ public String toString() {
+ StringBuffer buff = new StringBuffer();
+ buff.append(hex6(getCharSource()));
+ buff.append("|" + hex6(lowerCaseMap));
+ buff.append("|" + hex6(upperCaseMap));
+ buff.append("|" + hex6(titleCaseMap));
+ buff.append("|" + context);
+ return buff.toString();
+ }
+
+ public int hashCode() {
+ return (int)chSource;
+ }
+
+ public static void main(String[] args) {
+ SpecialCaseMap[] spec = null;
+ if (args.length == 2 ) {
+ try {
+ File file = new File(args[0]);
+ int plane = Integer.parseInt(args[1]);
+ spec = SpecialCaseMap.readSpecFile(file, plane);
+ System.out.println("SpecialCaseMap[" + spec.length + "]:");
+ for (int x=0; x<spec.length; x++) {
+ System.out.println(spec[x].toString());
+ }
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+}
diff --git a/jdk/make/tools/src/build/tools/generatecharacter/UnicodeSpec.java b/jdk/make/tools/src/build/tools/generatecharacter/UnicodeSpec.java
new file mode 100644
index 0000000..fe0f06a
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/generatecharacter/UnicodeSpec.java
@@ -0,0 +1,767 @@
+/*
+ * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.generatecharacter;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.StringTokenizer;
+import java.io.File;
+import java.util.regex.Pattern;
+import java.util.ArrayList;
+
+/**
+ * The UnicodeSpec class provides a way to read in Unicode character
+ * properties from a Unicode data file. One instance of class UnicodeSpec
+ * holds a decoded version of one line of the data file. The file may
+ * be obtained from www.unicode.org. The method readSpecFile returns an array
+ * of UnicodeSpec objects.
+ * @author Guy Steele
+ * @author John O'Conner
+ */
+
+public class UnicodeSpec {
+
+ private static final int MAP_UNDEFINED = 0xFFFFFFFF;
+
+ /**
+ * Construct a default UnicodeSpec object, with a default
+ * code point value 0xFFFF.
+ *
+ */
+ public UnicodeSpec() {
+ this(0xffff);
+ }
+
+ /**
+ * Construct a UnicodeSpec object for the given <code>codePoint<code>
+ * argument. Provide default properties.
+ * @param codePoint a Unicode code point between 0x0000 and 0x10FFFF
+ */
+ public UnicodeSpec(int codePoint) {
+ this.codePoint = codePoint;
+ generalCategory = UNASSIGNED;
+ bidiCategory = DIRECTIONALITY_UNDEFINED;
+ mirrored = false;
+ titleMap = MAP_UNDEFINED;
+ upperMap = MAP_UNDEFINED;
+ lowerMap = MAP_UNDEFINED;
+ decimalValue = -1;
+ digitValue = -1;
+ numericValue = "";
+ oldName = null;
+ comment = null;
+ name = null;
+ }
+
+ /**
+ * Create a String representation of this UnicodeSpec object.
+ * The string will contain the code point and all its case mappings
+ * if available.
+ */
+ public String toString() {
+ StringBuffer result = new StringBuffer(hex6(codePoint));
+ if (getUpperMap() != MAP_UNDEFINED) {
+ result.append(", upper=").append(hex6(upperMap));
+ }
+ if (getLowerMap() != MAP_UNDEFINED) {
+ result.append(", lower=").append(hex6(lowerMap));
+ }
+ if (getTitleMap() != MAP_UNDEFINED) {
+ result.append(", title=").append(hex6(titleMap));
+ }
+ return result.toString();
+ }
+
+ static String hex4(int n) {
+ String q = Integer.toHexString(n & 0xFFFF).toUpperCase();
+ return "0000".substring(Math.min(4, q.length())) + q;
+ }
+
+ static String hex6(int n) {
+ String str = Integer.toHexString(n & 0xFFFFFF).toUpperCase();
+ return "000000".substring(Math.min(6, str.length())) + str;
+
+ }
+
+
+ /**
+ * Given one line of a Unicode data file as a String, parse the line
+ * and return a UnicodeSpec object that contains the same character information.
+ *
+ * @param s a line of the Unicode data file to be parsed
+ * @return a UnicodeSpec object, or null if the parsing process failed for some reason
+ */
+ public static UnicodeSpec parse(String s) {
+ UnicodeSpec spec = null;
+ String[] tokens = null;
+
+ try {
+ tokens = tokenSeparator.split(s, REQUIRED_FIELDS);
+ spec = new UnicodeSpec();
+ spec.setCodePoint(parseCodePoint(tokens[FIELD_VALUE]));
+ spec.setName(parseName(tokens[FIELD_NAME]));
+ spec.setGeneralCategory(parseGeneralCategory(tokens[FIELD_CATEGORY]));
+ spec.setBidiCategory(parseBidiCategory(tokens[FIELD_BIDI]));
+ spec.setCombiningClass(parseCombiningClass(tokens[FIELD_CLASS]));
+ spec.setDecomposition(parseDecomposition(tokens[FIELD_DECOMPOSITION]));
+ spec.setDecimalValue(parseDecimalValue(tokens[FIELD_DECIMAL]));
+ spec.setDigitValue(parseDigitValue(tokens[FIELD_DIGIT]));
+ spec.setNumericValue(parseNumericValue(tokens[FIELD_NUMERIC]));
+ spec.setMirrored(parseMirrored(tokens[FIELD_MIRRORED]));
+ spec.setOldName(parseOldName(tokens[FIELD_OLDNAME]));
+ spec.setComment(parseComment(tokens[FIELD_COMMENT]));
+ spec.setUpperMap(parseUpperMap(tokens[FIELD_UPPERCASE]));
+ spec.setLowerMap(parseLowerMap(tokens[FIELD_LOWERCASE]));
+ spec.setTitleMap(parseTitleMap(tokens[FIELD_TITLECASE]));
+ }
+
+ catch(Exception e) {
+ spec = null;
+ System.out.println("Error parsing spec line.");
+ }
+ return spec;
+ }
+
+ /**
+ * Parse the codePoint attribute for a Unicode character. If the parse succeeds,
+ * the codePoint field of this UnicodeSpec object is updated and false is returned.
+ *
+ * The codePoint attribute should be a four to six digit hexadecimal integer.
+ *
+ * @param s the codePoint attribute extracted from a line of the Unicode data file
+ * @return code point if successful
+ * @exception NumberFormatException if unable to parse argument
+ */
+ public static int parseCodePoint(String s) throws NumberFormatException {
+ return Integer.parseInt(s, 16);
+ }
+
+ public static String parseName(String s) throws Exception {
+ if (s==null) throw new Exception("Cannot parse name.");
+ return s;
+ }
+
+ public static byte parseGeneralCategory(String s) throws Exception {
+ byte category = GENERAL_CATEGORY_COUNT;
+
+ for (byte x=0; x<generalCategoryList.length; x++) {
+ if (s.equals(generalCategoryList[x][SHORT])) {
+ category = x;
+ break;
+ }
+ }
+ if (category >= GENERAL_CATEGORY_COUNT) {
+ throw new Exception("Could not parse general category.");
+ }
+ return category;
+ }
+
+ public static byte parseBidiCategory(String s) throws Exception {
+ byte category = DIRECTIONALITY_CATEGORY_COUNT;
+
+ for (byte x=0; x<bidiCategoryList.length; x++) {
+ if (s.equals(bidiCategoryList[x][SHORT])) {
+ category = x;
+ break;
+ }
+ }
+ if (category >= DIRECTIONALITY_CATEGORY_COUNT) {
+ throw new Exception("Could not parse bidi category.");
+ }
+ return category;
+ }
+
+
+ /**
+ * Parse the combining attribute for a Unicode character. If there is a combining
+ * attribute and the parse succeeds, then the hasCombining field is set to true,
+ * the combining field of this UnicodeSpec object is updated, and false is returned.
+ * If the combining attribute is an empty string, the parse succeeds but the
+ * hasCombining field is set to false. (and false is returned).
+ *
+ * The combining attribute, if any, should be a nonnegative decimal integer.
+ *
+ * @param s the combining attribute extracted from a line of the Unicode data file
+ * @return the combining class value if any, -1 if property not defined
+ * @exception Exception if can't parse the combining class
+ */
+
+ public static int parseCombiningClass(String s) throws Exception {
+ int combining = -1;
+ if (s.length()>0) {
+ combining = Integer.parseInt(s, 10);
+ }
+ return combining;
+ }
+
+ /**
+ * Parse the decomposition attribute for a Unicode character. If the parse succeeds,
+ * the decomposition field of this UnicodeSpec object is updated and false is returned.
+ *
+ * The decomposition attribute is complicated; for now, it is treated as a string.
+ *
+ * @param s the decomposition attribute extracted from a line of the Unicode data file
+ * @return true if the parse failed; otherwise false
+ */
+
+ public static String parseDecomposition(String s) throws Exception {
+ if (s==null) throw new Exception("Cannot parse decomposition.");
+ return s;
+ }
+
+
+ /**
+ * Parse the decimal value attribute for a Unicode character. If there is a decimal value
+ * attribute and the parse succeeds, then the hasDecimalValue field is set to true,
+ * the decimalValue field of this UnicodeSpec object is updated, and false is returned.
+ * If the decimal value attribute is an empty string, the parse succeeds but the
+ * hasDecimalValue field is set to false. (and false is returned).
+ *
+ * The decimal value attribute, if any, should be a nonnegative decimal integer.
+ *
+ * @param s the decimal value attribute extracted from a line of the Unicode data file
+ * @return the decimal value as an int, -1 if no decimal value defined
+ * @exception NumberFormatException if the parse fails
+ */
+ public static int parseDecimalValue(String s) throws NumberFormatException {
+ int value = -1;
+
+ if (s.length() > 0) {
+ value = Integer.parseInt(s, 10);
+ }
+ return value;
+ }
+
+ /**
+ * Parse the digit value attribute for a Unicode character. If there is a digit value
+ * attribute and the parse succeeds, then the hasDigitValue field is set to true,
+ * the digitValue field of this UnicodeSpec object is updated, and false is returned.
+ * If the digit value attribute is an empty string, the parse succeeds but the
+ * hasDigitValue field is set to false. (and false is returned).
+ *
+ * The digit value attribute, if any, should be a nonnegative decimal integer.
+ *
+ * @param s the digit value attribute extracted from a line of the Unicode data file
+ * @return the digit value as an non-negative int, or -1 if no digit property defined
+ * @exception NumberFormatException if the parse fails
+ */
+ public static int parseDigitValue(String s) throws NumberFormatException {
+ int value = -1;
+
+ if (s.length() > 0) {
+ value = Integer.parseInt(s, 10);
+ }
+ return value;
+ }
+
+ public static String parseNumericValue(String s) throws Exception {
+ if (s == null) throw new Exception("Cannot parse numeric value.");
+ return s;
+ }
+
+ public static String parseComment(String s) throws Exception {
+ if (s == null) throw new Exception("Cannot parse comment.");
+ return s;
+ }
+
+ public static boolean parseMirrored(String s) throws Exception {
+ boolean mirrored;
+ if (s.length() == 1) {
+ if (s.charAt(0) == 'Y') {mirrored = true;}
+ else if (s.charAt(0) == 'N') {mirrored = false;}
+ else {throw new Exception("Cannot parse mirrored property.");}
+ }
+ else { throw new Exception("Cannot parse mirrored property.");}
+ return mirrored;
+ }
+
+ public static String parseOldName(String s) throws Exception {
+ if (s == null) throw new Exception("Cannot parse old name");
+ return s;
+ }
+
+ /**
+ * Parse the uppercase mapping attribute for a Unicode character. If there is a uppercase
+ * mapping attribute and the parse succeeds, then the hasUpperMap field is set to true,
+ * the upperMap field of this UnicodeSpec object is updated, and false is returned.
+ * If the uppercase mapping attribute is an empty string, the parse succeeds but the
+ * hasUpperMap field is set to false. (and false is returned).
+ *
+ * The uppercase mapping attribute should be a four to six digit hexadecimal integer.
+ *
+ * @param s the uppercase mapping attribute extracted from a line of the Unicode data file
+ * @return simple uppercase character mapping if defined, MAP_UNDEFINED otherwise
+ * @exception NumberFormatException if parse fails
+ */
+ public static int parseUpperMap(String s) throws NumberFormatException {
+ int upperCase = MAP_UNDEFINED;
+
+ int length = s.length();
+ if (length >= 4 && length <=6) {
+ upperCase = Integer.parseInt(s, 16);
+ }
+ else if (s.length() != 0) {
+ throw new NumberFormatException();
+ }
+ return upperCase;
+ }
+
+ /**
+ * Parse the lowercase mapping attribute for a Unicode character. If there is a lowercase
+ * mapping attribute and the parse succeeds, then the hasLowerMap field is set to true,
+ * the lowerMap field of this UnicodeSpec object is updated, and false is returned.
+ * If the lowercase mapping attribute is an empty string, the parse succeeds but the
+ * hasLowerMap field is set to false. (and false is returned).
+ *
+ * The lowercase mapping attribute should be a four to six digit hexadecimal integer.
+ *
+ * @param s the lowercase mapping attribute extracted from a line of the Unicode data file
+ * @return simple lowercase character mapping if defined, MAP_UNDEFINED otherwise
+ * @exception NumberFormatException if parse fails
+ */
+ public static int parseLowerMap(String s) throws NumberFormatException {
+ int lowerCase = MAP_UNDEFINED;
+ int length = s.length();
+ if (length >= 4 && length <= 6) {
+ lowerCase = Integer.parseInt(s, 16);
+ }
+ else if (s.length() != 0) {
+ throw new NumberFormatException();
+ }
+ return lowerCase;
+ }
+
+ /**
+ * Parse the titlecase mapping attribute for a Unicode character. If there is a titlecase
+ * mapping attribute and the parse succeeds, then the hasTitleMap field is set to true,
+ * the titleMap field of this UnicodeSpec object is updated, and false is returned.
+ * If the titlecase mapping attribute is an empty string, the parse succeeds but the
+ * hasTitleMap field is set to false. (and false is returned).
+ *
+ * The titlecase mapping attribute should be a four to six digit hexadecimal integer.
+ *
+ * @param s the titlecase mapping attribute extracted from a line of the Unicode data file
+ * @return simple title case char mapping if defined, MAP_UNDEFINED otherwise
+ * @exception NumberFormatException if parse fails
+ */
+ public static int parseTitleMap(String s) throws NumberFormatException {
+ int titleCase = MAP_UNDEFINED;
+ int length = s.length();
+ if (length >= 4 && length <= 6) {
+ titleCase = Integer.parseInt(s, 16);
+ }
+ else if (s.length() != 0) {
+ throw new NumberFormatException();
+ }
+ return titleCase;
+ }
+
+ /**
+ * Read and parse a Unicode data file.
+ *
+ * @param file a file specifying the Unicode data file to be read
+ * @return an array of UnicodeSpec objects, one for each line of the
+ * Unicode data file that could be successfully parsed as
+ * specifying Unicode character attributes
+ */
+
+ public static UnicodeSpec[] readSpecFile(File file, int plane) throws FileNotFoundException {
+ ArrayList list = new ArrayList(3000);
+ UnicodeSpec[] result = null;
+ int count = 0;
+ BufferedReader f = new BufferedReader(new FileReader(file));
+ String line = null;
+ loop:
+ while(true) {
+ try {
+ line = f.readLine();
+ }
+ catch (IOException e) {
+ break loop;
+ }
+ if (line == null) break loop;
+ UnicodeSpec item = parse(line.trim());
+ int specPlane = (int)(item.getCodePoint() >>> 16);
+ if (specPlane < plane) continue;
+ if (specPlane > plane) break;
+
+ if (item != null) {
+ list.add(item);
+ }
+ }
+ result = new UnicodeSpec[list.size()];
+ list.toArray(result);
+ return result;
+ }
+
+ void setCodePoint(int value) {
+ codePoint = value;
+ }
+
+ /**
+ * Return the code point in this Unicode specification
+ * @return the char code point representing by the specification
+ */
+ public int getCodePoint() {
+ return codePoint;
+ }
+
+ void setName(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ void setGeneralCategory(byte category) {
+ generalCategory = category;
+ }
+
+ public byte getGeneralCategory() {
+ return generalCategory;
+ }
+
+ void setBidiCategory(byte category) {
+ bidiCategory = category;
+ }
+
+ public byte getBidiCategory() {
+ return bidiCategory;
+ }
+
+ void setCombiningClass(int combiningClass) {
+ this.combiningClass = combiningClass;
+ }
+
+ public int getCombiningClass() {
+ return combiningClass;
+ }
+
+ void setDecomposition(String decomposition) {
+ this.decomposition = decomposition;
+ }
+
+ public String getDecomposition() {
+ return decomposition;
+ }
+
+ void setDecimalValue(int value) {
+ decimalValue = value;
+ }
+
+ public int getDecimalValue() {
+ return decimalValue;
+ }
+
+ public boolean isDecimalValue() {
+ return decimalValue != -1;
+ }
+
+ void setDigitValue(int value) {
+ digitValue = value;
+ }
+
+ public int getDigitValue() {
+ return digitValue;
+ }
+
+ public boolean isDigitValue() {
+ return digitValue != -1;
+ }
+
+ void setNumericValue(String value) {
+ numericValue = value;
+ }
+
+ public String getNumericValue() {
+ return numericValue;
+ }
+
+ public boolean isNumericValue() {
+ return numericValue.length() > 0;
+ }
+
+ void setMirrored(boolean value) {
+ mirrored = value;
+ }
+
+ public boolean isMirrored() {
+ return mirrored;
+ }
+
+ void setOldName(String name) {
+ oldName = name;
+ }
+
+ public String getOldName() {
+ return oldName;
+ }
+
+ void setComment(String comment) {
+ this.comment = comment;
+ }
+
+ public String getComment() {
+ return comment;
+ }
+
+ void setUpperMap(int ch) {
+ upperMap = ch;
+ };
+
+ public int getUpperMap() {
+ return upperMap;
+ }
+
+ public boolean hasUpperMap() {
+ return upperMap != MAP_UNDEFINED;
+ }
+
+ void setLowerMap(int ch) {
+ lowerMap = ch;
+ }
+
+ public int getLowerMap() {
+ return lowerMap;
+ }
+
+ public boolean hasLowerMap() {
+ return lowerMap != MAP_UNDEFINED;
+ }
+
+ void setTitleMap(int ch) {
+ titleMap = ch;
+ }
+
+ public int getTitleMap() {
+ return titleMap;
+ }
+
+ public boolean hasTitleMap() {
+ return titleMap != MAP_UNDEFINED;
+ }
+
+ int codePoint; // the characters UTF-32 code value
+ String name; // the ASCII name
+ byte generalCategory; // general category, available via Characte.getType()
+ byte bidiCategory; // available via Character.getBidiType()
+ int combiningClass; // not used in Character
+ String decomposition; // not used in Character
+ int decimalValue; // decimal digit value
+ int digitValue; // not all digits are decimal
+ String numericValue; // numeric value if digit or non-digit
+ boolean mirrored; //
+ String oldName;
+ String comment;
+ int upperMap;
+ int lowerMap;
+ int titleMap;
+
+ // this is the number of fields in one line of the UnicodeData.txt file
+ // each field is separated by a semicolon (a token)
+ static final int REQUIRED_FIELDS = 15;
+
+ /**
+ * General category types
+ * To preserve compatibility, these values cannot be changed
+ */
+ public static final byte
+ UNASSIGNED = 0, // Cn normative
+ UPPERCASE_LETTER = 1, // Lu normative
+ LOWERCASE_LETTER = 2, // Ll normative
+ TITLECASE_LETTER = 3, // Lt normative
+ MODIFIER_LETTER = 4, // Lm normative
+ OTHER_LETTER = 5, // Lo normative
+ NON_SPACING_MARK = 6, // Mn informative
+ ENCLOSING_MARK = 7, // Me informative
+ COMBINING_SPACING_MARK = 8, // Mc normative
+ DECIMAL_DIGIT_NUMBER = 9, // Nd normative
+ LETTER_NUMBER = 10, // Nl normative
+ OTHER_NUMBER = 11, // No normative
+ SPACE_SEPARATOR = 12, // Zs normative
+ LINE_SEPARATOR = 13, // Zl normative
+ PARAGRAPH_SEPARATOR = 14, // Zp normative
+ CONTROL = 15, // Cc normative
+ FORMAT = 16, // Cf normative
+ // 17 is unused for no apparent reason,
+ // but must preserve forward compatibility
+ PRIVATE_USE = 18, // Co normative
+ SURROGATE = 19, // Cs normative
+ DASH_PUNCTUATION = 20, // Pd informative
+ START_PUNCTUATION = 21, // Ps informative
+ END_PUNCTUATION = 22, // Pe informative
+ CONNECTOR_PUNCTUATION = 23, // Pc informative
+ OTHER_PUNCTUATION = 24, // Po informative
+ MATH_SYMBOL = 25, // Sm informative
+ CURRENCY_SYMBOL = 26, // Sc informative
+ MODIFIER_SYMBOL = 27, // Sk informative
+ OTHER_SYMBOL = 28, // So informative
+ INITIAL_QUOTE_PUNCTUATION = 29, // Pi informative
+ FINAL_QUOTE_PUNCTUATION = 30, // Pf informative
+
+ // this value is only used in the character generation tool
+ // it can change to accommodate the addition of new categories.
+ GENERAL_CATEGORY_COUNT = 31; // sentinel value
+
+ static final byte SHORT = 0, LONG = 1;
+ // general category type strings
+ // NOTE: The order of this category array is dependent on the assignment of
+ // category constants above. We want to access this array using constants above.
+ // [][SHORT] is the SHORT name, [][LONG] is the LONG name
+ static final String[][] generalCategoryList = {
+ {"Cn", "UNASSIGNED"},
+ {"Lu", "UPPERCASE_LETTER"},
+ {"Ll", "LOWERCASE_LETTER"},
+ {"Lt", "TITLECASE_LETTER"},
+ {"Lm", "MODIFIER_LETTER"},
+ {"Lo", "OTHER_LETTER"},
+ {"Mn", "NON_SPACING_MARK"},
+ {"Me", "ENCLOSING_MARK"},
+ {"Mc", "COMBINING_SPACING_MARK"},
+ {"Nd", "DECIMAL_DIGIT_NUMBER"},
+ {"Nl", "LETTER_NUMBER"},
+ {"No", "OTHER_NUMBER"},
+ {"Zs", "SPACE_SEPARATOR"},
+ {"Zl", "LINE_SEPARATOR"},
+ {"Zp", "PARAGRAPH_SEPARATOR"},
+ {"Cc", "CONTROL"},
+ {"Cf", "FORMAT"},
+ {"xx", "unused"},
+ {"Co", "PRIVATE_USE"},
+ {"Cs", "SURROGATE"},
+ {"Pd", "DASH_PUNCTUATION"},
+ {"Ps", "START_PUNCTUATION"},
+ {"Pe", "END_PUNCTUATION"},
+ {"Pc", "CONNECTOR_PUNCTUATION"},
+ {"Po", "OTHER_PUNCTUATION"},
+ {"Sm", "MATH_SYMBOL"},
+ {"Sc", "CURRENCY_SYMBOL"},
+ {"Sk", "MODIFIER_SYMBOL"},
+ {"So", "OTHER_SYMBOL"},
+ {"Pi", "INITIAL_QUOTE_PUNCTUATION"},
+ {"Pf", "FINAL_QUOTE_PUNCTUATION"}
+ };
+
+ /**
+ * Bidirectional categories
+ */
+ public static final byte
+ DIRECTIONALITY_UNDEFINED = -1,
+ // Strong category
+ DIRECTIONALITY_LEFT_TO_RIGHT = 0, // L
+ DIRECTIONALITY_RIGHT_TO_LEFT = 1, // R
+ DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 2, // AL
+ // Weak category
+ DIRECTIONALITY_EUROPEAN_NUMBER = 3, // EN
+ DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 4, // ES
+ DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 5, // ET
+ DIRECTIONALITY_ARABIC_NUMBER = 6, // AN
+ DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 7, // CS
+ DIRECTIONALITY_NONSPACING_MARK = 8, // NSM
+ DIRECTIONALITY_BOUNDARY_NEUTRAL = 9, // BN
+ // Neutral category
+ DIRECTIONALITY_PARAGRAPH_SEPARATOR = 10, // B
+ DIRECTIONALITY_SEGMENT_SEPARATOR = 11, // S
+ DIRECTIONALITY_WHITESPACE = 12, // WS
+ DIRECTIONALITY_OTHER_NEUTRALS = 13, // ON
+
+ DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 14, // LRE
+ DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 15, // LRO
+ DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 16, // RLE
+ DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 17, // RLO
+ DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = 18, // PDF
+
+ DIRECTIONALITY_CATEGORY_COUNT = 19; // sentinel value
+
+ // If changes are made to the above bidi category assignments, this
+ // list of bidi category names must be changed to keep their order in synch.
+ // Access this list using the bidi category constants above.
+ static final String[][] bidiCategoryList = {
+ {"L", "DIRECTIONALITY_LEFT_TO_RIGHT"},
+ {"R", "DIRECTIONALITY_RIGHT_TO_LEFT"},
+ {"AL", "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC"},
+ {"EN", "DIRECTIONALITY_EUROPEAN_NUMBER"},
+ {"ES", "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR"},
+ {"ET", "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR"},
+ {"AN", "DIRECTIONALITY_ARABIC_NUMBER"},
+ {"CS", "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR"},
+ {"NSM", "DIRECTIONALITY_NONSPACING_MARK"},
+ {"BN", "DIRECTIONALITY_BOUNDARY_NEUTRAL"},
+ {"B", "DIRECTIONALITY_PARAGRAPH_SEPARATOR"},
+ {"S", "DIRECTIONALITY_SEGMENT_SEPARATOR"},
+ {"WS", "DIRECTIONALITY_WHITESPACE"},
+ {"ON", "DIRECTIONALITY_OTHER_NEUTRALS"},
+ {"LRE", "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING"},
+ {"LRO", "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE"},
+ {"RLE", "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING"},
+ {"RLO", "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE"},
+ {"PDF", "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT"},
+
+ };
+
+ // Unicode specification lines have fields in this order.
+ static final byte
+ FIELD_VALUE = 0,
+ FIELD_NAME = 1,
+ FIELD_CATEGORY = 2,
+ FIELD_CLASS = 3,
+ FIELD_BIDI = 4,
+ FIELD_DECOMPOSITION = 5,
+ FIELD_DECIMAL = 6,
+ FIELD_DIGIT = 7,
+ FIELD_NUMERIC = 8,
+ FIELD_MIRRORED = 9,
+ FIELD_OLDNAME = 10,
+ FIELD_COMMENT = 11,
+ FIELD_UPPERCASE = 12,
+ FIELD_LOWERCASE = 13,
+ FIELD_TITLECASE = 14;
+
+ static final Pattern tokenSeparator = Pattern.compile(";");
+
+ public static void main(String[] args) {
+ UnicodeSpec[] spec = null;
+ if (args.length == 2 ) {
+ try {
+ File file = new File(args[0]);
+ int plane = Integer.parseInt(args[1]);
+ spec = UnicodeSpec.readSpecFile(file, plane);
+ System.out.println("UnicodeSpec[" + spec.length + "]:");
+ for (int x=0; x<spec.length; x++) {
+ System.out.println(spec[x].toString());
+ }
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+}
diff --git a/jdk/make/tools/src/build/tools/generatecharacter/Utility.java b/jdk/make/tools/src/build/tools/generatecharacter/Utility.java
new file mode 100644
index 0000000..63cbe50
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/generatecharacter/Utility.java
@@ -0,0 +1,407 @@
+/*
+ * Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.generatecharacter;
+
+import java.text.*;
+import java.util.*;
+
+public class Utility {
+ static byte peekByte(String s, int index) {
+ char c = s.charAt(index/2);
+ return ((index&1)==0)?(byte)(c>>8):(byte)c;
+ }
+
+ static short peekShort(String s, int index) {
+ return (short)s.charAt(index);
+ }
+
+ static int peekInt(String s, int index) {
+ index *= 2;
+ return (((int)s.charAt(index)) << 16) | s.charAt(index+1);
+ }
+
+ static void poke(String s, int index, byte value) {
+ int mask = 0xFF00;
+ int ivalue = value;
+ if ((index&1)==0) {
+ ivalue <<= 8;
+ mask = 0x00FF;
+ }
+ index /= 2;
+ if (index == s.length()) {
+ s = s + (char)ivalue;
+ }
+ else if (index == 0) {
+ s = (char)(ivalue|(s.charAt(0)&mask)) + s.substring(1);
+ }
+ else {
+ s = s.substring(0, index) + (char)(ivalue|(s.charAt(index)&mask))
+ + s.substring(index+1);
+ }
+ }
+
+ static void poke(String s, int index, short value) {
+ if (index == s.length()) {
+ s = s + (char)value;
+ }
+ else if (index == 0) {
+ s = (char)value + s.substring(1);
+ }
+ else {
+ s = s.substring(0, index) + (char)value + s.substring(index+1);
+ }
+ }
+
+ static void poke(String s, int index, int value) {
+ index *= 2;
+ char hi = (char)(value >> 16);
+ if (index == s.length()) {
+ s = s + hi + (char)value;
+ }
+ else if (index == 0) {
+ s = hi + (char)value + s.substring(2);
+ }
+ else {
+ s = s.substring(0, index) + hi + (char)value + s.substring(index+2);
+ }
+ }
+
+ /**
+ * The ESCAPE character is used during run-length encoding. It signals
+ * a run of identical chars.
+ */
+ static final char ESCAPE = '\uA5A5';
+
+ /**
+ * The ESCAPE_BYTE character is used during run-length encoding. It signals
+ * a run of identical bytes.
+ */
+ static final byte ESCAPE_BYTE = (byte)0xA5;
+
+ /**
+ * Construct a string representing a short array. Use run-length encoding.
+ * A character represents itself, unless it is the ESCAPE character. Then
+ * the following notations are possible:
+ * ESCAPE ESCAPE ESCAPE literal
+ * ESCAPE n c n instances of character c
+ * Since an encoded run occupies 3 characters, we only encode runs of 4 or
+ * more characters. Thus we have n > 0 and n != ESCAPE and n <= 0xFFFF.
+ * If we encounter a run where n == ESCAPE, we represent this as:
+ * c ESCAPE n-1 c
+ * The ESCAPE value is chosen so as not to collide with commonly
+ * seen values.
+ */
+ static final String arrayToRLEString(short[] a) {
+ StringBuffer buffer = new StringBuffer();
+ // for (int i=0; i<a.length; ++i) buffer.append((char) a[i]);
+ buffer.append((char) (a.length >> 16));
+ buffer.append((char) a.length);
+ short runValue = a[0];
+ int runLength = 1;
+ for (int i=1; i<a.length; ++i) {
+ short s = a[i];
+ if (s == runValue && runLength < 0xFFFF) ++runLength;
+ else {
+ encodeRun(buffer, runValue, runLength);
+ runValue = s;
+ runLength = 1;
+ }
+ }
+ encodeRun(buffer, runValue, runLength);
+ return buffer.toString();
+ }
+
+ /**
+ * Construct a string representing a byte array. Use run-length encoding.
+ * Two bytes are packed into a single char, with a single extra zero byte at
+ * the end if needed. A byte represents itself, unless it is the
+ * ESCAPE_BYTE. Then the following notations are possible:
+ * ESCAPE_BYTE ESCAPE_BYTE ESCAPE_BYTE literal
+ * ESCAPE_BYTE n b n instances of byte b
+ * Since an encoded run occupies 3 bytes, we only encode runs of 4 or
+ * more bytes. Thus we have n > 0 and n != ESCAPE_BYTE and n <= 0xFF.
+ * If we encounter a run where n == ESCAPE_BYTE, we represent this as:
+ * b ESCAPE_BYTE n-1 b
+ * The ESCAPE_BYTE value is chosen so as not to collide with commonly
+ * seen values.
+ */
+ static final String arrayToRLEString(byte[] a) {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append((char) (a.length >> 16));
+ buffer.append((char) a.length);
+ byte runValue = a[0];
+ int runLength = 1;
+ byte[] state = new byte[2];
+ for (int i=1; i<a.length; ++i) {
+ byte b = a[i];
+ if (b == runValue && runLength < 0xFF) ++runLength;
+ else {
+ encodeRun(buffer, runValue, runLength, state);
+ runValue = b;
+ runLength = 1;
+ }
+ }
+ encodeRun(buffer, runValue, runLength, state);
+
+ // We must save the final byte, if there is one, by padding
+ // an extra zero.
+ if (state[0] != 0) appendEncodedByte(buffer, (byte)0, state);
+
+ return buffer.toString();
+ }
+
+ /**
+ * Encode a run, possibly a degenerate run (of < 4 values).
+ * @param length The length of the run; must be > 0 && <= 0xFFFF.
+ */
+ private static final void encodeRun(StringBuffer buffer, short value, int length) {
+ if (length < 4) {
+ for (int j=0; j<length; ++j) {
+ if (value == (int) ESCAPE) buffer.append(ESCAPE);
+ buffer.append((char) value);
+ }
+ }
+ else {
+ if (length == (int) ESCAPE) {
+ if (value == (int) ESCAPE) buffer.append(ESCAPE);
+ buffer.append((char) value);
+ --length;
+ }
+ buffer.append(ESCAPE);
+ buffer.append((char) length);
+ buffer.append((char) value); // Don't need to escape this value
+ }
+ }
+
+ /**
+ * Encode a run, possibly a degenerate run (of < 4 values).
+ * @param length The length of the run; must be > 0 && <= 0xFF.
+ */
+ private static final void encodeRun(StringBuffer buffer, byte value, int length,
+ byte[] state) {
+ if (length < 4) {
+ for (int j=0; j<length; ++j) {
+ if (value == ESCAPE_BYTE) appendEncodedByte(buffer, ESCAPE_BYTE, state);
+ appendEncodedByte(buffer, value, state);
+ }
+ }
+ else {
+ if (length == ESCAPE_BYTE) {
+ if (value == ESCAPE_BYTE) appendEncodedByte(buffer, ESCAPE_BYTE, state);
+ appendEncodedByte(buffer, value, state);
+ --length;
+ }
+ appendEncodedByte(buffer, ESCAPE_BYTE, state);
+ appendEncodedByte(buffer, (byte)length, state);
+ appendEncodedByte(buffer, value, state); // Don't need to escape this value
+ }
+ }
+
+ /**
+ * Append a byte to the given StringBuffer, packing two bytes into each
+ * character. The state parameter maintains intermediary data between
+ * calls.
+ * @param state A two-element array, with state[0] == 0 if this is the
+ * first byte of a pair, or state[0] != 0 if this is the second byte
+ * of a pair, in which case state[1] is the first byte.
+ */
+ private static final void appendEncodedByte(StringBuffer buffer, byte value,
+ byte[] state) {
+ if (state[0] != 0) {
+ char c = (char) ((state[1] << 8) | (((int) value) & 0xFF));
+ buffer.append(c);
+ state[0] = 0;
+ }
+ else {
+ state[0] = 1;
+ state[1] = value;
+ }
+ }
+
+ /**
+ * Construct an array of shorts from a run-length encoded string.
+ */
+ static final short[] RLEStringToShortArray(String s) {
+ int length = (((int) s.charAt(0)) << 16) | ((int) s.charAt(1));
+ short[] array = new short[length];
+ int ai = 0;
+ for (int i=2; i<s.length(); ++i) {
+ char c = s.charAt(i);
+ if (c == ESCAPE) {
+ c = s.charAt(++i);
+ if (c == ESCAPE) array[ai++] = (short) c;
+ else {
+ int runLength = (int) c;
+ short runValue = (short) s.charAt(++i);
+ for (int j=0; j<runLength; ++j) array[ai++] = runValue;
+ }
+ }
+ else {
+ array[ai++] = (short) c;
+ }
+ }
+
+ if (ai != length)
+ throw new InternalError("Bad run-length encoded short array");
+
+ return array;
+ }
+
+ /**
+ * Construct an array of bytes from a run-length encoded string.
+ */
+ static final byte[] RLEStringToByteArray(String s) {
+ int length = (((int) s.charAt(0)) << 16) | ((int) s.charAt(1));
+ byte[] array = new byte[length];
+ boolean nextChar = true;
+ char c = 0;
+ int node = 0;
+ int runLength = 0;
+ int i = 2;
+ for (int ai=0; ai<length; ) {
+ // This part of the loop places the next byte into the local
+ // variable 'b' each time through the loop. It keeps the
+ // current character in 'c' and uses the boolean 'nextChar'
+ // to see if we've taken both bytes out of 'c' yet.
+ byte b;
+ if (nextChar) {
+ c = s.charAt(i++);
+ b = (byte) (c >> 8);
+ nextChar = false;
+ }
+ else {
+ b = (byte) (c & 0xFF);
+ nextChar = true;
+ }
+
+ // This part of the loop is a tiny state machine which handles
+ // the parsing of the run-length encoding. This would be simpler
+ // if we could look ahead, but we can't, so we use 'node' to
+ // move between three nodes in the state machine.
+ switch (node) {
+ case 0:
+ // Normal idle node
+ if (b == ESCAPE_BYTE) {
+ node = 1;
+ }
+ else {
+ array[ai++] = b;
+ }
+ break;
+ case 1:
+ // We have seen one ESCAPE_BYTE; we expect either a second
+ // one, or a run length and value.
+ if (b == ESCAPE_BYTE) {
+ array[ai++] = ESCAPE_BYTE;
+ node = 0;
+ }
+ else {
+ runLength = b;
+ // Interpret signed byte as unsigned
+ if (runLength < 0) runLength += 0x100;
+ node = 2;
+ }
+ break;
+ case 2:
+ // We have seen an ESCAPE_BYTE and length byte. We interpret
+ // the next byte as the value to be repeated.
+ for (int j=0; j<runLength; ++j) array[ai++] = b;
+ node = 0;
+ break;
+ }
+ }
+
+ if (node != 0)
+ throw new InternalError("Bad run-length encoded byte array");
+
+ if (i != s.length())
+ throw new InternalError("Excess data in RLE byte array string");
+
+ return array;
+ }
+
+ /**
+ * Format a String for representation in a source file. This includes
+ * breaking it into lines escaping characters using octal notation
+ * when necessary (control characters and double quotes).
+ */
+ static final String formatForSource(String s) {
+ return formatForSource(s, " ");
+ }
+
+ /**
+ * Format a String for representation in a source file. This includes
+ * breaking it into lines escaping characters using octal notation
+ * when necessary (control characters and double quotes).
+ */
+ static final String formatForSource(String s, String indent) {
+ StringBuffer buffer = new StringBuffer();
+ for (int i=0; i<s.length();) {
+ if (i > 0) buffer.append("+\n");
+ int limit = buffer.length() + 78; // Leave 2 for trailing <"+>
+ buffer.append(indent + '"');
+ while (i<s.length() && buffer.length()<limit) {
+ char c = s.charAt(i++);
+ /* This works too but it's kind of unnecessary; might as
+ well keep things simple.
+ if (c == '\\' || c == '"') {
+ // Escape backslash and double-quote. Don't need to
+ // escape single-quote.
+ buffer.append("\\" + c);
+ }
+ else if (c >= '\u0020' && c <= '\u007E') {
+ // Printable ASCII ranges from ' ' to '~'
+ buffer.append(c);
+ }
+ else
+ */
+ if (c <= '\377') {
+ // Represent control characters
+ // using octal notation; otherwise the string we form
+ // won't compile, since Unicode escape sequences are
+ // processed before tokenization.
+ buffer.append('\\');
+ buffer.append(HEX_DIGIT[(c & 0700) >> 6]); // HEX_DIGIT works for octal
+ buffer.append(HEX_DIGIT[(c & 0070) >> 3]);
+ buffer.append(HEX_DIGIT[(c & 0007)]);
+ }
+ else {
+ // Handle the rest with Unicode
+ buffer.append("\\u");
+ buffer.append(HEX_DIGIT[(c & 0xF000) >> 12]);
+ buffer.append(HEX_DIGIT[(c & 0x0F00) >> 8]);
+ buffer.append(HEX_DIGIT[(c & 0x00F0) >> 4]);
+ buffer.append(HEX_DIGIT[(c & 0x000F)]);
+ }
+ }
+ buffer.append('"');
+ }
+ return buffer.toString();
+ }
+
+ static final char[] HEX_DIGIT = {'0','1','2','3','4','5','6','7',
+ '8','9','A','B','C','D','E','F'};
+}
diff --git a/jdk/make/tools/src/build/tools/generatecurrencydata/GenerateCurrencyData.java b/jdk/make/tools/src/build/tools/generatecurrencydata/GenerateCurrencyData.java
new file mode 100644
index 0000000..29201c2
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/generatecurrencydata/GenerateCurrencyData.java
@@ -0,0 +1,381 @@
+/*
+ * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.generatecurrencydata;
+
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.io.DataOutputStream;
+import java.io.FileOutputStream;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Properties;
+import java.util.TimeZone;
+
+/**
+ * Reads currency data in properties format from the file specified in the
+ * command line and generates a binary data file as specified in the command line.
+ *
+ * Output of this tool is a binary file that contains the data in
+ * the following order:
+ *
+ * - magic number (int): always 0x43757244 ('CurD')
+ * - formatVersion (int)
+ * - dataVersion (int)
+ * - mainTable (int[26*26])
+ * - specialCaseCount (int)
+ * - specialCaseCutOverTimes (long[specialCaseCount])
+ * - specialCaseOldCurrencies (String[specialCaseCount])
+ * - specialCaseNewCurrencies (String[specialCaseCount])
+ * - specialCaseOldCurrenciesDefaultFractionDigits (int[specialCaseCount])
+ * - specialCaseNewCurrenciesDefaultFractionDigits (int[specialCaseCount])
+ * - specialCaseOldCurrenciesNumericCode (int[specialCaseCount])
+ * - specialCaseNewCurrenciesNumericCode (int[specialCaseCount])
+ * - otherCurrenciesCount (int)
+ * - otherCurrencies (String)
+ * - otherCurrenciesDefaultFractionDigits (int[otherCurrenciesCount])
+ * - otherCurrenciesNumericCode (int[otherCurrenciesCount])
+ *
+ * See CurrencyData.properties for the input format description and
+ * Currency.java for the format descriptions of the generated tables.
+ */
+public class GenerateCurrencyData {
+
+ private static DataOutputStream out;
+
+ // input data: currency data obtained from properties on input stream
+ private static Properties currencyData;
+ private static String formatVersion;
+ private static String dataVersion;
+ private static String validCurrencyCodes;
+ private static String currenciesWith0MinorUnitDecimals;
+ private static String currenciesWith1MinorUnitDecimal;
+ private static String currenciesWith3MinorUnitDecimal;
+ private static String currenciesWithMinorUnitsUndefined;
+
+ // handy constants - must match definitions in java.util.Currency
+ // magic number
+ private static final int MAGIC_NUMBER = 0x43757244;
+ // number of characters from A to Z
+ private static final int A_TO_Z = ('Z' - 'A') + 1;
+ // entry for invalid country codes
+ private static final int INVALID_COUNTRY_ENTRY = 0x007F;
+ // entry for countries without currency
+ private static final int COUNTRY_WITHOUT_CURRENCY_ENTRY = 0x0080;
+ // mask for simple case country entries
+ private static final int SIMPLE_CASE_COUNTRY_MASK = 0x0000;
+ // mask for simple case country entry final character
+ private static final int SIMPLE_CASE_COUNTRY_FINAL_CHAR_MASK = 0x001F;
+ // mask for simple case country entry default currency digits
+ private static final int SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_MASK = 0x0060;
+ // shift count for simple case country entry default currency digits
+ private static final int SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_SHIFT = 5;
+ // mask for special case country entries
+ private static final int SPECIAL_CASE_COUNTRY_MASK = 0x0080;
+ // mask for special case country index
+ private static final int SPECIAL_CASE_COUNTRY_INDEX_MASK = 0x001F;
+ // delta from entry index component in main table to index into special case tables
+ private static final int SPECIAL_CASE_COUNTRY_INDEX_DELTA = 1;
+ // mask for distinguishing simple and special case countries
+ private static final int COUNTRY_TYPE_MASK = SIMPLE_CASE_COUNTRY_MASK | SPECIAL_CASE_COUNTRY_MASK;
+ // mask for the numeric code of the currency
+ private static final int NUMERIC_CODE_MASK = 0x0003FF00;
+ // shift count for the numeric code of the currency
+ private static final int NUMERIC_CODE_SHIFT = 8;
+
+ // generated data
+ private static int[] mainTable = new int[A_TO_Z * A_TO_Z];
+
+ private static final int maxSpecialCases = 30;
+ private static int specialCaseCount = 0;
+ private static long[] specialCaseCutOverTimes = new long[maxSpecialCases];
+ private static String[] specialCaseOldCurrencies = new String[maxSpecialCases];
+ private static String[] specialCaseNewCurrencies = new String[maxSpecialCases];
+ private static int[] specialCaseOldCurrenciesDefaultFractionDigits = new int[maxSpecialCases];
+ private static int[] specialCaseNewCurrenciesDefaultFractionDigits = new int[maxSpecialCases];
+ private static int[] specialCaseOldCurrenciesNumericCode = new int[maxSpecialCases];
+ private static int[] specialCaseNewCurrenciesNumericCode = new int[maxSpecialCases];
+
+ private static final int maxOtherCurrencies = 65;
+ private static int otherCurrenciesCount = 0;
+ private static StringBuffer otherCurrencies = new StringBuffer();
+ private static int[] otherCurrenciesDefaultFractionDigits = new int[maxOtherCurrencies];
+ private static int[] otherCurrenciesNumericCode= new int[maxOtherCurrencies];
+
+ // date format for parsing cut-over times
+ private static SimpleDateFormat format;
+
+ public static void main(String[] args) {
+
+ // Look for "-o outputfilename" option
+ if ( args.length == 2 && args[0].equals("-o") ) {
+ try {
+ out = new DataOutputStream(new FileOutputStream(args[1]));
+ } catch ( FileNotFoundException e ) {
+ System.err.println("Error: " + e.getMessage());
+ e.printStackTrace(System.err);
+ System.exit(1);
+ }
+ } else {
+ System.err.println("Error: Illegal arg count");
+ System.exit(1);
+ }
+
+ format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.US);
+ format.setTimeZone(TimeZone.getTimeZone("GMT"));
+ format.setLenient(false);
+
+ try {
+ readInput();
+ buildMainAndSpecialCaseTables();
+ buildOtherTables();
+ writeOutput();
+ out.flush();
+ out.close();
+ } catch (Exception e) {
+ System.err.println("Error: " + e.getMessage());
+ e.printStackTrace(System.err);
+ System.exit(1);
+ }
+ }
+
+ private static void readInput() throws IOException {
+ currencyData = new Properties();
+ currencyData.load(System.in);
+
+ // initialize other lookup strings
+ formatVersion = (String) currencyData.get("formatVersion");
+ dataVersion = (String) currencyData.get("dataVersion");
+ validCurrencyCodes = (String) currencyData.get("all");
+ currenciesWith0MinorUnitDecimals = (String) currencyData.get("minor0");
+ currenciesWith1MinorUnitDecimal = (String) currencyData.get("minor1");
+ currenciesWith3MinorUnitDecimal = (String) currencyData.get("minor3");
+ currenciesWithMinorUnitsUndefined = (String) currencyData.get("minorUndefined");
+ if (formatVersion == null ||
+ dataVersion == null ||
+ validCurrencyCodes == null ||
+ currenciesWith0MinorUnitDecimals == null ||
+ currenciesWith1MinorUnitDecimal == null ||
+ currenciesWith3MinorUnitDecimal == null ||
+ currenciesWithMinorUnitsUndefined == null) {
+ throw new NullPointerException("not all required data is defined in input");
+ }
+ }
+
+ private static void buildMainAndSpecialCaseTables() throws Exception {
+ for (int first = 0; first < A_TO_Z; first++) {
+ for (int second = 0; second < A_TO_Z; second++) {
+ char firstChar = (char) ('A' + first);
+ char secondChar = (char) ('A' + second);
+ String countryCode = (new StringBuffer()).append(firstChar).append(secondChar).toString();
+ String currencyInfo = (String) currencyData.get(countryCode);
+ int tableEntry = 0;
+ if (currencyInfo == null) {
+ // no entry -> must be invalid ISO 3166 country code
+ tableEntry = INVALID_COUNTRY_ENTRY;
+ } else {
+ int length = currencyInfo.length();
+ if (length == 0) {
+ // special case: country without currency
+ tableEntry = COUNTRY_WITHOUT_CURRENCY_ENTRY;
+ } else if (length == 3) {
+ // valid currency
+ if (currencyInfo.charAt(0) == firstChar && currencyInfo.charAt(1) == secondChar) {
+ checkCurrencyCode(currencyInfo);
+ int digits = getDefaultFractionDigits(currencyInfo);
+ if (digits < 0 || digits > 3) {
+ throw new RuntimeException("fraction digits out of range for " + currencyInfo);
+ }
+ int numericCode= getNumericCode(currencyInfo);
+ if (numericCode < 0 || numericCode >= 1000 ) {
+ throw new RuntimeException("numeric code out of range for " + currencyInfo);
+ }
+ tableEntry = SIMPLE_CASE_COUNTRY_MASK
+ | (currencyInfo.charAt(2) - 'A')
+ | (digits << SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_SHIFT)
+ | (numericCode << NUMERIC_CODE_SHIFT);
+ } else {
+ tableEntry = SPECIAL_CASE_COUNTRY_MASK | (makeSpecialCaseEntry(currencyInfo) + SPECIAL_CASE_COUNTRY_INDEX_DELTA);
+ }
+ } else {
+ tableEntry = SPECIAL_CASE_COUNTRY_MASK | (makeSpecialCaseEntry(currencyInfo) + SPECIAL_CASE_COUNTRY_INDEX_DELTA);
+ }
+ }
+ mainTable[first * A_TO_Z + second] = tableEntry;
+ }
+ }
+ }
+
+ private static int getDefaultFractionDigits(String currencyCode) {
+ if (currenciesWith0MinorUnitDecimals.indexOf(currencyCode) != -1) {
+ return 0;
+ } else if (currenciesWith1MinorUnitDecimal.indexOf(currencyCode) != -1) {
+ return 1;
+ } else if (currenciesWith3MinorUnitDecimal.indexOf(currencyCode) != -1) {
+ return 3;
+ } else if (currenciesWithMinorUnitsUndefined.indexOf(currencyCode) != -1) {
+ return -1;
+ } else {
+ return 2;
+ }
+ }
+
+ private static int getNumericCode(String currencyCode) {
+ int index = validCurrencyCodes.indexOf(currencyCode);
+ String numericCode = validCurrencyCodes.substring(index + 3, index + 6);
+ return Integer.parseInt(numericCode);
+ }
+
+ static HashMap specialCaseMap = new HashMap();
+
+ private static int makeSpecialCaseEntry(String currencyInfo) throws Exception {
+ Integer oldEntry = (Integer) specialCaseMap.get(currencyInfo);
+ if (oldEntry != null) {
+ return oldEntry.intValue();
+ }
+ if (specialCaseCount == maxSpecialCases) {
+ throw new RuntimeException("too many special cases");
+ }
+ if (currencyInfo.length() == 3) {
+ checkCurrencyCode(currencyInfo);
+ specialCaseCutOverTimes[specialCaseCount] = Long.MAX_VALUE;
+ specialCaseOldCurrencies[specialCaseCount] = currencyInfo;
+ specialCaseOldCurrenciesDefaultFractionDigits[specialCaseCount] = getDefaultFractionDigits(currencyInfo);
+ specialCaseOldCurrenciesNumericCode[specialCaseCount] = getNumericCode(currencyInfo);
+ specialCaseNewCurrencies[specialCaseCount] = null;
+ specialCaseNewCurrenciesDefaultFractionDigits[specialCaseCount] = 0;
+ specialCaseNewCurrenciesNumericCode[specialCaseCount] = 0;
+ } else {
+ int length = currencyInfo.length();
+ if (currencyInfo.charAt(3) != ';' ||
+ currencyInfo.charAt(length - 4) != ';') {
+ throw new RuntimeException("invalid currency info: " + currencyInfo);
+ }
+ String oldCurrency = currencyInfo.substring(0, 3);
+ String newCurrency = currencyInfo.substring(length - 3, length);
+ checkCurrencyCode(oldCurrency);
+ checkCurrencyCode(newCurrency);
+ String timeString = currencyInfo.substring(4, length - 4);
+ long time = format.parse(timeString).getTime();
+ if (Math.abs(time - System.currentTimeMillis()) > ((long) 10) * 365 * 24 * 60 * 60 * 1000) {
+ throw new RuntimeException("time is more than 10 years from present: " + time);
+ }
+ specialCaseCutOverTimes[specialCaseCount] = time;
+ specialCaseOldCurrencies[specialCaseCount] = oldCurrency;
+ specialCaseOldCurrenciesDefaultFractionDigits[specialCaseCount] = getDefaultFractionDigits(oldCurrency);
+ specialCaseOldCurrenciesNumericCode[specialCaseCount] = getNumericCode(oldCurrency);
+ specialCaseNewCurrencies[specialCaseCount] = newCurrency;
+ specialCaseNewCurrenciesDefaultFractionDigits[specialCaseCount] = getDefaultFractionDigits(newCurrency);
+ specialCaseNewCurrenciesNumericCode[specialCaseCount] = getNumericCode(newCurrency);
+ }
+ specialCaseMap.put(currencyInfo, new Integer(specialCaseCount));
+ return specialCaseCount++;
+ }
+
+ private static void buildOtherTables() {
+ if (validCurrencyCodes.length() % 7 != 6) {
+ throw new RuntimeException("\"all\" entry has incorrect size");
+ }
+ for (int i = 0; i < (validCurrencyCodes.length() + 1) / 7; i++) {
+ if (i > 0 && validCurrencyCodes.charAt(i * 7 - 1) != '-') {
+ throw new RuntimeException("incorrect separator in \"all\" entry");
+ }
+ String currencyCode = validCurrencyCodes.substring(i * 7, i * 7 + 3);
+ int numericCode = Integer.parseInt(
+ validCurrencyCodes.substring(i * 7 + 3, i * 7 + 6));
+ checkCurrencyCode(currencyCode);
+ int tableEntry = mainTable[(currencyCode.charAt(0) - 'A') * A_TO_Z + (currencyCode.charAt(1) - 'A')];
+ if (tableEntry == INVALID_COUNTRY_ENTRY ||
+ (tableEntry & SPECIAL_CASE_COUNTRY_MASK) != 0 ||
+ (tableEntry & SIMPLE_CASE_COUNTRY_FINAL_CHAR_MASK) != (currencyCode.charAt(2) - 'A')) {
+ if (otherCurrenciesCount == maxOtherCurrencies) {
+ throw new RuntimeException("too many other currencies");
+ }
+ if (otherCurrencies.length() > 0) {
+ otherCurrencies.append('-');
+ }
+ otherCurrencies.append(currencyCode);
+ otherCurrenciesDefaultFractionDigits[otherCurrenciesCount] = getDefaultFractionDigits(currencyCode);
+ otherCurrenciesNumericCode[otherCurrenciesCount] = getNumericCode(currencyCode);
+ otherCurrenciesCount++;
+ }
+ }
+ }
+
+ private static void checkCurrencyCode(String currencyCode) {
+ if (currencyCode.length() != 3) {
+ throw new RuntimeException("illegal length for currency code: " + currencyCode);
+ }
+ for (int i = 0; i < 3; i++) {
+ char aChar = currencyCode.charAt(i);
+ if ((aChar < 'A' || aChar > 'Z') && !currencyCode.equals("XB5")) {
+ throw new RuntimeException("currency code contains illegal character: " + currencyCode);
+ }
+ }
+ if (validCurrencyCodes.indexOf(currencyCode) == -1) {
+ throw new RuntimeException("currency code not listed as valid: " + currencyCode);
+ }
+ }
+
+ private static void writeOutput() throws IOException {
+ out.writeInt(MAGIC_NUMBER);
+ out.writeInt(Integer.parseInt(formatVersion));
+ out.writeInt(Integer.parseInt(dataVersion));
+ writeIntArray(mainTable, mainTable.length);
+ out.writeInt(specialCaseCount);
+ writeLongArray(specialCaseCutOverTimes, specialCaseCount);
+ writeStringArray(specialCaseOldCurrencies, specialCaseCount);
+ writeStringArray(specialCaseNewCurrencies, specialCaseCount);
+ writeIntArray(specialCaseOldCurrenciesDefaultFractionDigits, specialCaseCount);
+ writeIntArray(specialCaseNewCurrenciesDefaultFractionDigits, specialCaseCount);
+ writeIntArray(specialCaseOldCurrenciesNumericCode, specialCaseCount);
+ writeIntArray(specialCaseNewCurrenciesNumericCode, specialCaseCount);
+ out.writeInt(otherCurrenciesCount);
+ out.writeUTF(otherCurrencies.toString());
+ writeIntArray(otherCurrenciesDefaultFractionDigits, otherCurrenciesCount);
+ writeIntArray(otherCurrenciesNumericCode, otherCurrenciesCount);
+ }
+
+ private static void writeIntArray(int[] ia, int count) throws IOException {
+ for (int i = 0; i < count; i ++) {
+ out.writeInt(ia[i]);
+ }
+ }
+
+ private static void writeLongArray(long[] la, int count) throws IOException {
+ for (int i = 0; i < count; i ++) {
+ out.writeLong(la[i]);
+ }
+ }
+
+ private static void writeStringArray(String[] sa, int count) throws IOException {
+ for (int i = 0; i < count; i ++) {
+ String str = (sa[i] != null) ? sa[i] : "";
+ out.writeUTF(str);
+ }
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/hasher/Hasher.java b/jdk/make/tools/src/build/tools/hasher/Hasher.java
new file mode 100644
index 0000000..66657d7
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/hasher/Hasher.java
@@ -0,0 +1,321 @@
+/*
+ * Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.hasher;
+
+import java.io.*;
+import java.util.*;
+
+
+/**
+ * Reads a map in the form of a sequence of key/value-expression pairs from the
+ * standard input, attempts to construct a hash map that fits within the given
+ * table-size and chain-depth constraints, and, if successful, writes source
+ * code to the standard output for a subclass of sun.util.PreHashedMap that
+ * implements the map.
+ *
+ * @see sun.util.PreHashedMap
+ *
+ * @author Mark Reinhold
+ */
+
+public class Hasher {
+
+ // This class cannot, sadly, make use of 1.5 features since it must be
+ // compiled and run with the bootstrap JDK, which is 1.4.2.
+
+ static final PrintStream out = System.out;
+ static final PrintStream err = System.err;
+
+ boolean verbose = false;
+
+ List keys = new ArrayList(); // Key strings
+ List values = new ArrayList(); // Value expressions
+ String pkg = null; // Package prefix for generated class
+ String cln = null; // Name of generated class
+ String vtype = "String"; // Value type
+ int maxBits = 11; // lg table size
+ int maxDepth = 3; // Max chain depth
+ boolean inner = false; // Generating an inner class?
+ boolean empty = false; // Generating an empty table?
+
+ void usage() {
+ err.println("usage: java Hasher [options] [[pkgName.]ClassName]");
+ err.println("options:");
+ err.println(" -e generate empty table (ignores value exprs)");
+ err.println(" -i generate a static inner class");
+ err.println(" -md depth max chain depth (default 3)");
+ err.println(" -mb bits max index bits (lg of table size, default 10)");
+ err.println(" -t type value type (default String)");
+ err.println(" -v verbose");
+ err.println("Key/value-expression pairs are read from standard input");
+ err.println("If class name is given then source is written to standard output");
+ System.exit(1);
+ }
+
+ Hasher(String[] args) {
+ List as = Arrays.asList(args);
+ for (Iterator i = as.iterator(); i.hasNext();) {
+ String a = (String)i.next();
+ if (a.equals("-e")) {
+ empty = true;
+ } else if (a.equals("-i")) {
+ inner = true;
+ } else if (a.equals("-v")) {
+ verbose = true;
+ } else if (a.equals("-md")) {
+ if (!i.hasNext())
+ usage();
+ maxDepth = Integer.parseInt((String)i.next());
+ } else if (a.equals("-mb")) {
+ if (!i.hasNext())
+ usage();
+ maxBits = Integer.parseInt((String)i.next());
+ } else if (a.equals("-t")) {
+ if (!i.hasNext())
+ usage();
+ vtype = (String)i.next();
+ } else if (a.startsWith("-")) {
+ usage();
+ } else {
+ int j = a.lastIndexOf('.');
+ if (j >= 0) {
+ pkg = a.substring(0, j);
+ cln = a.substring(j + 1);
+ } else {
+ cln = a;
+ }
+ }
+ }
+ if (verbose)
+ err.println("pkg=" + pkg + ", cln=" + cln);
+ }
+
+ // Read keys and values
+ //
+ Hasher load() throws IOException {
+ BufferedReader br
+ = new BufferedReader(new InputStreamReader(System.in));
+ for (String ln; (ln = br.readLine()) != null;) {
+ String[] ws = ln.split(",?\\s+", 2);
+ String w = ws[0].replaceAll("\"", "");
+ if (keys.contains(w))
+ throw new RuntimeException("Duplicate word in input: " + w);
+ keys.add(w);
+ if (ws.length < 2)
+ throw new RuntimeException("Missing expression for key " + w);
+ values.add(ws[1]);
+ }
+ return this;
+ }
+
+ Object[] ht; // Hash table itself
+ int nb; // Number of bits (lg table size)
+ int md; // Maximum chain depth
+ int mask; // Hash-code mask
+ int shift; // Hash-code shift size
+
+ int hash(String w) {
+ return (w.hashCode() >> shift) & mask;
+ }
+
+ // Build a hash table of size 2^nb, shifting the hash code by s bits
+ //
+ void build(int nb, int s) {
+
+ this.nb = nb;
+ this.shift = s;
+ int n = 1 << nb;
+ this.mask = n - 1;
+ ht = new Object[n];
+ int nw = keys.size();
+
+ for (int i = 0; i < nw; i++) {
+ String w = (String)keys.get(i);
+ String v = (String)values.get(i);
+ int h = hash(w);
+ if (ht[h] == null)
+ ht[h] = new Object[] { w, v };
+ else
+ ht[h] = new Object[] { w, v, ht[h] };
+ }
+
+ this.md = 0;
+ for (int i = 0; i < n; i++) {
+ int d = 1;
+ for (Object[] a = (Object[])ht[i];
+ a != null && a.length > 2;
+ a = (Object[])a[2], d++);
+ this.md = Math.max(md, d);
+ }
+
+ }
+
+ Hasher build() {
+ // Iterate through acceptable table sizes
+ for (int nb = 2; nb < maxBits; nb++) {
+ // Iterate through possible shift sizes
+ for (int s = 0; s < (32 - nb); s++) {
+ build(nb, s);
+ if (verbose)
+ err.println("nb=" + nb + " s=" + s + " md=" + md);
+ if (md <= maxDepth) {
+ // Success
+ out.flush();
+ if (cln != null)
+ err.print(cln + ": ");
+ err.println("Table size " + (1 << nb) + " (" + nb + " bits)"
+ + ", shift " + shift
+ + ", max chain depth " + md);
+ return this;
+ }
+ }
+ }
+ throw new RuntimeException("Cannot find a suitable size"
+ + " within given constraints");
+ }
+
+ // Look for the given key in the hash table
+ //
+ String get(String k) {
+ int h = hash(k);
+ Object[] a = (Object[])ht[h];
+ for (;;) {
+ if (a[0].equals(k))
+ return (String)a[1];
+ if (a.length < 3)
+ return null;
+ a = (Object[])a[2];
+ }
+ }
+
+ // Test that all input keys can be found in the table
+ //
+ Hasher test() {
+ if (verbose)
+ err.println();
+ for (int i = 0, n = keys.size(); i < n; i++) {
+ String w = (String)keys.get(i);
+ String v = get(w);
+ if (verbose)
+ err.println(hash(w) + "\t" + w);
+ if (!v.equals(values.get(i)))
+ throw new Error("Incorrect value: " + w + " --> "
+ + v + ", should be " + values.get(i));
+ }
+ return this;
+ }
+
+ String ind = ""; // Indent prefix
+
+ // Generate code for a single table entry
+ //
+ void genEntry(Object[] a, int depth, PrintWriter pw) {
+ Object v = empty ? null : a[1];
+ pw.print("new Object[] { \"" + a[0] + "\", " + v);
+ if (a.length < 3) {
+ pw.print(" }");
+ return;
+ }
+ pw.println(",");
+ pw.print(ind + " ");
+ for (int i = 0; i < depth; i++)
+ pw.print(" ");
+ genEntry((Object[])a[2], depth + 1, pw);
+ pw.print(" }");
+ }
+
+ // Generate a PreHashedMap subclass from the computed hash table
+ //
+ Hasher generate() throws IOException {
+ if (cln == null)
+ return this;
+ PrintWriter pw
+ = new PrintWriter(new BufferedWriter(new OutputStreamWriter(out)));
+
+ if (inner)
+ ind = " ";
+
+ if (!inner && pkg != null) {
+ pw.println();
+ pw.println("package " + pkg + ";");
+ pw.println();
+ }
+
+ if (inner) {
+ pw.println(ind + "private static final class " + cln);
+ } else {
+ pw.println();
+ pw.println("public final class " + cln);
+ }
+ pw.println(ind + " extends sun.util.PreHashedMap<" + vtype +">");
+ pw.println(ind + "{");
+
+ pw.println();
+ pw.println(ind + " private static final int ROWS = "
+ + ht.length + ";");
+ pw.println(ind + " private static final int SIZE = "
+ + keys.size() + ";");
+ pw.println(ind + " private static final int SHIFT = "
+ + shift + ";");
+ pw.println(ind + " private static final int MASK = 0x"
+ + Integer.toHexString(mask) + ";");
+ pw.println();
+
+ pw.println(ind + " " + (inner ? "private " : "public ")
+ + cln + "() {");
+ pw.println(ind + " super(ROWS, SIZE, SHIFT, MASK);");
+ pw.println(ind + " }");
+ pw.println();
+
+ pw.println(ind + " protected void init(Object[] ht) {");
+ for (int i = 0; i < ht.length; i++) {
+ if (ht[i] == null)
+ continue;
+ Object[] a = (Object[])ht[i];
+ pw.print(ind + " ht[" + i + "] = ");
+ genEntry(a, 0, pw);
+ pw.println(";");
+ }
+ pw.println(ind + " }");
+ pw.println();
+
+ pw.println(ind + "}");
+ if (inner)
+ pw.println();
+
+ pw.close();
+ return this;
+ }
+
+ public static void main(String[] args) throws IOException {
+ new Hasher(args)
+ .load()
+ .build()
+ .test()
+ .generate();
+ }
+
+}
diff --git a/jdk/make/tools/src/build/tools/jarreorder/JarReorder.java b/jdk/make/tools/src/build/tools/jarreorder/JarReorder.java
new file mode 100644
index 0000000..19f33a7
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jarreorder/JarReorder.java
@@ -0,0 +1,316 @@
+/*
+ * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * Read an input file which is output from a java -verbose run,
+ * combine with an argument list of files and directories, and
+ * write a list of items to be included in a jar file.
+ */
+
+package build.tools.jarreorder;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Vector;
+import java.io.PrintStream;
+import java.io.FileOutputStream;
+
+public class JarReorder {
+
+ // To deal with output
+ private static PrintStream out;
+
+ private final static boolean useTopDir = false;
+
+ private static void usage() {
+ String help;
+ help =
+ "Usage: jar JarReorder [-o <outputfile>] <order_list> <exclude_list> <file> ...\n"
+ + " order_list is a file containing names of files to load\n"
+ + " in order at the end of a jar file.\n"
+ + " exclude_list is a file containing names of files/directories\n"
+ + " NOT to be included in a jar file.\n";
+ if (useTopDir)
+ help +=
+ " top_dir is the top of the directory structure to be searched;\n"
+ + " the contents of the lists and remaining arguments are\n"
+ + " relative to this.\n";
+ help +=
+ "\n"
+ + "The order_list or exclude_list may be replaced by a \"_\" if no\n"
+ + "data is to be provided.\n"
+ + "\n"
+ + " The remaining arguments are files or directories to be included\n"
+ + " in a jar file, from which will be excluded thse entries which\n"
+ + " appear in the exclude list.\n";
+ System.err.println(help);
+ System.exit(1);
+ }
+
+
+ /*
+ * Create a list of files to be included in a jar file, such that the
+ * some the files will appear in a specific order, and allowing certain
+ * files and directories to be excluded.
+ *
+ * Command line arguments are
+ * - optional -o outputfile
+ * - name of a file containing a list of files to be included in a jar file.
+ * - name of a file containing a list of files (or directories) to be
+ * excluded from the jar file.
+ * - names of files or directories to be searched for files to include
+ * in the jar file.
+ */
+ public static void main(String[] args) {
+
+ HashMap filesExcluded = new HashMap();
+ Vector filesIncluded = new Vector();
+ int fileArgs;
+ String topDirName = "";
+ int arglen = args.length;
+ int argpos = 0;
+
+ // Look for "-o outputfilename" option
+ if ( arglen > 0 ) {
+ if ( arglen >= 2 && args[0].equals("-o") ) {
+ try {
+ out = new PrintStream(new FileOutputStream(args[1]));
+ } catch ( FileNotFoundException e ) {
+ System.err.println("Error: " + e.getMessage());
+ e.printStackTrace(System.err);
+ System.exit(1);
+ }
+ argpos += 2;
+ arglen -= 2;
+ } else {
+ System.err.println("Error: Illegal arg count");
+ System.exit(1);
+ }
+ } else {
+ out = System.out;
+ }
+
+ fileArgs = useTopDir ? 3 : 2;
+
+ if (arglen <= fileArgs) {
+ usage();
+ }
+
+ // Read the ordered list of files to be included in rt.jar.
+ // Read the list of files/directories to be excluded from rt.jar.
+
+ Vector orderList = readListFromFile(args[argpos], true);
+ Vector excludeList = readListFromFile(args[argpos+1], false);
+ if (useTopDir) {
+ topDirName = args[argpos+2];
+ if (!topDirName.endsWith(File.separator))
+ topDirName = topDirName + File.separator;
+ }
+
+ // Copy these lists into filesExcluded so that these files will be excluded
+ // from the file list. (The orderList files will be appended later.)
+
+ for (int i = 0; i < orderList.size(); ++i) {
+ String s = (String) orderList.elementAt(i);
+ filesExcluded.put(s, s);
+ }
+ for (int i = 0; i < excludeList.size(); ++i) {
+ String s = (String) excludeList.elementAt(i);
+ filesExcluded.put(s, s);
+ }
+
+ // The remaining arguments are names of files/directories to be included
+ // in the jar file.
+
+ String[] files = new String[arglen - fileArgs];
+ for (int i = fileArgs; i < arglen; ++i) {
+ files[i-fileArgs] = args[argpos+i];
+ filesExcluded.put(args[argpos+i], args[argpos+i]);
+ }
+
+ // Expand file/directory list to file list excluding those
+ // read from the class list.
+
+ if (useTopDir)
+ expand(new File(topDirName), files, filesIncluded, filesExcluded, topDirName);
+ else
+ expand(null, files, filesIncluded, filesExcluded, null);
+
+ // Now add the ordered list to the end of the expanded list.
+ // Add in REVERSE ORDER, so that the first element is closest to
+ // the end (and the index).
+
+ HashSet excludeSet = new HashSet(excludeList);
+ for (int i = orderList.size() - 1; i >= 0; --i) {
+ String s = (String) orderList.elementAt(i);
+ if (excludeSet.contains(s)) {
+ System.err.println("Included file " + s + " is also excluded, skipping.");
+ continue;
+ }
+ if (new File(topDirName + s).exists())
+ filesIncluded.addElement(s);
+ else
+ System.err.println("Included file "+s+" missing, skipping.");
+ }
+
+ // Print results.
+
+ for (int i = 0; i < filesIncluded.size(); ++i) {
+ if (useTopDir) {
+ out.print("-C ");
+ out.print(topDirName);
+ out.print(" ");
+ }
+ out.println((String)filesIncluded.elementAt(i));
+ }
+
+ out.flush();
+ out.close();
+ }
+
+
+ /*
+ * Read a file containing a list of files into a Vector.
+ */
+ private static Vector readListFromFile(String fileName,
+ boolean addClassSuffix) {
+
+ BufferedReader br = null;
+ Vector v = new Vector(2000);
+
+ if ("-".equals(fileName))
+ return v;
+
+ try {
+ br = new BufferedReader(new FileReader(fileName));
+
+ // Read the input file a line at a time. # in column 1 is a comment.
+
+ while (true) {
+ String line = null;
+ line = br.readLine();
+
+ if (line == null)
+ break;
+
+ if (line.length() == 0 ||
+ line.charAt(0) == '#')
+ continue;
+
+ // Convert forward or back slashes to the type expected for
+ // the current platform.
+
+ if (File.separatorChar == '/')
+ line = line.replace('\\', '/');
+ else
+ line = line.replace('/', '\\');
+
+ line = line.trim();
+ if (addClassSuffix) {
+ if (!line.endsWith(".class")) {
+ line = line + ".class";
+ }
+ }
+ v.addElement(line);
+ }
+ br.close();
+ } catch (FileNotFoundException e) {
+ System.err.println("Can't find file \"" + fileName + "\".");
+ System.exit(1);
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.exit(2);
+ }
+ return v;
+ }
+
+
+ /*
+ * Expands list of files to process into full list of all files that
+ * can be found by recursively descending directories.
+ */
+ private static void expand(File dir, String[] files,
+ Vector includedFiles, HashMap excludedFiles,
+ String topDirName) {
+ if (files == null) {
+ return;
+ }
+ for (int i = 0; i < files.length; i++) {
+ File f = (dir == null) ? new File(files[i])
+ : new File(dir, files[i]);
+ if (f.isFile()) {
+ String filePath = f.getPath();
+
+ if (useTopDir) {
+ if (filePath.startsWith(topDirName))
+ filePath = filePath.substring(topDirName.length());
+ }
+
+ if (filePath.length() >= 2 &&
+ filePath.charAt(0) == '.' &&
+ filePath.charAt(1) == File.separatorChar)
+ filePath = filePath.substring(2);
+
+ if (!excludedFiles.containsKey(filePath)) {
+ excludedFiles.put(filePath, filePath);
+ includedFiles.addElement(filePath);
+ }
+ } else if (f.isDirectory()) {
+ String dirPath = f.getPath();
+ dirPath = (dirPath.endsWith(File.separator)) ? dirPath :
+ (dirPath + File.separator);
+
+ if (useTopDir) {
+ if (dirPath.startsWith(topDirName))
+ dirPath = dirPath.substring(topDirName.length());
+ }
+
+ if (dirPath.length() >= 2 &&
+ dirPath.charAt(0) == '.' &&
+ dirPath.charAt(1) == File.separatorChar)
+ dirPath = dirPath.substring(2);
+
+ if (!excludedFiles.containsKey(dirPath)) {
+
+ // Sort the directory list so that entries in the jar file
+ // are in a repeatable order. The order itself is not particularly
+ // important. [File.list() is unpredictable.]
+
+ String[] dirList = f.list();
+ Arrays.sort(dirList);
+ expand(f, dirList, includedFiles, excludedFiles, topDirName);
+ }
+ } else {
+ System.err.println("Error accessing: " + f.getPath());
+ }
+ }
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jarsplit/JarSplit.java b/jdk/make/tools/src/build/tools/jarsplit/JarSplit.java
new file mode 100644
index 0000000..804cc88
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jarsplit/JarSplit.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jarsplit;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.io.FileOutputStream;
+import java.util.Vector;
+import java.lang.reflect.Array;
+
+/*
+ * This class is a utility class to take a file list and split them into
+ * class file list and non-class file (such as image, audio file) list.
+ */
+public class JarSplit {
+ /* classlist[0] contains class file list
+ * classlist[1] contains non-class file list
+ */
+ private static Vector<String>[] classlist = (Vector<String>[])(new Vector[2]);
+
+ /* The 2 class list name passed as arguments. */
+ private static String[] fileNamelist = new String[2];
+
+ private static void printUsage() {
+ String help =
+ "Usage: java JarSplit classlist -o <class file list> <non-class file list> \n"
+ + " This class takes a class list generated by JarReorder or some other tools \n"
+ + " and outputs two files which contain class file list and non-class file list.\n"
+ + " Example: java JarSplit classlist -o classlist nonClasslist \n";
+
+ System.err.println(help);
+ System.exit(1);
+ }
+
+ public static void main(String[] args) {
+
+ int arglen = args.length;
+
+ if (arglen < 4 || !args[1].equals("-o")) {
+ /* Print out the usage of this class. */
+ printUsage();
+ }
+
+ for (int i = 0; i < 2; i++) {
+ fileNamelist[i] = args[i + 2];
+ classlist[i] = new Vector<String>();
+ }
+
+ if (generateClassLists(args[0]) == true) {
+ writeClassListToOutput();
+ }
+ }
+
+ /* This method takes the classlist and generate two lists.
+ @param inFileName the name of the file containing a list
+ of the class files and non-class files.
+ @exception FileNotFoundException if the passed in file is not found
+ IOException if there is any IO error
+ */
+ private static boolean generateClassLists(String inFileName) {
+ BufferedReader br = null;
+
+ try {
+ br = new BufferedReader(new FileReader(inFileName));
+ boolean match = false;
+
+ while (true) {
+ String line = null;
+ line = br.readLine();
+
+ if (line == null) {
+ break;
+ }
+
+ /* Skip empty or comment lines. */
+ if (line.length() == 0 ||
+ line.charAt(0) == '#') {
+ continue;
+ }
+
+ line = line.trim();
+
+ if (!line.endsWith(".class")) {
+ classlist[1].add(line); /* Add to class list. */
+ } else {
+ classlist[0].add(line); /* Add to non-class list. */
+ }
+ }
+ br.close();
+ } catch (FileNotFoundException e) {
+ System.err.println("Can't find file \"" + inFileName + "\".");
+ return false;
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.exit(2);
+ }
+
+ return true;
+ }
+
+ /* Helper method to write class list to the output file specified in the
+ command.
+ */
+ private static void writeClassListToOutput() {
+
+ try {
+ for (int i = 0; i < fileNamelist.length; i++) {
+ PrintStream out = new PrintStream(new FileOutputStream(fileNamelist[i]));
+
+ for (int j = 0; j < classlist[i].size(); j++) {
+ out.println(classlist[i].elementAt(j));
+ }
+
+ out.flush();
+ out.close();
+ }
+ } catch ( FileNotFoundException e ) {
+ System.err.println("Error: " + e.getMessage());
+ e.printStackTrace(System.err);
+ System.exit(3);
+ }
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/BackEnd.java b/jdk/make/tools/src/build/tools/javazic/BackEnd.java
new file mode 100644
index 0000000..25b7a25
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/BackEnd.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+/**
+ * <code>BackEnd</code> is an abstract base class for a back-end of compiling
+ * Olson's zoneinfo database and generating Java zoneinfo database.
+ *
+ * @since 1.4
+ */
+abstract class BackEnd {
+
+ /**
+ * Receives each zone's TimeZone information which was created by
+ * {@link Zoneinfo#parse} in class <code>Zoneinfo</code>,
+ * and processes it.
+ *
+ * @param tz Timezone object for each zone
+ * @return 0 if no error occurred, otherwise 1.
+ */
+ abstract int processZoneinfo(Timezone tz);
+
+ /**
+ * Receives whole information which is generated by JavaZic's front-end
+ * in the form of Mapping object and generates all Java zone information
+ * files.
+ *
+ * @param m Mappings object which is generated by
+ * {@link Main#compile() Main.compile()}.
+ * @return 0 if no error occurred, otherwise 1.
+ */
+ abstract int generateSrc(Mappings m);
+
+ /**
+ * Decides which backend class should be used and returns its instance.
+ * @return an instance of backend class
+ */
+ static BackEnd getBackEnd() {
+ if (Zoneinfo.isYearForTimeZoneDataSpecified) {
+ return new Simple();
+ } else if (Main.outputDoc) {
+ return new GenDoc();
+ } else {
+ return new Gen();
+ }
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/Checksum.java b/jdk/make/tools/src/build/tools/javazic/Checksum.java
new file mode 100644
index 0000000..dd22b27
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/Checksum.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.util.zip.CRC32;
+
+/**
+ * Checksum provides methods for calculating a CRC32 value for a
+ * transitions table.
+ *
+ * @since 1.4
+ */
+public class Checksum extends CRC32
+{
+ /**
+ * Updates the CRC32 value from each byte of the given int
+ * value. The bytes are used in the big endian order.
+ * @param val the int value
+ */
+ public void update(int val) {
+ byte[] b = new byte[4];
+ b[0] = (byte)((val >>> 24) & 0xff);
+ b[1] = (byte)((val >>> 16) & 0xff);
+ b[2] = (byte)((val >>> 8) & 0xff);
+ b[3] = (byte)(val & 0xff);
+ update(b);
+ }
+
+ /**
+ * Updates the CRC32 value from each byte of the given long
+ * value. The bytes are used in the big endian order.
+ * @param val the long value
+ */
+ void update(long val) {
+ byte[] b = new byte[8];
+ b[0] = (byte)((val >>> 56) & 0xff);
+ b[1] = (byte)((val >>> 48) & 0xff);
+ b[2] = (byte)((val >>> 40) & 0xff);
+ b[3] = (byte)((val >>> 32) & 0xff);
+ b[4] = (byte)((val >>> 24) & 0xff);
+ b[5] = (byte)((val >>> 16) & 0xff);
+ b[6] = (byte)((val >>> 8) & 0xff);
+ b[7] = (byte)(val & 0xff);
+ update(b);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/DayOfWeek.java b/jdk/make/tools/src/build/tools/javazic/DayOfWeek.java
new file mode 100644
index 0000000..084c939
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/DayOfWeek.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2004-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+/**
+ * Day of week enum.
+ *
+ * @since 1.6
+ */
+
+enum DayOfWeek {
+ SUNDAY("Sun"),
+ MONDAY("Mon"),
+ TUESDAY("Tue"),
+ WEDNESDAY("Wed"),
+ THURSDAY("Thu"),
+ FRIDAY("Fri"),
+ SATURDAY("Sat");
+
+ private final String abbr;
+
+ private DayOfWeek(String abbr) {
+ this.abbr = abbr;
+ }
+
+ String getAbbr() {
+ return abbr;
+ }
+
+ int value() {
+ return ordinal() + 1;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/Gen.java b/jdk/make/tools/src/build/tools/javazic/Gen.java
new file mode 100644
index 0000000..8f4be4a
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/Gen.java
@@ -0,0 +1,353 @@
+/*
+ * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.io.IOException;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.DataOutputStream;
+import java.io.RandomAccessFile;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import sun.util.calendar.ZoneInfoFile;
+
+/**
+ * <code>Gen</code> is one of back-end classes of javazic, and generates
+ * ZoneInfoMappings and zone-specific file for each zone.
+ */
+class Gen extends BackEnd {
+
+ /**
+ * Generates datafile in binary TLV format for each time zone.
+ * Regarding contents of output files, see {@link ZoneInfoFile}.
+ *
+ * @param Timezone
+ * @return 0 if no errors, or 1 if error occurred.
+ */
+ int processZoneinfo(Timezone tz) {
+ try {
+ int size;
+ String outputDir = Main.getOutputDir();
+ String zonefile = ZoneInfoFile.getFileName(tz.getName());
+
+ /* If outputDir doesn't end with file-separator, adds it. */
+ if (!outputDir.endsWith(File.separator)) {
+ outputDir += File.separatorChar;
+ }
+
+ /* If zonefile includes file-separator, it's treated as part of
+ * pathname. And make directory if necessary.
+ */
+ int index = zonefile.lastIndexOf(File.separatorChar);
+ if (index != -1) {
+ outputDir += zonefile.substring(0, index+1);
+ }
+ File outD = new File(outputDir);
+ outD.mkdirs();
+
+ FileOutputStream fos =
+ new FileOutputStream(outputDir + zonefile.substring(index+1));
+ DataOutputStream dos = new DataOutputStream(fos);
+
+ /* Output Label */
+ dos.write(ZoneInfoFile.JAVAZI_LABEL, 0,
+ ZoneInfoFile.JAVAZI_LABEL.length);
+
+ /* Output Version of ZoneInfoFile */
+ dos.writeByte(ZoneInfoFile.JAVAZI_VERSION);
+
+ List<Long> transitions = tz.getTransitions();
+ if (transitions != null) {
+ List<Integer> dstOffsets = tz.getDstOffsets();
+ List<Integer> offsets = tz.getOffsets();
+
+ if ((dstOffsets == null && offsets != null) ||
+ (dstOffsets != null && offsets == null)) {
+ Main.panic("Data not exist. (dstOffsets or offsets)");
+ return 1;
+ }
+
+ /* Output Transition records */
+ dos.writeByte(ZoneInfoFile.TAG_Transition);
+ size = transitions.size();
+ dos.writeShort((size * 8) & 0xFFFF);
+ int dstoffset;
+ for (int i = 0; i < size; i++) {
+ /* if DST offset is 0, this means DST isn't used.
+ * (NOT: offset's index is 0.)
+ */
+ if ((dstoffset =
+ ((Integer)dstOffsets.get(i)).intValue()) == -1) {
+ dstoffset = 0;
+ }
+
+ dos.writeLong((((Long)transitions.get(i)).longValue() << 12)
+ | (dstoffset << 4)
+ | ((Integer)offsets.get(i)).intValue());
+
+ }
+
+ /* Output data for GMTOffset */
+ List<Integer> gmtoffset = tz.getGmtOffsets();
+ dos.writeByte(ZoneInfoFile.TAG_Offset);
+ size = gmtoffset.size();
+ dos.writeShort((size * 4) & 0xFFFF);
+ for (int i = 0; i < size; i++) {
+ dos.writeInt(gmtoffset.get(i));
+ }
+ }
+
+ /* Output data for SimpleTimeZone */
+ List<RuleRec> stz = tz.getLastRules();
+ if (stz != null) {
+ RuleRec[] rr = new RuleRec[2];
+ boolean wall = true;
+
+ rr[0] = stz.get(0);
+ rr[1] = stz.get(1);
+
+ dos.writeByte(ZoneInfoFile.TAG_SimpleTimeZone);
+ wall = rr[0].getTime().isWall() && rr[1].getTime().isWall();
+ if (wall) {
+ dos.writeShort(32);
+ } else {
+ dos.writeShort(40);
+ }
+
+ for (int i = 0; i < 2; i++) {
+ dos.writeInt(rr[i].getMonthNum() - 1); // 0-based month number
+ dos.writeInt(rr[i].getDay().getDayForSimpleTimeZone());
+ dos.writeInt(rr[i].getDay().getDayOfWeekForSimpleTimeZoneInt());
+ dos.writeInt((int)rr[i].getTime().getTime());
+ if (!wall) {
+ dos.writeInt((rr[i].getTime().getType() & 0xFF) - 1);
+ }
+ }
+ }
+
+ /* Output RawOffset */
+ dos.writeByte(ZoneInfoFile.TAG_RawOffset);
+ dos.writeShort(4);
+ dos.writeInt(tz.getRawOffset());
+
+ /* Output willGMTOffsetChange flag */
+ if (tz.willGMTOffsetChange()) {
+ dos.writeByte(ZoneInfoFile.TAG_GMTOffsetWillChange);
+ dos.writeShort(1);
+ dos.writeByte(1);
+ }
+
+ /* Output LastDSTSaving */
+ dos.writeByte(ZoneInfoFile.TAG_LastDSTSaving);
+ dos.writeShort(2);
+ dos.writeShort(tz.getLastDSTSaving()/1000);
+
+ /* Output checksum */
+ dos.writeByte(ZoneInfoFile.TAG_CRC32);
+ dos.writeShort(4);
+ dos.writeInt(tz.getCRC32());
+
+ fos.close();
+ dos.close();
+ } catch(IOException e) {
+ Main.panic("IO error: "+e.getMessage());
+ return 1;
+ }
+
+ return 0;
+ }
+
+ /**
+ * Generates ZoneInfoMappings in binary TLV format for each zone.
+ * Regarding contents of output files, see {@link ZoneInfoFile}.
+ *
+ * @param Mappings
+ * @return 0 if no errors, or 1 if error occurred.
+ */
+ int generateSrc(Mappings map) {
+ try {
+ int index;
+ int block_size;
+ int roi_size;
+ long fp;
+ String outputDir = Main.getOutputDir();
+
+ /* If outputDir doesn't end with file-separator, adds it. */
+ if (!outputDir.endsWith(File.separator)) {
+ outputDir += File.separatorChar;
+ }
+
+ File outD = new File(outputDir);
+ outD.mkdirs();
+
+ /* Open ZoneInfoMapping file to write. */
+ RandomAccessFile raf =
+ new RandomAccessFile(outputDir + ZoneInfoFile.JAVAZM_FILE_NAME, "rw");
+
+ /* Whether rawOffsetIndex list exists or not. */
+ List<Integer> roi = map.getRawOffsetsIndex();
+ if (roi == null) {
+ Main.panic("Data not exist. (rawOffsetsIndex)");
+ return 1;
+ }
+ roi_size = roi.size();
+
+ /* Whether rawOffsetIndexTable list exists or not. */
+ List<Set<String>> roit = map.getRawOffsetsIndexTable();
+ if (roit == null || roit.size() != roi_size) {
+ Main.panic("Data not exist. (rawOffsetsIndexTable) Otherwise, Invalid size");
+ return 1;
+ }
+
+ /* Output Label */
+ raf.write(ZoneInfoFile.JAVAZM_LABEL, 0,
+ ZoneInfoFile.JAVAZM_LABEL.length);
+
+ /* Output Version */
+ raf.writeByte(ZoneInfoFile.JAVAZM_VERSION);
+
+ index = ZoneInfoFile.JAVAZM_LABEL.length + 2;
+
+ /* Output Version of Olson's tzdata */
+ byte[] b = Main.getVersionName().getBytes("UTF-8");
+ raf.writeByte(ZoneInfoFile.TAG_TZDataVersion);
+ raf.writeShort((b.length+1) & 0xFFFF);
+ raf.write(b);
+ raf.writeByte(0x00);
+ index += b.length + 4;
+
+ /* Output ID list. */
+ raf.writeByte(ZoneInfoFile.TAG_ZoneIDs);
+ block_size = 2;
+ raf.writeShort(block_size & 0xFFFF);
+ short nID = 0;
+ raf.writeShort(nID & 0xFFFF);
+ for (int i = 0; i < roi_size; i++) {
+ for (String key : roit.get(i)) {
+ byte size = (byte)key.getBytes("UTF-8").length;
+ raf.writeByte(size & 0xFF);
+ raf.write(key.getBytes("UTF-8"), 0, size);
+ block_size += 1 + size;
+ nID++;
+ }
+ }
+ fp = raf.getFilePointer();
+ raf.seek(index);
+ raf.writeShort((block_size) & 0xFFFF);
+ raf.writeShort(nID & 0xFFFF);
+ raf.seek(fp);
+
+ /* Output sorted rawOffset list. */
+ raf.writeByte(ZoneInfoFile.TAG_RawOffsets);
+ index += 3 + block_size;
+ block_size = roi_size * 4;
+ raf.writeShort(block_size & 0xFFFF);
+ for (int i = 0; i < roi_size; i++) {
+ raf.writeInt(Integer.parseInt(roi.get(i).toString()));
+ }
+
+ /* Output sorted rawOffsetIndex list. */
+ raf.writeByte(ZoneInfoFile.TAG_RawOffsetIndices);
+ index += 3 + block_size;
+ block_size = 0;
+ raf.writeShort(block_size & 0xFFFF);
+ int num;
+ for (int i = 0; i < roi_size; i++) {
+ num = roit.get(i).size();
+ block_size += num;
+ for (int j = 0; j < num; j++) {
+ raf.writeByte(i);
+ }
+ }
+ fp = raf.getFilePointer();
+ raf.seek(index);
+ raf.writeShort((block_size) & 0xFFFF);
+ raf.seek(fp);
+
+ /* Whether alias list exists or not. */
+ Map<String,String> a = map.getAliases();
+ if (a == null) {
+ Main.panic("Data not exist. (aliases)");
+ return 0;
+ }
+
+ /* Output ID list. */
+ raf.writeByte(ZoneInfoFile.TAG_ZoneAliases);
+ index += 3 + block_size;
+ block_size = 2;
+ raf.writeShort(block_size & 0xFFFF);
+ raf.writeShort(a.size() & 0xFFFF);
+ for (String key : a.keySet()) {
+ String alias = a.get(key);
+ byte key_size = (byte)key.length();
+ byte alias_size = (byte)alias.length();
+ raf.writeByte(key_size & 0xFF);
+ raf.write(key.getBytes("UTF-8"), 0, key_size);
+ raf.writeByte(alias_size & 0xFF);
+ raf.write(alias.getBytes("UTF-8"), 0, alias_size);
+ block_size += 2 + key_size + alias_size;
+ }
+ fp = raf.getFilePointer();
+ raf.seek(index);
+ raf.writeShort((block_size) & 0xFFFF);
+ raf.seek(fp);
+
+ /* Output the exclude list if it exists. */
+ List<String> excludedZones = map.getExcludeList();
+ if (excludedZones != null) {
+ raf.writeByte(ZoneInfoFile.TAG_ExcludedZones);
+ index += 3 + block_size;
+ block_size = 2;
+ raf.writeShort(block_size & 0xFFFF); // place holder
+ raf.writeShort(excludedZones.size()); // the number of excluded zones
+ for (String name : excludedZones) {
+ byte size = (byte) name.length();
+ raf.writeByte(size); // byte length
+ raf.write(name.getBytes("UTF-8"), 0, size); // zone name
+ block_size += 1 + size;
+ }
+ fp = raf.getFilePointer();
+ raf.seek(index);
+ raf.writeShort(block_size & 0xFFFF);
+ raf.seek(fp);
+ }
+
+ /* Close ZoneInfoMapping file. */
+ raf.close();
+ } catch(IOException e) {
+ Main.panic("IO error: "+e.getMessage());
+ return 1;
+ }
+
+ return 0;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/GenDoc.java b/jdk/make/tools/src/build/tools/javazic/GenDoc.java
new file mode 100644
index 0000000..dc74058
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/GenDoc.java
@@ -0,0 +1,785 @@
+/*
+ * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.StringTokenizer;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import sun.util.calendar.ZoneInfoFile;
+
+/**
+ * <code>GenDoc</code> is one of back-end classes of javazic, and generates
+ * index.html and other html files which prints the detailed time zone
+ * information for each zone.
+ */
+class GenDoc extends BackEnd {
+
+ private static final String docDir = "doc";
+
+ private static final String header1 =
+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Frameset//EN\"" +
+ "\"http://www.w3.org/TR/REC-html40/frameset.dtd\">\n" +
+ "<HTML>\n<HEAD>\n<!-- Generated by javazic on ";
+ private static final String header2 =
+ "-->\n<TITLE>\n" +
+ "Java Platform, Standard Edition - TimeZone information based on ";
+ private static final String header3 =
+ "-->\n<TITLE>\n" +
+ "Java Platform, Standard Edition TimeZone - ";
+ private static final String header4 =
+ "</TITLE>\n" +
+ "</HEAD>\n\n";
+
+ private static final String body1 =
+ "<BODY BGCOLOR=\"white\">\n";
+ private static final String body2 =
+ "</BODY>\n";
+
+ private static final String footer =
+ "</HTML>\n";
+
+
+ // list of time zone name and zonefile name/real time zone name
+ // e.g.
+ // key (String) : value (String)
+ // "America/Denver" : "America/Denver.html" (real time zone)
+ // "America/Shiprock" : "America/Denver" (alias)
+ TreeMap<String,String> timezoneList = new TreeMap<String,String>();
+
+ // list of time zone's display name and time zone name
+ // e.g.
+ // key (String) : value (String)
+ // "Tokyo, Asia" : "Asia/Tokyo"
+ // "Marengo, Indiana, America" : "America/Indiana/Marengo"
+ // (aliases included)
+ TreeMap<String,String> displayNameList = new TreeMap<String,String>();
+
+ // list of top level regions
+ // e.g.
+ // key (String) : value (String)
+ // "America" : "America.html"
+ // (including entries in America/Indiana/, America/Kentucky/, ...)
+ TreeMap<String,String> regionList = new TreeMap<String,String>();
+
+ // mapping list from zone name to latitude & longitude
+ // This list is generated from zone.tab.
+ // e.g.
+ // key (String) : value (LatitudeAndLongitude object)
+ // "Asia/Tokyo" : latitude=35.3916, longitude=13.9444
+ // (aliases not included)
+ HashMap<String,LatitudeAndLongitude> mapList = null;
+
+ // SortedMap of zone IDs sorted by their GMT offsets. If zone's GMT
+ // offset will change in the future, its last known offset is
+ // used.
+ SortedMap<Integer, Set<String>> zonesByOffset = new TreeMap<Integer, Set<String>>();
+
+ /**
+ * Generates HTML document for each zone.
+ * @param Timezone
+ * @return 0 if no errors, or 1 if error occurred.
+ */
+ int processZoneinfo(Timezone tz) {
+ try {
+ int size;
+ int index;
+ String outputDir = Main.getOutputDir();
+ String zonename = tz.getName();
+ String zonefile = ZoneInfoFile.getFileName(zonename) + ".html";
+ List<RuleRec> stz = tz.getLastRules();
+ timezoneList.put(zonename, zonefile);
+ displayNameList.put(transform(zonename), zonename);
+
+ // Populate zonesByOffset. (Zones that will change their
+ // GMT offsets are also added to zonesByOffset here.)
+ int lastKnownOffset = tz.getRawOffset();
+ Set<String> set = zonesByOffset.get(lastKnownOffset);
+ if (set == null) {
+ set = new TreeSet<String>();
+ zonesByOffset.put(lastKnownOffset, set);
+ }
+ set.add(zonename);
+
+ /* If outputDir doesn't end with file-separator, adds it. */
+ if (!outputDir.endsWith(File.separator)) {
+ outputDir += File.separatorChar;
+ }
+ outputDir += docDir + File.separatorChar;
+
+ index = zonename.indexOf('/');
+ if (index != -1) {
+ regionList.put(zonename.substring(0, index),
+ zonename.substring(0, index) + ".html");
+ }
+
+ /* If zonefile includes file-separator, it's treated as part of
+ * pathname. And make directory if necessary.
+ */
+ index = zonefile.lastIndexOf('/');
+ if (index != -1) {
+ zonefile.replace('/', File.separatorChar);
+ outputDir += zonefile.substring(0, index+1);
+ }
+ File outD = new File(outputDir);
+ outD.mkdirs();
+
+ /* If mapfile is available, add a link to the appropriate map */
+ if ((mapList == null) && (Main.getMapFile() != null)) {
+ FileReader fr = new FileReader(Main.getMapFile());
+ BufferedReader in = new BufferedReader(fr);
+ mapList = new HashMap<String,LatitudeAndLongitude>();
+ String line;
+ while ((line = in.readLine()) != null) {
+ // skip blank and comment lines
+ if (line.length() == 0 || line.charAt(0) == '#') {
+ continue;
+ }
+ StringTokenizer tokens = new StringTokenizer(line);
+ String token = tokens.nextToken(); /* We don't use the first token. */
+ token = tokens.nextToken();
+ LatitudeAndLongitude location = new LatitudeAndLongitude(token);
+ token = tokens.nextToken();
+ mapList.put(token, location);
+ }
+ in.close();
+ }
+
+ /* Open zoneinfo file to write. */
+ FileWriter fw = new FileWriter(outputDir + zonefile.substring(index+1));
+ BufferedWriter out = new BufferedWriter(fw);
+
+ out.write(header1 + new Date() + header3 + zonename + header4);
+ out.write(body1 + "<FONT size=\"+2\"><B>" + zonename + "</B></FONT>");
+ LatitudeAndLongitude location = (LatitudeAndLongitude)mapList.get(zonename);
+ if (location != null) {
+ int deg, min, sec;
+
+ deg = location.getLatDeg();
+ min = location.getLatMin();
+ sec = location.getLatSec();
+ if (deg < 0) {
+ min = -min;
+ sec = -sec;
+ } else if (min < 0) {
+ sec = -sec;
+ }
+ out.write(" " +
+ "<A HREF=\"http://www.mapquest.com/maps/map.adp?" +
+ "latlongtype=degrees" +
+ "&latdeg=" + deg +
+ "&latmin=" + min +
+ "&latsec=" + sec);
+
+ deg = location.getLongDeg();
+ min = location.getLongMin();
+ sec = location.getLongSec();
+ if (deg < 0) {
+ min = -min;
+ sec = -sec;
+ } else if (min < 0) {
+ sec = -sec;
+ }
+ out.write("&longdeg=" + deg +
+ "&longmin=" + min +
+ "&longsec=" + sec +
+ "\" target=\"_blank\">[map]</A>");
+ }
+ out.write("\n<P>\n");
+
+ List<ZoneRec> zone = tz.getZones();
+ List<RuleRec> rule = tz.getRules();
+ if (rule != null && zone != null) {
+ out.write("<TABLE BORDER=\"0\" WIDTH=\"100%\" CELLPADDING=\"1\" CELLSPACING=\"0\">\n" +
+ "<TR>\n" +
+ "<TD BGCOLOR=\"#EEEEFF\" WIDTH=\"50%\" ALIGN=\"CENTER\"><BR>" +
+ "<A HREF=\"#Rules\">Rules</A><BR></TD>\n" +
+ "<TD BGCOLOR=\"#EEEEFF\" WIDTH=\"50%\" ALIGN=\"CENTER\">" +
+ "<A HREF=\"#Zone\"><BR>Zone<BR></A></TD>\n" +
+ "</TR>\n</TABLE>\n");
+ }
+
+ /* Output Rule records. */
+ if (rule != null) {
+ size = rule.size();
+ out.write("<P>\n<A NAME=\"Rules\">" +
+ "<FONT SIZE=\"+1\"><B>Rules</B></FONT></A>\n" +
+ "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" CELLSPACING=\"0\">\n" +
+ "<TR BGCOLOR=\"#CCCCFF\">\n" +
+ "<TD>NAME</TD><TD>FROM</TD><TD>TO</TD><TD>TYPE</TD>" +
+ "<TD>IN</TD><TD>ON</TD><TD>AT</TD><TD>SAVE</TD>" +
+ "<TD>LETTER/S</TD><TD>NOTES</TD>\n</TR>\n");
+ for (int i = 0; i < size; i++) {
+ out.write("<TR BGCOLOR=\"#FFFFFF\">\n");
+ StringTokenizer st = new StringTokenizer(rule.get(i).getLine());
+ String s;
+ if (st.hasMoreTokens()) { /* RULE - truncated */
+ st.nextToken();
+ }
+ if (st.hasMoreTokens()) { /* NAME */
+ out.write("<TD>" + st.nextToken() + "</TD>");
+ }
+ if (st.hasMoreTokens()) { /* FROM */
+ out.write("<TD>" + st.nextToken() + "</TD>");
+ }
+ if (st.hasMoreTokens()) { /* TO */
+ s = st.nextToken();
+ if (s.equals("min") || s.equals("max")) {
+ out.write("<TD><FONT COLOR=\"red\">" + s + "</FONT></TD>");
+ } else {
+ out.write("<TD>" + s + "</TD>");
+ }
+ }
+ if (st.hasMoreTokens()) { /* TYPE */
+ out.write("<TD>" + st.nextToken() + "</TD>");
+ }
+ if (st.hasMoreTokens()) { /* IN */
+ out.write("<TD>" + st.nextToken() + "</TD>");
+ }
+ if (st.hasMoreTokens()) { /* ON */
+ out.write("<TD>" + st.nextToken() + "</TD>");
+ }
+ if (st.hasMoreTokens()) { /* AT */
+ out.write("<TD>" + st.nextToken() + "</TD>");
+ }
+ if (st.hasMoreTokens()) { /* SAVE */
+ out.write("<TD>" + st.nextToken() + "</TD>");
+ }
+ if (st.hasMoreTokens()) { /* LETTER/S */
+ out.write("<TD>" + st.nextToken() + "</TD>");
+ }
+ if (st.hasMoreTokens()) { /* NOTES */
+ s = st.nextToken();
+ while (st.hasMoreTokens()) {
+ s += " " + st.nextToken();
+ }
+ index = s.indexOf('#');
+ out.write("<TD>" + s.substring(index+1) + "</TD>\n");
+ } else {
+ out.write("<TD> </TD>\n");
+ }
+ out.write("</TR>\n");
+ }
+ out.write("</TABLE>\n<P> <P>\n");
+ }
+
+ /* Output Zone records. */
+ if (zone != null) {
+ size = zone.size();
+ out.write("<P>\n<A NAME=\"Zone\">" +
+ "<FONT SIZE=\"+1\"><B>Zone</B></FONT></A>\n" +
+ "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" CELLSPACING=\"0\">\n" +
+ "<TR BGCOLOR=\"#CCCCFF\">\n<TD>GMTOFF</TD>" +
+ "<TD>RULES</TD><TD>FORMAT</TD><TD>UNTIL</TD>" +
+ "<TD>NOTES</TD>\n</TR>\n");
+ for (int i = 0; i < size; i++) {
+ out.write("<TR>\n");
+ StringTokenizer st = new StringTokenizer(zone.get(i).getLine());
+ String s = st.nextToken();
+ if (s.equals("Zone")) { /* NAME */
+ s = st.nextToken();
+ s = st.nextToken();
+ }
+ out.write("<TD>" + s + "</TD>"); /* GMTOFFSET */
+ if (st.hasMoreTokens()) { /* RULES */
+ out.write("<TD>" + st.nextToken() + "</TD>");
+ }
+ if (st.hasMoreTokens()) { /* FORMAT */
+ s = st.nextToken();
+ index = s.indexOf('#');
+ if (index != -1) {
+ if (index != 0) {
+ out.write("<TD>" + s.substring(0, index-1) +
+ "</TD>"); /* FORMAT */
+ s = s.substring(index+1);
+ } else {
+ out.write("<TD> </TD>"); /* FORMAT */
+ }
+ while (st.hasMoreTokens()) {
+ s += " " + st.nextToken();
+ }
+ out.write("<TD> </TD>"); /* UNTIL */
+ out.write("<TD>" + s + "</TD>\n</TR>\n"); /* NOTES */
+ continue;
+ } else {
+ out.write("<TD>" + s + "</TD>"); /* FORMAT */
+ }
+ }
+
+ if (st.hasMoreTokens()) { /* UNTIL */
+ s = st.nextToken();
+ while (st.hasMoreTokens()) {
+ s += " " + st.nextToken();
+ }
+ index = s.indexOf('#');
+ if (index != -1) {
+ if (index != 0) {
+ out.write("<TD>" + s.substring(0, index-1) +
+ "</TD>"); /* UNTIL */
+ } else {
+ out.write("<TD> </TD>"); /* UNTIL */
+ }
+ out.write("<TD>" + s.substring(index+1) +
+ "</TD>\n"); /* NOTES */
+ } else {
+ out.write("<TD>" + s + "</TD>"); /* UNTIL */
+ out.write("<TD> </TD>\n"); /* NOTES */
+ }
+ } else {
+ out.write("<TD> </TD>"); /* UNTIL */
+ out.write("<TD> </TD>\n"); /* NOTES */
+ }
+ out.write("</TR>\n");
+ }
+ out.write("</TABLE>\n");
+ }
+ out.write(body2 + footer);
+
+ out.close();
+ fw.close();
+ } catch(IOException e) {
+ Main.panic("IO error: "+e.getMessage());
+ return 1;
+ }
+
+ return 0;
+ }
+
+ /**
+ * Generates index.html and other top-level frame files.
+ * @param Mappings
+ * @return 0 if no errors, or 1 if error occurred.
+ */
+ int generateSrc(Mappings map) {
+ try {
+ int len;
+ Object o[];
+ String outputDir = Main.getOutputDir();
+ FileWriter fw1, fw2;
+ BufferedWriter out1, out2;
+
+ /* Whether alias list exists or not. */
+ Map<String,String> a = map.getAliases();
+ if (a == null) {
+ Main.panic("Data not exist. (aliases)");
+ return 1;
+ }
+
+ timezoneList.putAll(a);
+
+ /* If outputDir doesn't end with file-separator, adds it. */
+ if (!outputDir.endsWith(File.separator)) {
+ outputDir += File.separatorChar;
+ }
+ outputDir += docDir + File.separatorChar;
+
+ File outD = new File(outputDir);
+ outD.mkdirs();
+
+ /* Creates index.html */
+ fw1 = new FileWriter(outputDir + "index.html", false);
+ out1 = new BufferedWriter(fw1);
+
+ out1.write(header1 + new Date() + header2 + Main.getVersionName() +
+ header4 +
+ "<FRAMESET cols=\"20%,80%\">\n" +
+ "<FRAMESET rows=\"30%,70%\">\n" +
+ "<FRAME src=\"overview-frame.html\" name=\"TimeZoneListFrame\">\n" +
+ "<FRAME src=\"allTimeZone-frame1.html\" name=\"allTimeZoneFrame\">\n" +
+ "</FRAMESET>" +
+ "<FRAME src=\"overview-summary.html\" name=\"rightFrame\">\n" +
+ "</FRAMESET>\n" +
+ "<NOFRAMES>\n" +
+ "<H2>\nFrame Alert\n</H2>\n\n" +
+ "<P>\n\n" +
+ "This document is designed to be viewed using the frames feature. If you see this\n" +
+ "message, you are using a non-frame-capable web client.\n" +
+ "<BR>\n" +
+ "Link to<A HREF=\"overview-summary.html\">Non-frame version.</A>\n" +
+ "</NOFRAMES>\n" + footer);
+
+ out1.close();
+ fw1.close();
+
+
+ /* Creates overview-frame.html */
+ fw1 = new FileWriter(outputDir + "overview-frame.html", false);
+ out1 = new BufferedWriter(fw1);
+
+ out1.write(header1 + new Date() + header2 + Main.getVersionName() +
+ header4 + body1 +
+ "<TABLE BORDER=\"0\" WIDTH=\"100%\">\n<TR>\n" +
+ "<TD NOWRAP><FONT size=\"+1\">\n" +
+ "<B>Java<sup><font size=-2>TM</font></sup> Platform<br>Standard Ed.</B></FONT></TD>\n" +
+ "</TR>\n</TABLE>\n\n" +
+ "<TABLE BORDER=\"0\" WIDTH=\"100%\">\n<TR>\n<TD NOWRAP>" +
+ "<P>\n<FONT size=\"+1\">\nAll Time Zones Sorted By:</FONT>\n<BR>\n" +
+ " <A HREF=\"allTimeZone-frame1.html\" TARGET=\"allTimeZoneFrame\">GMT offsets</A></FONT>\n<BR>\n" +
+ " <A HREF=\"allTimeZone-frame2.html\" TARGET=\"allTimeZoneFrame\">Zone names</A></FONT>\n<BR>" +
+ " <A HREF=\"allTimeZone-frame3.html\" TARGET=\"allTimeZoneFrame\">City names</A></FONT>\n" +
+ "<P>\n<FONT size=\"+1\">\nContinents and Oceans</FONT>\n<BR>\n");
+
+ for (String regionKey : regionList.keySet()) {
+ out1.write(" <A HREF=\"" + regionList.get(regionKey) +
+ "\" TARGET=\"allTimeZoneFrame\">" + regionKey +
+ "</A><BR>\n");
+
+ fw2 = new FileWriter(outputDir + regionList.get(regionKey),
+ false);
+ out2 = new BufferedWriter(fw2);
+
+ out2.write(header1 + new Date() + header3 + regionKey +
+ header4 + body1 + "<FONT size=\"+1\"><B>" +
+ regionKey + "</B></FONT>\n<BR>\n<TABLE>\n<TR>\n<TD>");
+
+ boolean found = false;
+ for (String timezoneKey : timezoneList.keySet()) {
+ int regionIndex = timezoneKey.indexOf('/');
+ if (regionIndex == -1 ||
+ !regionKey.equals(timezoneKey.substring(0, regionIndex))) {
+ if (found) {
+ break;
+ } else {
+ continue;
+ }
+ }
+
+ found = true;
+ if (a.containsKey(timezoneKey)) {
+ Object realName = a.get(timezoneKey);
+ while (a.containsKey(realName)) {
+ realName = a.get(realName);
+ }
+ out2.write(timezoneKey +
+ " (alias for " + "<A HREF=\"" +
+ timezoneList.get(realName) +
+ "\" TARGET=\"rightFrame\">" +
+ realName + "</A>)");
+ } else {
+ out2.write("<A HREF=\"" + timezoneList.get(timezoneKey) +
+ "\" TARGET=\"rightFrame\">" + timezoneKey +
+ "</A>");
+ }
+ out2.write("<BR>\n");
+ }
+ out2.write("</TD>\n</TR>\n</TABLE>\n" + body2 + footer);
+
+ out2.close();
+ fw2.close();
+ }
+ out1.write("</FONT></TD>\n</TR></TABLE>\n" + body2 + footer);
+
+ out1.close();
+ fw1.close();
+
+
+ /* Creates allTimeZone-frame1.html (Sorted by GMT offsets) */
+ fw1 = new FileWriter(outputDir + "allTimeZone-frame1.html", false);
+ out1 = new BufferedWriter(fw1);
+
+ out1.write(header1 + new Date() + header2 + Main.getVersionName() +
+ header4 + body1 +
+ "<FONT size=\"+1\"><B>Sorted by GMT offsets</B></FONT>\n" +
+ "<BR>\n\n" + "<TABLE BORDER=\"0\" WIDTH=\"100%\">\n" +
+ "<TR>\n<TD NOWRAP>\n");
+
+ List<Integer> roi = map.getRawOffsetsIndex();
+ List<Set<String>> roit = map.getRawOffsetsIndexTable();
+
+ int index = 0;
+ for (Integer offset : zonesByOffset.keySet()) {
+ int off = roi.get(index);
+ Set<String> perRO = zonesByOffset.get(offset);
+ if (offset == off) {
+ // Merge aliases into zonesByOffset
+ perRO.addAll(roit.get(index));
+ }
+ index++;
+
+ for (String timezoneKey : perRO) {
+ out1.write("<TR>\n<TD><FONT SIZE=\"-1\">(" +
+ Time.toGMTFormat(offset.toString()) +
+ ")</FONT></TD>\n<TD>");
+
+ if (a.containsKey(timezoneKey)) {
+ Object realName = a.get(timezoneKey);
+ while (a.containsKey(realName)) {
+ realName = a.get(realName);
+ }
+ out1.write(timezoneKey +
+ " (alias for " + "<A HREF=\"" +
+ timezoneList.get(realName) +
+ "\" TARGET=\"rightFrame\">" + realName +
+ "</A>)");
+ } else {
+ out1.write("<A HREF=\"" + timezoneList.get(timezoneKey) +
+ "\" TARGET=\"rightFrame\">" + timezoneKey +
+ "</A>");
+ }
+ out1.write("</TD>\n</TR>\n");
+ }
+ }
+ out1.write("</FONT></TD>\n</TR>\n</TABLE>\n" + body2 + footer);
+
+ out1.close();
+ fw1.close();
+
+
+ /* Creates allTimeZone-frame2.html (Sorted by zone names) */
+ fw1 = new FileWriter(outputDir + "allTimeZone-frame2.html", false);
+ out1 = new BufferedWriter(fw1);
+
+ out1.write(header1 + new Date() + header2 + Main.getVersionName() +
+ header4 + body1 +
+ "<FONT size=\"+1\"><B>Sorted by zone names</B></FONT>\n" +
+ "<BR>\n\n" + "<TABLE BORDER=\"0\" WIDTH=\"100%\">\n" +
+ "<TR>\n<TD NOWRAP>\n");
+ o = timezoneList.keySet().toArray();
+ len = timezoneList.size();
+ for (int i = 0; i < len; i++) {
+ Object timezoneKey = o[i];
+ if (a.containsKey(timezoneKey)) {
+ Object realName = a.get(timezoneKey);
+ while (a.containsKey(realName)) {
+ realName = a.get(realName);
+ }
+ out1.write(timezoneKey +
+ " (alias for " +
+ "<A HREF=\"" + timezoneList.get(realName) +
+ "\" TARGET=\"rightFrame\">" + realName +
+ "</A>)");
+ } else {
+ out1.write("<A HREF=\"" + timezoneList.get(timezoneKey) +
+ "\" TARGET=\"rightFrame\">" + timezoneKey +
+ "</A>");
+ }
+ out1.write("<BR> \n");
+ }
+ out1.write("</FONT></TD>\n</TR>\n</TABLE>\n" + body2 + footer);
+
+ out1.close();
+ fw1.close();
+
+ /* Creates allTimeZone-frame3.html (Sorted by city names) */
+ fw1 = new FileWriter(outputDir + "allTimeZone-frame3.html", false);
+ out1 = new BufferedWriter(fw1);
+
+ out1.write(header1 + new Date() + header2 + Main.getVersionName() +
+ header4 + body1 +
+ "<FONT size=\"+1\"><B>Sorted by city names</B></FONT>\n" +
+ "<BR>\n\n" + "<TABLE BORDER=\"0\" WIDTH=\"100%\">\n" +
+ "<TR>\n<TD NOWRAP>\n");
+
+ Set aliasSet = a.keySet();
+ len = aliasSet.size();
+ Object aliasNames[] = aliasSet.toArray();
+ for (int i = 0; i < len; i++) {
+ displayNameList.put(transform((String)aliasNames[i]),
+ (String)aliasNames[i]);
+ }
+
+ o = displayNameList.keySet().toArray();
+ len = displayNameList.size();
+ for (int i = 0; i < len; i++) {
+ Object displayName = o[i];
+ Object timezoneKey = displayNameList.get(o[i]);
+ if (a.containsKey(timezoneKey)) {
+ Object realName = a.get(timezoneKey);
+ while (a.containsKey(realName)) {
+ realName = a.get(realName);
+ }
+ out1.write(displayName +
+ " (alias for " +
+ "<A HREF=\"" + timezoneList.get(realName) +
+ "\" TARGET=\"rightFrame\">" + realName +
+ "</A>)");
+ } else {
+ out1.write("<A HREF=\"" + timezoneList.get(timezoneKey) +
+ "\" TARGET=\"rightFrame\">" + displayName +
+ "</A>");
+ }
+ out1.write("<BR> \n");
+ }
+
+ out1.write("</FONT></TD>\n</TR>\n</TABLE>\n" + body2 + footer);
+
+ out1.close();
+ fw1.close();
+
+ /* Creates overview-summary.html */
+ fw1 = new FileWriter(outputDir + "overview-summary.html", false);
+ out1 = new BufferedWriter(fw1);
+
+ out1.write(header1 + new Date() + header2 + Main.getVersionName() +
+ header4 + body1 +
+ "<p>This is the list of time zones generated from <B>" +
+ Main.getVersionName() + "</B> for Java Platform, " +
+ "Standard Edition. The source code can be obtained " +
+ "from ftp site <a href=\"ftp://elsie.nci.nih.gov/pub/\">" +
+ "ftp://elsie.nci.nih.gov/pub/</a>. A total of <B>" +
+ len +
+ "</B> time zones and aliases are supported " +
+ "in this edition. For the " +
+ "format of rules and zones, refer to the zic " +
+ "(zoneinfo compiler) man page on " +
+ "Solaris or Linux.</p>\n" +
+ "<p>Note that the time zone data is not " +
+ "a public interface of the Java Platform. No " +
+ "applications should rely on the time zone data of " +
+ "this document. Time zone names and data " +
+ "may change without any prior notice.</p>\n" +
+ body2 + footer);
+
+ out1.close();
+ fw1.close();
+ } catch(IOException e) {
+ Main.panic("IO error: "+e.getMessage());
+ return 1;
+ }
+
+ return 0;
+ }
+
+ String transform(String s) {
+ int index = s.lastIndexOf("/");
+
+ /* If the string doesn't include any delimiter, return */
+ if (index == -1) {
+ return s;
+ }
+
+ int lastIndex = index;
+ String str = s.substring(index+1);
+ do {
+ index = s.substring(0, lastIndex).lastIndexOf('/');
+ str += ", " + s.substring(index+1, lastIndex);
+ lastIndex = index;
+ } while (index > -1);
+
+ return str;
+ }
+
+ static class LatitudeAndLongitude {
+
+ private int latDeg, latMin, latSec, longDeg, longMin, longSec;
+
+ LatitudeAndLongitude(String s) {
+ try {
+ // First of all, check the string has the correct format:
+ // either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS
+
+ if (!s.startsWith("+") && !s.startsWith("-")) {
+ Main.warning("Wrong latitude&longitude data: " + s);
+ return;
+ }
+ int index;
+ if (((index = s.lastIndexOf("+")) <= 0) &&
+ ((index = s.lastIndexOf("-")) <= 0)) {
+ Main.warning("Wrong latitude&longitude data: " + s);
+ return;
+ }
+
+ if (index == 5) {
+ latDeg = Integer.parseInt(s.substring(1, 3));
+ latMin = Integer.parseInt(s.substring(3, 5));
+ latSec = 0;
+ } else if (index == 7) {
+ latDeg = Integer.parseInt(s.substring(1, 3));
+ latMin = Integer.parseInt(s.substring(3, 5));
+ latSec = Integer.parseInt(s.substring(5, 7));
+ } else {
+ Main.warning("Wrong latitude&longitude data: " + s);
+ return;
+ }
+ if (s.startsWith("-")){
+ latDeg = -latDeg;
+ latMin = -latMin;
+ latSec = -latSec;
+ }
+
+ int len = s.length();
+ if (index == 5 && len == 11) {
+ longDeg = Integer.parseInt(s.substring(index+1, index+4));
+ longMin = Integer.parseInt(s.substring(index+4, index+6));
+ longSec = 0;
+ } else if (index == 7 && len == 15) {
+ longDeg = Integer.parseInt(s.substring(index+1, index+4));
+ longMin = Integer.parseInt(s.substring(index+4, index+6));
+ longSec = Integer.parseInt(s.substring(index+6, index+8));
+ } else {
+ Main.warning("Wrong latitude&longitude data: " + s);
+ return;
+ }
+ if (s.charAt(index) == '-'){
+ longDeg = -longDeg;
+ longMin = -longMin;
+ longSec = -longSec;
+ }
+ } catch(Exception e) {
+ Main.warning("LatitudeAndLongitude() Parse error: " + s);
+ }
+ }
+
+ int getLatDeg() {
+ return latDeg;
+ }
+
+ int getLatMin() {
+ return latMin;
+ }
+
+ int getLatSec() {
+ return latSec;
+ }
+
+ int getLongDeg() {
+ return longDeg;
+ }
+
+ int getLongMin() {
+ return longMin;
+ }
+
+ int getLongSec() {
+ return longSec;
+ }
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/Main.java b/jdk/make/tools/src/build/tools/javazic/Main.java
new file mode 100644
index 0000000..f83acf3
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/Main.java
@@ -0,0 +1,239 @@
+/*
+ * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Main class for the javazic time zone data compiler.
+ *
+ * @since 1.4
+ */
+public class Main {
+
+ private static boolean verbose = false;
+ static boolean outputDoc = false;
+
+ private List<String> ziFiles = new ArrayList<String>();
+ private static String zoneNamesFile = null;
+ private static String versionName = "unknown";
+ private static String outputDir = "zoneinfo";
+ private static String mapFile = null;
+
+ /**
+ * Parses the specified arguments and sets up the variables.
+ * @param argv the arguments
+ */
+ void processArgs(String[] argv) {
+ for (int i = 0; i < argv.length; i++) {
+ String arg = argv[i];
+ if (arg.startsWith("-h")) {
+ usage();
+ System.exit(0);
+ } else if (arg.equals("-d")) {
+ outputDir = argv[++i];
+ } else if (arg.equals("-v")) {
+ verbose = true;
+ } else if (arg.equals("-V")) {
+ versionName = argv[++i];
+ } else if (arg.equals("-doc")) {
+ outputDoc = true;
+ } else if (arg.equals("-map")) {
+ outputDoc = true;
+ mapFile = argv[++i];
+ } else if (arg.equals("-f")) {
+ zoneNamesFile = argv[++i];
+ } else if (arg.equals("-S")) {
+ try {
+ Zoneinfo.setYear(Integer.parseInt(argv[++i]));
+ } catch (Exception e) {
+ error("invalid year: " + argv[i]);
+ usage();
+ System.exit(1);
+ }
+ } else {
+ boolean isStartYear = arg.equals("-s");
+ if (isStartYear || arg.equals("-e")) {
+ try {
+ int year = Integer.parseInt(argv[++i]);
+ if (isStartYear) {
+ Zoneinfo.setStartYear(year);
+ } else {
+ Zoneinfo.setEndYear(year);
+ }
+ } catch (Exception e) {
+ error("invalid year: " + argv[i]);
+ usage();
+ System.exit(1);
+ }
+ } else {
+ // the rest of args are zoneinfo source files
+ while (i < argv.length) {
+ ziFiles.add(argv[i++]);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Parses zoneinfo source files
+ */
+ int compile() {
+ int nFiles = ziFiles.size();
+ int status = 0;
+ Mappings maps = new Mappings();
+ BackEnd backend = BackEnd.getBackEnd();
+
+ for (int i = 0; i < nFiles; i++) {
+ Zoneinfo frontend = Zoneinfo.parse(ziFiles.get(i));
+
+ for (String key : frontend.getZones().keySet()) {
+ info(key);
+
+ Timezone tz = frontend.phase2(key);
+ status |= backend.processZoneinfo(tz);
+ }
+
+ maps.add(frontend);
+ }
+
+ // special code for dealing with the conflicting name "MET"
+ Zone.addMET();
+
+ maps.resolve();
+
+ status |= backend.generateSrc(maps);
+
+ return status;
+ }
+
+ public static void main(String[] argv) {
+ Main zic = new Main();
+
+ /*
+ * Parse args
+ */
+ zic.processArgs(argv);
+
+ /*
+ * Read target zone names
+ */
+ if (zoneNamesFile != null) {
+ Zone.readZoneNames(zoneNamesFile);
+ }
+
+ int status = zic.compile();
+
+ System.exit(status);
+ }
+
+ void usage() {
+ System.err.println("Usage: javazic [options] file...\n"+
+ " -f namefile file containing zone names\n"+
+ " to be generated (ie, generating subset)\n"+
+ " -d dir output directory\n"+
+ " -v verbose\n"+
+ " -V datavers specifies the tzdata version string\n"+
+ " (eg, \"tzdata2000g\")"+
+ " -S year output only SimleTimeZone data of that year\n"+
+ " -s year start year (default: 1900)\n"+
+ " -e year end year (default: 2037)\n"+
+ " -doc generates HTML documents\n"+
+ " -map mapfile generates HTML documents with map information\n"+
+ " file... zoneinfo source file(s)");
+ }
+
+ /**
+ * @return the output directory path name
+ */
+ static String getOutputDir() {
+ return outputDir;
+ }
+
+ /**
+ * @return the map file's path and name
+ */
+ static String getMapFile() {
+ return mapFile;
+ }
+
+ /**
+ * Returns the time zone data version string specified by the -V
+ * option. If it is not specified, "unknown" is returned.
+ * @return the time zone data version string
+ */
+ static String getVersionName() {
+ return versionName;
+ }
+
+ /**
+ * Prints out the specified fatal error message and calls {@link
+ * java.lang.System#exit System.exit(1)}.
+ * @param msg the fatal error message
+ */
+ static void panic(String msg) {
+ printMessage("fatal error", msg);
+ System.exit(1);
+ }
+
+ /**
+ * Prints out the specified error message.
+ * @param msg the error message
+ */
+ static void error(String msg) {
+ printMessage("error", msg);
+ }
+
+ /**
+ * Prints out the specified warning message.
+ * @param msg the warning message
+ */
+ static void warning(String msg) {
+ printMessage("warning", msg);
+ }
+
+ /**
+ * Prints out the informative message.
+ * @param msg the informative message
+ */
+ static void info(String msg) {
+ if (verbose) {
+ printMessage(null, msg);
+ }
+ }
+
+ private static void printMessage(String type, String msg) {
+ if (type != null) {
+ type += ": ";
+ } else {
+ type = "";
+ }
+ System.err.println("javazic: " + type + msg);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/Mappings.java b/jdk/make/tools/src/build/tools/javazic/Mappings.java
new file mode 100644
index 0000000..47f08bd
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/Mappings.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+/**
+ * <code>Mappings</code> generates two Maps and a List which are used by
+ * javazic BackEnd.
+ *
+ * @since 1.4
+ */
+class Mappings {
+ // All aliases specified by Link statements. It's alias name to
+ // real name mappings.
+ private Map<String,String> aliases;
+
+ private List<Integer> rawOffsetsIndex;
+
+ private List<Set<String>> rawOffsetsIndexTable;
+
+ // Zone names to be excluded from rawOffset table. Those have GMT
+ // offsets to change some future time.
+ private List<String> excludeList;
+
+ /**
+ * Constructor creates some necessary instances.
+ */
+ Mappings() {
+ aliases = new TreeMap<String,String>();
+ rawOffsetsIndex = new LinkedList<Integer>();
+ rawOffsetsIndexTable = new LinkedList<Set<String>>();
+ }
+
+ /**
+ * Generates aliases and rawOffsets tables.
+ * @param zi a Zoneinfo containing Zones
+ */
+ void add(Zoneinfo zi) {
+ Map<String,Zone> zones = zi.getZones();
+
+ for (String zoneName : zones.keySet()) {
+ Zone zone = zones.get(zoneName);
+ String zonename = zone.getName();
+ int rawOffset = zone.get(zone.size()-1).getGmtOffset();
+
+ // If the GMT offset of this Zone will change in some
+ // future time, this Zone is added to the exclude list.
+ boolean isExcluded = false;
+ if (zone.size() > 1) {
+ ZoneRec zrec = zone.get(zone.size()-2);
+ if ((zrec.getGmtOffset() != rawOffset)
+ && (zrec.getUntilTime(0) > Time.getCurrentTime())) {
+ if (excludeList == null) {
+ excludeList = new ArrayList<String>();
+ }
+ excludeList.add(zone.getName());
+ isExcluded = true;
+ }
+ }
+
+ if (!rawOffsetsIndex.contains(new Integer(rawOffset))) {
+ // Find the index to insert this raw offset zones
+ int n = rawOffsetsIndex.size();
+ int i;
+ for (i = 0; i < n; i++) {
+ if (rawOffsetsIndex.get(i) > rawOffset) {
+ break;
+ }
+ }
+ rawOffsetsIndex.add(i, rawOffset);
+
+ Set<String> perRawOffset = new TreeSet<String>();
+ if (!isExcluded) {
+ perRawOffset.add(zonename);
+ }
+ rawOffsetsIndexTable.add(i, perRawOffset);
+ } else if (!isExcluded) {
+ int i = rawOffsetsIndex.indexOf(new Integer(rawOffset));
+ Set<String> perRawOffset = rawOffsetsIndexTable.get(i);
+ perRawOffset.add(zonename);
+ }
+ }
+
+ Map<String,String> a = zi.getAliases();
+ // If there are time zone names which refer to any of the
+ // excluded zones, add those names to the excluded list.
+ if (excludeList != null) {
+ for (String zoneName : a.keySet()) {
+ String realname = a.get(zoneName);
+ if (excludeList.contains(realname)) {
+ excludeList.add(zoneName);
+ }
+ }
+ }
+ aliases.putAll(a);
+ }
+
+ /**
+ * Adds valid aliases to one of per-RawOffset table and removes
+ * invalid aliases from aliases List. Aliases referring to
+ * excluded zones are not added to a per-RawOffset table.
+ */
+ void resolve() {
+ int index = rawOffsetsIndexTable.size();
+ List<String> toBeRemoved = new ArrayList<String>();
+ for (String key : aliases.keySet()) {
+ boolean validname = false;
+ for (int j = 0; j < index; j++) {
+ Set<String> perRO = rawOffsetsIndexTable.get(j);
+ boolean isExcluded = (excludeList == null) ?
+ false : excludeList.contains(key);
+
+ if ((perRO.contains(aliases.get(key)) || isExcluded)
+ && Zone.isTargetZone(key)) {
+ validname = true;
+ if (!isExcluded) {
+ perRO.add(key);
+ Main.info("Alias <"+key+"> added to the list.");
+ }
+ break;
+ }
+ }
+
+ if (!validname) {
+ Main.info("Alias <"+key+"> removed from the list.");
+ toBeRemoved.add(key);
+ }
+ }
+
+ // Remove zones, if any, from the list.
+ for (String key : toBeRemoved) {
+ aliases.remove(key);
+ }
+ }
+
+ Map<String,String> getAliases() {
+ return(aliases);
+ }
+
+ List<Integer> getRawOffsetsIndex() {
+ return(rawOffsetsIndex);
+ }
+
+ List<Set<String>> getRawOffsetsIndexTable() {
+ return(rawOffsetsIndexTable);
+ }
+
+ List<String> getExcludeList() {
+ return excludeList;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/Month.java b/jdk/make/tools/src/build/tools/javazic/Month.java
new file mode 100644
index 0000000..0e7f796
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/Month.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Month enum handles month related manipulation.
+ *
+ * @since 1.4
+ */
+enum Month {
+ JANUARY("Jan"),
+ FEBRUARY("Feb"),
+ MARCH("Mar"),
+ APRIL("Apr"),
+ MAY("May"),
+ JUNE("Jun"),
+ JULY("Jul"),
+ AUGUST("Aug"),
+ SEPTEMBER("Sep"),
+ OCTOBER("Oct"),
+ NOVEMBER("Nov"),
+ DECEMBER("Dec");
+
+ private final String abbr;
+
+ private static final Map<String,Month> abbreviations
+ = new HashMap<String,Month>(12);
+
+ static {
+ for (Month m : Month.values()) {
+ abbreviations.put(m.abbr, m);
+ }
+ }
+
+ private Month(String abbr) {
+ this.abbr = abbr;
+ }
+
+ int value() {
+ return ordinal() + 1;
+ }
+
+ /**
+ * Parses the specified string as a month abbreviation.
+ * @param name the month abbreviation
+ * @return the Month value
+ */
+ static Month parse(String name) {
+ Month m = abbreviations.get(name);
+ if (m != null) {
+ return m;
+ }
+ return null;
+ }
+
+ /**
+ * @param month the nunmth number (1-based)
+ * @return the month name in uppercase of the specified month
+ */
+ static String toString(int month) {
+ if (month >= JANUARY.value() && month <= DECEMBER.value()) {
+ return "Calendar." + Month.values()[month - 1];
+ }
+ throw new IllegalArgumentException("wrong month number: " + month);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/Rule.java b/jdk/make/tools/src/build/tools/javazic/Rule.java
new file mode 100644
index 0000000..e2bb132
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/Rule.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+/**
+ * Rule manipulates Rule records.
+ *
+ * @since 1.4
+ */
+class Rule {
+
+ private List<RuleRec> list;
+ private String name;
+
+ /**
+ * Constructs a Rule which consists of a Rule record list. The
+ * specified name is given to this Rule.
+ * @param name the Rule name
+ */
+ Rule(String name) {
+ this.name = name;
+ list = new ArrayList<RuleRec>();
+ }
+
+ /**
+ * Added a RuleRec to the Rule record list.
+ */
+ void add(RuleRec rec) {
+ list.add(rec);
+ }
+
+ /**
+ * @return the Rule name
+ */
+ String getName() {
+ return name;
+ }
+
+ /**
+ * Gets all rule records that cover the given year.
+ *
+ * @param year the year number for which the rule is applicable.
+ * @return rules in List that are collated in time. If no rule is found, an empty
+ * List is returned.
+ */
+ List<RuleRec> getRules(int year) {
+ List<RuleRec> rules = new ArrayList<RuleRec>(3);
+ for (RuleRec rec : list) {
+ if (year >= rec.getFromYear() && year <= rec.getToYear()) {
+ if ((rec.isOdd() && year % 2 == 0) || (rec.isEven() && year % 2 == 1))
+ continue;
+ rules.add(rec);
+ }
+ }
+ int n = rules.size();
+ if (n <= 1) {
+ return rules;
+ }
+ if (n == 2) {
+ RuleRec rec1 = rules.get(0);
+ RuleRec rec2 = rules.get(1);
+ if (rec1.getMonthNum() > rec2.getMonthNum()) {
+ rules.set(0, rec2);
+ rules.set(1, rec1);
+ } else if (rec1.getMonthNum() == rec2.getMonthNum()) {
+ // TODO: it's not accurate to ignore time types (STD, WALL, UTC)
+ long t1 = Time.getLocalTime(year, rec1.getMonth(),
+ rec1.getDay(), rec1.getTime().getTime());
+ long t2 = Time.getLocalTime(year, rec2.getMonth(),
+ rec2.getDay(), rec2.getTime().getTime());
+ if (t1 > t2) {
+ rules.set(0, rec2);
+ rules.set(1, rec1);
+ }
+ }
+ return rules;
+ }
+
+ final int y = year;
+ RuleRec[] recs = new RuleRec[rules.size()];
+ rules.toArray(recs);
+ Arrays.sort(recs, new Comparator<RuleRec>() {
+ public int compare(RuleRec r1, RuleRec r2) {
+ int n = r1.getMonthNum() - r2.getMonthNum();
+ if (n != 0) {
+ return n;
+ }
+ // TODO: it's not accurate to ignore time types (STD, WALL, UTC)
+ long t1 = Time.getLocalTime(y, r1.getMonth(),
+ r1.getDay(), r1.getTime().getTime());
+ long t2 = Time.getLocalTime(y, r2.getMonth(),
+ r2.getDay(), r2.getTime().getTime());
+ return (int)(t1 - t2);
+ }
+ public boolean equals(Object o) {
+ return this == o;
+ }
+ });
+ rules.clear();
+ for (int i = 0; i < n; i++) {
+ rules.add(recs[i]);
+ }
+ return rules;
+ }
+
+ /**
+ * Gets rule records that have either "max" or cover the endYear
+ * value in its DST schedule.
+ *
+ * @return rules that contain last DST schedule. An empty
+ * ArrayList is returned if no last rules are found.
+ */
+ List<RuleRec> getLastRules() {
+ RuleRec start = null;
+ RuleRec end = null;
+
+ for (int i = 0; i < list.size(); i++) {
+ RuleRec rec = list.get(i);
+ if (rec.isLastRule()) {
+ if (rec.getSave() > 0) {
+ start = rec;
+ } else {
+ end = rec;
+ }
+ }
+ }
+ if (start == null || end == null) {
+ int endYear = Zoneinfo.getEndYear();
+ for (int i = 0; i < list.size(); i++) {
+ RuleRec rec = list.get(i);
+ if (endYear >= rec.getFromYear() && endYear <= rec.getToYear()) {
+ if (start == null && rec.getSave() > 0) {
+ start = rec;
+ } else {
+ if (end == null && rec.getSave() == 0) {
+ end = rec;
+ }
+ }
+ }
+ }
+ }
+
+ List<RuleRec> r = new ArrayList<RuleRec>(2);
+ if (start == null || end == null) {
+ if (start != null || end != null) {
+ Main.warning("found last rules for "+name+" inconsistent.");
+ }
+ return r;
+ }
+
+ r.add(start);
+ r.add(end);
+ return r;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/RuleDay.java b/jdk/make/tools/src/build/tools/javazic/RuleDay.java
new file mode 100644
index 0000000..f9629b7
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/RuleDay.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * RuleDay class represents the value of the "ON" field. The day of
+ * week values start from 1 following the {@link java.util.Calendar}
+ * convention.
+ *
+ * @since 1.4
+ */
+class RuleDay {
+ private static final Map<String,DayOfWeek> abbreviations = new HashMap<String,DayOfWeek>(7);
+ static {
+ for (DayOfWeek day : DayOfWeek.values()) {
+ abbreviations.put(day.getAbbr(), day);
+ }
+ }
+
+ private String dayName = null;
+ private DayOfWeek dow;
+ private boolean lastOne = false;
+ private int soonerOrLater = 0;
+ private int thanDayOfMonth; // day of month (e.g., 8 for "Sun>=8")
+
+ RuleDay() {
+ }
+
+ RuleDay(int day) {
+ thanDayOfMonth = day;
+ }
+
+ int getDay() {
+ return thanDayOfMonth;
+ }
+
+ /**
+ * @return the day of week value (1-based)
+ */
+ int getDayOfWeekNum() {
+ return dow.value();
+ }
+
+ /**
+ * @return true if this rule day represents the last day of
+ * week. (e.g., lastSun).
+ */
+ boolean isLast() {
+ return lastOne;
+ }
+
+ /**
+ * @return true if this rule day represents the day of week on or
+ * later than (after) the {@link #getDay}. (e.g., Sun>=1)
+ */
+ boolean isLater() {
+ return soonerOrLater > 0;
+ }
+
+ /**
+ * @return true if this rule day represents the day of week on or
+ * earlier than (before) the {@link #getDay}. (e.g., Sun<=15)
+ */
+ boolean isEarlier() {
+ return soonerOrLater < 0;
+ }
+
+ /**
+ * @return true if this rule day represents an exact day.
+ */
+ boolean isExact() {
+ return soonerOrLater == 0;
+ }
+
+ /**
+ * Parses the "ON" field and constructs a RuleDay.
+ * @param day an "ON" field string (e.g., "Sun>=1")
+ * @return a RuleDay representing the given "ON" field
+ */
+ static RuleDay parse(String day) {
+ RuleDay d = new RuleDay();
+ if (day.startsWith("last")) {
+ d.lastOne = true;
+ d.dayName = day.substring(4);
+ d.dow = getDOW(d.dayName);
+ } else {
+ int index;
+ if ((index = day.indexOf(">=")) != -1) {
+ d.dayName = day.substring(0, index);
+ d.dow = getDOW(d.dayName);
+ d.soonerOrLater = 1; // greater or equal
+ d.thanDayOfMonth = Integer.parseInt(day.substring(index+2));
+ } else if ((index = day.indexOf("<=")) != -1) {
+ d.dayName = day.substring(0, index);
+ d.dow = getDOW(d.dayName);
+ d.soonerOrLater = -1; // less or equal
+ d.thanDayOfMonth = Integer.parseInt(day.substring(index+2));
+ } else {
+ // it should be an integer value.
+ d.thanDayOfMonth = Integer.parseInt(day);
+ }
+ }
+ return d;
+ }
+
+ /**
+ * Converts this RuleDay to the SimpleTimeZone day rule.
+ * @return the converted SimpleTimeZone day rule
+ */
+ int getDayForSimpleTimeZone() {
+ if (isLast()) {
+ return -1;
+ }
+ return getDay();
+ }
+
+ /**
+ * Converts this RuleDay to the SimpleTimeZone day-of-week rule.
+ * @return the SimpleTimeZone day-of-week rule value
+ */
+ int getDayOfWeekForSimpleTimeZoneInt() {
+ if (!isLater() && !isEarlier() && !isLast()) {
+ return 0;
+ }
+ if (isLater()) {
+ return -getDayOfWeekNum();
+ }
+ return getDayOfWeekNum();
+ }
+
+ /**
+ * @return the string representation of the {@link
+ * #getDayOfWeekForSimpleTimeZoneInt} value
+ */
+ String getDayOfWeekForSimpleTimeZone() {
+ int d = getDayOfWeekForSimpleTimeZoneInt();
+ if (d == 0) {
+ return "0";
+ }
+ String sign = "";
+ if (d < 0) {
+ sign = "-";
+ d = -d;
+ }
+ return sign + toString(d);
+ }
+
+ private static DayOfWeek getDOW(String abbr) {
+ return abbreviations.get(abbr);
+ }
+
+ /**
+ * Converts the specified day of week value to the day-of-week
+ * name defined in {@link java.util.Calenda}.
+ * @param dow 1-based day of week value
+ * @return the Calendar day of week name with "Calendar." prefix.
+ * @throws IllegalArgumentException if the specified dow value is out of range.
+ */
+ static String toString(int dow) {
+ if (dow >= DayOfWeek.SUNDAY.value() && dow <= DayOfWeek.SATURDAY.value()) {
+ return "Calendar." + DayOfWeek.values()[dow - 1];
+ }
+ throw new IllegalArgumentException("wrong Day_of_Week number: " + dow);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/RuleRec.java b/jdk/make/tools/src/build/tools/javazic/RuleRec.java
new file mode 100644
index 0000000..76863c4
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/RuleRec.java
@@ -0,0 +1,232 @@
+/*
+ * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.util.StringTokenizer;
+
+/**
+ * RuleRec class represents one record of the Rule set.
+ *
+ * @since 1.4
+ */
+class RuleRec {
+ private int fromYear;
+ private int toYear;
+ private String type;
+ private Month inMonth;
+ private RuleDay onDay;
+ private Time atTime;
+ private int save;
+ private String letters;
+ private String line;
+ private boolean isLastRule;
+
+ int getFromYear() {
+ return fromYear;
+ }
+
+ int getToYear() {
+ return toYear;
+ }
+
+ Month getMonth() {
+ return inMonth;
+ }
+
+ int getMonthNum() {
+ return inMonth.value();
+ }
+
+ RuleDay getDay() {
+ return onDay;
+ }
+
+ Time getTime() {
+ return atTime;
+ }
+
+ int getSave() {
+ return save;
+ }
+
+ String getLine() {
+ return line;
+ }
+
+ /**
+ * Sets the line from the text file.
+ * @param line the text of the line
+ */
+ void setLine(String line) {
+ this.line = line;
+ }
+
+ /**
+ * @return true if the rule type is "odd".
+ */
+ boolean isOdd() {
+ return "odd".equals(type);
+ }
+
+ /**
+ * @return true if the rule type is "even".
+ */
+ boolean isEven() {
+ return "even".equals(type);
+ }
+
+ /**
+ * Determines if this rule record is the last DST schedule rule.
+ *
+ * @return true if this rule record has "max" as TO (year).
+ */
+ boolean isLastRule() {
+ return isLastRule;
+ }
+
+ /**
+ * Determines if the unadjusted until time of the specified ZoneRec
+ * is the same as the transition time of this rule in the same
+ * year as the ZoneRec until year.
+ *
+ * @param zrec ZoneRec to compare to
+ * @param save the amount of daylight saving in milliseconds
+ * @param gmtOffset the GMT offset value in milliseconds
+ * @return true if the unadjusted until time is the same as rule's
+ * transition time.
+ */
+ boolean isSameTransition(ZoneRec zrec, int save, int gmtOffset) {
+ long until, transition;
+
+ if (zrec.getUntilTime().getType() != atTime.getType()) {
+ until = zrec.getLocalUntilTime(save, gmtOffset);
+ transition = Time.getLocalTime(zrec.getUntilYear(),
+ getMonth(),
+ getDay(),
+ save,
+ gmtOffset,
+ atTime);
+ } else {
+ until = zrec.getLocalUntilTime();
+ transition = Time.getLocalTime(zrec.getUntilYear(),
+ getMonth(),
+ getDay(),
+ atTime.getTime());
+ }
+
+ return until == transition;
+ }
+
+ /**
+ * Parses a Rule line and returns a RuleRec object.
+ *
+ * @param tokens a StringTokenizer object that should contain a
+ * token for the "FROM" field and the rest.
+ * @return a RuleRec object.
+ */
+ static RuleRec parse(StringTokenizer tokens) {
+ RuleRec rec = new RuleRec();
+ try {
+ // FROM
+ String token = tokens.nextToken();
+ try {
+ rec.fromYear = Integer.parseInt(token);
+ } catch (NumberFormatException e) {
+ // it's not integer
+ if ("min".equals(token) || "minimum".equals(token)) {
+ rec.fromYear = Zoneinfo.getMinYear();
+ } else if ("max".equals(token) || "maximum".equals(token)) {
+ rec.fromYear = Zoneinfo.getMaxYear();
+ } else {
+ Main.panic("invalid year value: "+token);
+ }
+ }
+
+ // TO
+ token = tokens.nextToken();
+ rec.isLastRule = false;
+ try {
+ rec.toYear = Integer.parseInt(token);
+ } catch (NumberFormatException e) {
+ // it's not integer
+ if ("min".equals(token) || "minimum".equals(token)) {
+ rec.fromYear = Zoneinfo.getMinYear();
+ } else if ("max".equals(token) || "maximum".equals(token)) {
+ rec.toYear = Integer.MAX_VALUE;
+ rec.isLastRule = true;
+ } else if ("only".equals(token)) {
+ rec.toYear = rec.fromYear;
+ } else {
+ Main.panic("invalid year value: "+token);
+ }
+ }
+
+ // TYPE
+ rec.type = tokens.nextToken();
+
+ // IN
+ rec.inMonth = Month.parse(tokens.nextToken());
+
+ // ON
+ rec.onDay = RuleDay.parse(tokens.nextToken());
+
+ // AT
+ rec.atTime = Time.parse(tokens.nextToken());
+
+ // SAVE
+ rec.save = (int) Time.parse(tokens.nextToken()).getTime();
+
+ // LETTER/S
+ rec.letters = tokens.nextToken();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return rec;
+ }
+
+ /**
+ * Calculates the transition time of the given year under this rule.
+ * @param year the year value
+ * @param gmtOffset the GMT offset value in milliseconds
+ * @param save the amount of daylight save time
+ * @return the transition time in milliseconds of the given year in UTC.
+ */
+ long getTransitionTime(int year, int gmtOffset, int save) {
+ long time = Time.getLocalTime(year, getMonth(),
+ getDay(), atTime.getTime());
+ if (atTime.isSTD()) {
+ time -= gmtOffset;
+ } else if (atTime.isWall()) {
+ time -= gmtOffset + save;
+ }
+ return time;
+ }
+
+ private static int getInt(StringTokenizer tokens) {
+ String token = tokens.nextToken();
+ return Integer.parseInt(token);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/Simple.java b/jdk/make/tools/src/build/tools/javazic/Simple.java
new file mode 100644
index 0000000..38e64d8
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/Simple.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+/**
+ * <code>Simple</code> generates TimeZoneData, which had been used as internal
+ * data of TimeZone before J2SDK1.3.
+ * Since J2SDK1.4 doesn't need TimeZoneData, this class is for maintenance
+ * of old JDK release.
+ */
+class Simple extends BackEnd {
+
+ /**
+ * Zone records which are applied for given year.
+ */
+ private static Map<String,ZoneRec> lastZoneRecs
+ = new HashMap<String,ZoneRec>();
+
+ /**
+ * Rule records which are applied for given year.
+ */
+ private static Map<String,List<RuleRec>> lastRules
+ = new TreeMap<String,List<RuleRec>>();
+
+ /**
+ * zone IDs sorted by their GMT offsets. If zone's GMT
+ * offset will change in the future, its last known offset is
+ * used.
+ */
+ private SortedMap<Integer, Set<String>> zonesByOffset
+ = new TreeMap<Integer, Set<String>>();
+
+ /**
+ * Sets last Rule records and Zone records for given timezone to
+ * each Map.
+ *
+ * @param tz Timezone object for each zone
+ * @return always 0
+ */
+ int processZoneinfo(Timezone tz) {
+ String zonename = tz.getName();
+
+ lastRules.put(zonename, tz.getLastRules());
+ lastZoneRecs.put(zonename, tz.getLastZoneRec());
+
+ // Populate zonesByOffset. (Zones that will change their
+ // GMT offsets are also added to zonesByOffset here.)
+ int lastKnownOffset = tz.getRawOffset();
+ Set<String> set = zonesByOffset.get(lastKnownOffset);
+ if (set == null) {
+ set = new TreeSet<String>();
+ zonesByOffset.put(lastKnownOffset, set);
+ }
+ set.add(zonename);
+
+ return 0;
+ }
+
+ /**
+ * Generates TimeZoneData to output SimpleTimeZone data.
+ * @param map Mappings object which is generated by {@link Main#compile}.
+ * @return 0 if no error occurred, otherwise 1.
+ */
+ int generateSrc(Mappings map) {
+ try {
+ String outputDir = Main.getOutputDir();
+ File outD = new File(outputDir);
+
+ if (!outputDir.endsWith(File.separator)) {
+ outputDir += outD.separator;
+ }
+ outD.mkdirs();
+
+ FileWriter fw =
+ new FileWriter(outputDir + "TimeZoneData.java", false);
+ BufferedWriter out = new BufferedWriter(fw);
+
+ out.write("import java.util.SimpleTimeZone;\n\n");
+ out.write(" static SimpleTimeZone zones[] = {\n");
+
+ Map<String,String> a = map.getAliases();
+ List<Integer> roi = map.getRawOffsetsIndex();
+ List<Set<String>> roit = map.getRawOffsetsIndexTable();
+
+ int index = 0;
+ for (int offset : zonesByOffset.keySet()) {
+ int o = roi.get(index);
+ Set<String> set = zonesByOffset.get(offset);
+ if (offset == o) {
+ // Merge aliases into zonesByOffset
+ set.addAll(roit.get(index));
+ }
+ index++;
+
+ for (String key : set) {
+ ZoneRec zrec;
+ String realname;
+ List<RuleRec> stz;
+ if ((realname = a.get(key)) != null) {
+ // if this alias is not targeted, ignore it.
+ if (!Zone.isTargetZone(key)) {
+ continue;
+ }
+ stz = lastRules.get(realname);
+ zrec = lastZoneRecs.get(realname);
+ } else {
+ stz = lastRules.get(key);
+ zrec = lastZoneRecs.get(key);
+ }
+
+ out.write("\t//--------------------------------------------------------------------\n");
+ String s = Time.toFormedString(offset);
+ out.write("\tnew SimpleTimeZone(" +
+ Time.toFormedString(offset) + ", \"" + key + "\"");
+ if (realname != null) {
+ out.write(" /* " + realname + " */");
+ }
+
+ if (stz == null) {
+ out.write("),\n");
+ } else {
+ RuleRec rr0 = stz.get(0);
+ RuleRec rr1 = stz.get(1);
+
+ out.write(",\n\t " + Month.toString(rr0.getMonthNum()) +
+ ", " + rr0.getDay().getDayForSimpleTimeZone() + ", " +
+ rr0.getDay().getDayOfWeekForSimpleTimeZone() + ", " +
+ Time.toFormedString((int)rr0.getTime().getTime()) + ", " +
+ rr0.getTime().getTypeForSimpleTimeZone() + ",\n" +
+
+ "\t " + Month.toString(rr1.getMonthNum()) + ", " +
+ rr1.getDay().getDayForSimpleTimeZone() + ", " +
+ rr1.getDay().getDayOfWeekForSimpleTimeZone() + ", " +
+ Time.toFormedString((int)rr1.getTime().getTime())+ ", " +
+ rr1.getTime().getTypeForSimpleTimeZone() + ",\n" +
+
+ "\t " + Time.toFormedString(rr0.getSave()) + "),\n");
+
+ out.write("\t// " + rr0.getLine() + "\n");
+ out.write("\t// " + rr1.getLine() + "\n");
+ }
+
+ String zline = zrec.getLine();
+ if (zline.indexOf("Zone") == -1) {
+ zline = "Zone " + key + "\t" + zline.trim();
+ }
+ out.write("\t// " + zline + "\n");
+ }
+ }
+ out.write(" };\n");
+
+ out.close();
+ fw.close();
+ } catch(IOException e) {
+ Main.panic("IO error: "+e.getMessage());
+ return 1;
+ }
+
+ return 0;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/Time.java b/jdk/make/tools/src/build/tools/javazic/Time.java
new file mode 100644
index 0000000..8657333
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/Time.java
@@ -0,0 +1,343 @@
+/*
+ * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.util.Locale;
+import sun.util.calendar.CalendarDate;
+import sun.util.calendar.CalendarSystem;
+import sun.util.calendar.Gregorian;
+
+/**
+ * Time class represents the "AT" field and other time related information.
+ *
+ * @since 1.4
+ */
+class Time {
+
+ static final Gregorian gcal = CalendarSystem.getGregorianCalendar();
+
+ // type is wall clock time
+ private static final int WALL = 1;
+
+ // type is standard time
+ private static final int STD = 2;
+
+ // type is UTC
+ private static final int UTC = 3;
+
+ // type of representing time
+ private int type;
+
+ /**
+ * Time from the EPOCH in milliseconds
+ */
+ private long time;
+
+ /**
+ * Current time in milliseconds
+ */
+ private static final long currentTime = System.currentTimeMillis();
+
+ Time() {
+ time = 0L;
+ }
+
+ Time(long time) {
+ this.time = time;
+ }
+
+ void setType(int type) {
+ this.type = type;
+ }
+
+ long getTime() {
+ return time;
+ }
+
+ int getType() {
+ return type;
+ }
+
+ static long getCurrentTime() {
+ return currentTime;
+ }
+
+ /**
+ * @return true if the time is represented in wall-clock time.
+ */
+ boolean isWall() {
+ return type == WALL;
+ }
+
+ /**
+ * @return true if the time is represented in standard time.
+ */
+ boolean isSTD() {
+ return type == STD;
+ }
+
+ /**
+ * @return true if the time is represented in UTC time.
+ */
+ boolean isUTC() {
+ return type == UTC;
+ }
+
+ /**
+ * Converts the type to a string that represents the type in the
+ * SimpleTimeZone time mode. (e.g., "SimpleTimeZone.WALL_TIME").
+ * @return the converted string or null if the type is undefined.
+ */
+ String getTypeForSimpleTimeZone() {
+ String stz = "SimpleTimeZone.";
+ if (isWall()) {
+ return stz+"WALL_TIME";
+ }
+ else if (isSTD()) {
+ return stz+"STANDARD_TIME";
+ }
+ else if (isUTC()) {
+ return stz+"UTC_TIME";
+ }
+ else {
+ return null;
+ }
+ }
+
+ /**
+ * Converts the given Gregorian calendar field values to local time.
+ * Local time is represented by the amount of milliseconds from
+ * January 1, 1970 0:00 GMT.
+ * @param year the year value
+ * @param month the Month value
+ * @param day the day represented by {@link RuleDay}
+ * @param save the amount of daylight time in milliseconds
+ * @param gmtOffset the GMT offset in milliseconds
+ * @param time the time of the day represented by {@link Time}
+ * @return local time
+ */
+ static long getLocalTime(int year, Month month, RuleDay day, int save,
+ int gmtOffset, Time time) {
+ long t = time.getTime();
+
+ if (time.isSTD())
+ t = time.getTime() + save;
+ else if (time.isUTC())
+ t = time.getTime() + save + gmtOffset;
+
+ return getLocalTime(year, month, day, t);
+ }
+
+ /**
+ * Converts the given Gregorian calendar field values to local time.
+ * Local time is represented by the amount of milliseconds from
+ * January 1, 1970 0:00 GMT.
+ * @param year the year value
+ * @param month the Month value
+ * @param day the day value
+ * @param time the time of the day in milliseconds
+ * @return local time
+ */
+ static long getLocalTime(int year, Month month, int day, long time) {
+ CalendarDate date = gcal.newCalendarDate(null);
+ date.setDate(year, month.value(), day);
+ long millis = gcal.getTime(date);
+ return millis + time;
+ }
+
+ /**
+ * Equivalent to <code>getLocalTime(year, month, day, (long)time)</code>.
+ * @param year the year value
+ * @param month the Month value
+ * @param day the day value
+ * @param time the time of the day in milliseconds
+ * @return local time
+ */
+ static long getLocalTime(int year, Month month, int day, int time) {
+ return getLocalTime(year, month, day, (long)time);
+ }
+
+ /**
+ * Equivalent to {@link #getLocalTime(int, Month, RuleDay, int)
+ * getLocalTime(year, month, day, (int) time)}.
+ * @param year the year value
+ * @param month the Month value
+ * @param day the day represented by {@link RuleDay}
+ * @param time the time of the day represented by {@link Time}
+ * @return local time
+ */
+ static long getLocalTime(int year, Month month, RuleDay day, long time) {
+ return getLocalTime(year, month, day, (int) time);
+ }
+
+ /**
+ * Converts the given Gregorian calendar field values to local time.
+ * Local time is represented by the amount of milliseconds from
+ * January 1, 1970 0:00 GMT.
+ * @param year the year value
+ * @param month the Month value
+ * @param day the day represented by {@link RuleDay}
+ * @param time the time of the day represented by {@link Time}
+ * @return local time
+ */
+ static long getLocalTime(int year, Month month, RuleDay day, int time) {
+ CalendarDate cdate = gcal.newCalendarDate(null);
+ int monthValue = month.value();
+
+ if (day.isLast()) { // e.g., "lastSun"
+ cdate.setDate(year, monthValue, 1);
+ cdate.setDayOfMonth(gcal.getMonthLength(cdate));
+ cdate = gcal.getNthDayOfWeek(-1, day.getDayOfWeekNum(), cdate);
+ } else if (day.isLater()) { // e.g., "Sun>=1"
+ cdate.setDate(year, monthValue, day.getDay());
+ cdate = gcal.getNthDayOfWeek(1, day.getDayOfWeekNum(), cdate);
+ } else if (day.isExact()) {
+ cdate.setDate(year, monthValue, day.getDay());
+ } else if (day.isEarlier()) { // e.g., "Sun<=15"
+ cdate.setDate(year, monthValue, day.getDay());
+ cdate = gcal.getNthDayOfWeek(-1, day.getDayOfWeekNum(), cdate);
+ } else {
+ Main.panic("invalid day type: " + day);
+ }
+ return gcal.getTime(cdate) + time;
+ }
+
+ /**
+ * Parses the given "AT" field and constructs a Time object.
+ * @param the "AT" field string
+ * @return the Time object
+ */
+ static Time parse(String time) {
+ int sign;
+ int index = 0;
+ Time tm;
+
+ if (time.charAt(0) == '-') {
+ sign = -1;
+ index++;
+ } else {
+ sign = 1;
+ }
+ int val = 0;
+ int num = 0;
+ int countDelim = 0;
+ while (index < time.length()) {
+ char c = time.charAt(index++);
+ if (c == ':') {
+ val = val * 60 + num;
+ countDelim++;
+ num = 0;
+ continue;
+ }
+ int d = Character.digit(c, 10);
+ if (d == -1) {
+ --index;
+ break;
+ }
+ num = num * 10 + d;
+ }
+ val = val * 60 + num;
+ // convert val to second
+ for (; countDelim < 2; countDelim++) {
+ val *= 60;
+ }
+ tm = new Time((long)val * 1000 * sign);
+ if (index < time.length()) {
+ char c = time.charAt(index++);
+ if (c == 's') {
+ tm.setType(tm.STD);
+ } else if (c == 'u' || c == 'g' || c == 'z') {
+ tm.setType(tm.UTC);
+ } else if (c == 'w') {
+ tm.setType(tm.WALL);
+ } else {
+ Main.panic("unknown time mode: "+c);
+ }
+ } else {
+ tm.setType(tm.WALL);
+ }
+ return tm;
+ }
+
+ /**
+ * Converts the given milliseconds string to a "[+-]hh:mm" string.
+ * @param ms the milliseconds string
+ */
+ static String toGMTFormat(String ms) {
+ long sec = Long.parseLong(ms) / 1000;
+ char sign;
+ if (sec < 0) {
+ sign = '-';
+ sec = -sec;
+ } else {
+ sign = '+';
+ }
+ return String.format((Locale)null, "%c%02d:%02d",
+ sign, sec/3600, (sec%3600)/60);
+ }
+
+ /**
+ * Converts the given millisecond value to a string for a
+ * SimpleTimeZone parameter.
+ * @param ms the millisecond value
+ * @return the string in a human readable form
+ */
+ static String toFormedString(int ms) {
+ StringBuilder s = new StringBuilder();
+ boolean minus = false;
+
+ if (ms < 0) {
+ s.append("-");
+ minus = true;
+ ms = -ms;
+ } else if (ms == 0) {
+ return "0";
+ }
+
+ int hour = ms / (60 * 60 * 1000);
+ ms %= (60 * 60 * 1000);
+ int minute = ms / (60 * 1000);
+
+ if (hour != 0) {
+ if (minus && minute != 0) {
+ s.append("(");
+ }
+ s.append(Integer.toString(hour) + "*ONE_HOUR");
+ }
+
+ if (minute != 0) {
+ if (hour != 0) {
+ s.append("+");
+ }
+ s.append(Integer.toString(minute) + "*ONE_MINUTE");
+ if (minus && hour != 0) {
+ s.append(")");
+ }
+ }
+
+ return s.toString();
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/Timezone.java b/jdk/make/tools/src/build/tools/javazic/Timezone.java
new file mode 100644
index 0000000..056dfdd
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/Timezone.java
@@ -0,0 +1,454 @@
+/*
+ * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Timezone represents all information of a single point of time to
+ * generate its time zone database.
+ *
+ * @since 1.4
+ */
+class Timezone {
+ /**
+ * zone name of this time zone
+ */
+ private String name;
+
+ /**
+ * transition time values in UTC (millisecond)
+ */
+ private List<Long> transitions;
+
+ /**
+ * All offset values in millisecond
+ * @see sun.util.calendar.ZoneInfo
+ */
+ private List<Integer> offsets;
+
+ /**
+ * Indices of GMT offset values (both raw and raw+saving)
+ * at transitions
+ */
+ private List<Integer> gmtOffsets;
+
+ /**
+ * Indices of regular or "direct" saving time values
+ * at transitions
+ */
+ private List<Integer> dstOffsets;
+
+ /**
+ * Zone records of this time zone
+ */
+ private List<ZoneRec> usedZoneRecs;
+
+ /**
+ * Rule records referred to by this time zone
+ */
+ private List<RuleRec> usedRuleRecs;
+
+ /**
+ * Type of DST rules in this time zone
+ */
+ private int dstType;
+ static final int UNDEF_DST = 0; // DST type not set yet
+ static final int NO_DST = 1; // never observed DST
+ static final int LAST_DST = 2; // last rule ends in DST (all year round DST-only)
+ static final int X_DST = 3; // used to observe DST
+ static final int DST = 4; // observing DST regularly
+
+ /**
+ * Raw GMT offset of this time zone in the last rule
+ */
+ private int rawOffset;
+
+ /**
+ * The CRC32 value of the transitions data
+ */
+ private int crc32;
+
+ /**
+ * The last ZoneRec
+ */
+ private ZoneRec lastZoneRec;
+
+ /**
+ * The last DST rules. lastRules[0] is the DST start
+ * rule. lastRules[1] is the DST end rules.
+ */
+ private List<RuleRec> lastRules;
+
+ /**
+ * The amount of DST saving value (millisecond) in the last DST
+ * rule.
+ */
+ private int lastSaving;
+
+ /**
+ * true if the raw offset will change in the future time.
+ */
+ private boolean willRawOffsetChange = false;
+
+
+ /**
+ * Constracts a Timezone object with the given zone name.
+ * @param name the zone name
+ */
+ Timezone(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return the number of transitions
+ */
+ int getNTransitions() {
+ if (transitions == null) {
+ return 0;
+ }
+ return transitions.size();
+ }
+
+ /**
+ * @return the zone name
+ */
+ String getName() {
+ return name;
+ }
+
+ /**
+ * Returns the list of all rule records that have been referred to
+ * by this time zone.
+ * @return the rule records list
+ */
+ List<RuleRec> getRules() {
+ return usedRuleRecs;
+ }
+
+ /**
+ * Returns the list of all zone records that have been referred to
+ * by this time zone.
+ * @return the zone records list
+ */
+ List<ZoneRec> getZones() {
+ return usedZoneRecs;
+ }
+
+ /**
+ * @return the transition table (list)
+ */
+ List<Long> getTransitions() {
+ return transitions;
+ }
+
+ /**
+ * @return the offsets list
+ */
+ List<Integer> getOffsets() {
+ return offsets;
+ }
+
+ /**
+ * @return the DST saving offsets list
+ */
+ List<Integer> getDstOffsets() {
+ return dstOffsets;
+ }
+
+ /**
+ * @return the GMT offsets list
+ */
+ List<Integer> getGmtOffsets() {
+ return gmtOffsets;
+ }
+
+ /**
+ * @return the checksum (crc32) value of the trasition table
+ */
+ int getCRC32() {
+ return crc32;
+ }
+
+ /**
+ * @return true if the GMT offset of this time zone would change
+ * after the time zone database has been generated, false, otherwise.
+ */
+ boolean willGMTOffsetChange() {
+ return willRawOffsetChange;
+ }
+
+ /**
+ * @return the last known GMT offset value in milliseconds
+ */
+ int getRawOffset() {
+ return rawOffset;
+ }
+
+ /**
+ * Sets time zone's GMT offset to <code>offset</code>.
+ * @param offset the GMT offset value in milliseconds
+ */
+ void setRawOffset(int offset) {
+ rawOffset = offset;
+ }
+
+ /**
+ * Sets time zone's GMT offset value to <code>offset</code>. If
+ * <code>startTime</code> is future time, then the {@link
+ * #willRawOffsetChange} value is set to true.
+ * @param offset the GMT offset value in milliseconds
+ * @param startTime the UTC time at which the GMT offset is in effective
+ */
+ void setRawOffset(int offset, long startTime) {
+ // if this rawOffset is for the future time, let the run-time
+ // look for the current GMT offset.
+ if (startTime > Time.getCurrentTime()) {
+ willRawOffsetChange = true;
+ }
+ setRawOffset(offset);
+ }
+
+ /**
+ * Adds the specified transition information to the end of the transition table.
+ * @param time the UTC time at which this transition happens
+ * @param offset the total amount of the offset from GMT in milliseconds
+ * @param dstOffset the amount of time in milliseconds saved at this transition
+ */
+ void addTransition(long time, int offset, int dstOffset) {
+ if (transitions == null) {
+ transitions = new ArrayList<Long>();
+ offsets = new ArrayList<Integer>();
+ dstOffsets = new ArrayList<Integer>();
+ }
+ transitions.add(time);
+ offsets.add(offset);
+ dstOffsets.add(dstOffset);
+ }
+
+ /**
+ * Sets the type of historical daylight saving time
+ * observation. For example, China used to observed daylight
+ * saving time, but it no longer does. Then, X_DST is set to the
+ * China time zone.
+ * @param type the type of daylight saving time
+ */
+ void setDSTType(int type) {
+ dstType = type;
+ }
+
+ /**
+ * @return the type of historical daylight saving time
+ * observation.
+ */
+ int getDSTType() {
+ return dstType;
+ }
+
+ /**
+ * Adds the specified zone record to the zone records list.
+ * @param rec the zone record
+ */
+ void addUsedRec(ZoneRec rec) {
+ if (usedZoneRecs == null) {
+ usedZoneRecs = new ArrayList<ZoneRec>();
+ }
+ usedZoneRecs.add(rec);
+ }
+
+ /**
+ * Adds the specified rule record to the rule records list.
+ * @param rec the rule record
+ */
+ void addUsedRec(RuleRec rec) {
+ if (usedRuleRecs == null) {
+ usedRuleRecs = new ArrayList<RuleRec>();
+ }
+ // if the last used rec is the same as the given rec, avoid
+ // putting the same rule.
+ int n = usedRuleRecs.size();
+ for (int i = 0; i < n; i++) {
+ if (usedRuleRecs.get(i).equals(rec)) {
+ return;
+ }
+ }
+ usedRuleRecs.add(rec);
+ }
+
+ /**
+ * Sets the last zone record for this time zone.
+ * @param the last zone record
+ */
+ void setLastZoneRec(ZoneRec zrec) {
+ lastZoneRec = zrec;
+ }
+
+ /**
+ * @return the last zone record for this time zone.
+ */
+ ZoneRec getLastZoneRec() {
+ return lastZoneRec;
+ }
+
+ /**
+ * Sets the last rule records for this time zone. Those are used
+ * for generating SimpleTimeZone parameters.
+ * @param rules the last rule records
+ */
+ void setLastRules(List<RuleRec> rules) {
+ int n = rules.size();
+ if (n > 0) {
+ lastRules = rules;
+ RuleRec rec = rules.get(0);
+ int offset = rec.getSave();
+ if (offset > 0) {
+ setLastDSTSaving(offset);
+ } else {
+ System.err.println("\t No DST starting rule in the last rules.");
+ }
+ }
+ }
+
+ /**
+ * @return the last rule records for this time zone.
+ */
+ List<RuleRec> getLastRules() {
+ return lastRules;
+ }
+
+ /**
+ * Sets the last daylight saving amount.
+ * @param the daylight saving amount
+ */
+ void setLastDSTSaving(int offset) {
+ lastSaving = offset;
+ }
+
+ /**
+ * @return the last daylight saving amount.
+ */
+ int getLastDSTSaving() {
+ return lastSaving;
+ }
+
+ /**
+ * Calculates the CRC32 value from the transition table and sets
+ * the value to <code>crc32</code>.
+ */
+ void checksum() {
+ if (transitions == null) {
+ crc32 = 0;
+ return;
+ }
+ Checksum sum = new Checksum();
+ for (int i = 0; i < transitions.size(); i++) {
+ int offset = offsets.get(i);
+ // adjust back to make the transition in local time
+ sum.update(transitions.get(i) + offset);
+ sum.update(offset);
+ sum.update(dstOffsets.get(i));
+ }
+ crc32 = (int)sum.getValue();
+ }
+
+ /**
+ * Removes unnecessary transitions for Java time zone support.
+ */
+ void optimize() {
+ // if there is only one offset, delete all transitions. This
+ // could happen if only time zone abbreviations changed.
+ if (gmtOffsets.size() == 1) {
+ transitions = null;
+ usedRuleRecs = null;
+ setDSTType(NO_DST);
+ return;
+ }
+ for (int i = 0; i < (transitions.size() - 2); i++) { // don't remove the last one
+ if (transitions.get(i) == transitions.get(i+1)) {
+ transitions.remove(i);
+ offsets.remove(i);
+ dstOffsets.remove(i);
+ i--;
+ }
+ }
+
+ for (int i = 0; i < (transitions.size() - 2); i++) { // don't remove the last one
+ if (offsets.get(i) == offsets.get(i+1)
+ && dstOffsets.get(i) == dstOffsets.get(i+1)) {
+ transitions.remove(i+1);
+ offsets.remove(i+1);
+ dstOffsets.remove(i+1);
+ i--;
+ }
+ }
+ }
+
+ /**
+ * Stores the specified offset value from GMT in the GMT offsets
+ * table and returns its index. The offset value includes the base
+ * GMT offset and any additional daylight saving if applicable. If
+ * the same value as the specified offset is already in the table,
+ * its index is returned.
+ * @param offset the offset value in milliseconds
+ * @return the index to the offset value in the GMT offsets table.
+ */
+ int getOffsetIndex(int offset) {
+ return getOffsetIndex(offset, 0);
+ }
+
+ /**
+ * Stores the specified daylight saving value in the GMT offsets
+ * table and returns its index. If the same value as the specified
+ * offset is already in the table, its index is returned. If 0 is
+ * specified, it's not stored in the table and -1 is returned.
+ * @param offset the offset value in milliseconds
+ * @return the index to the specified offset value in the GMT
+ * offsets table, or -1 if 0 is specified.
+ */
+ int getDstOffsetIndex(int offset) {
+ if (offset == 0) {
+ return -1;
+ }
+ return getOffsetIndex(offset, 1);
+ }
+
+ private int getOffsetIndex(int offset, int index) {
+ if (gmtOffsets == null) {
+ gmtOffsets = new ArrayList<Integer>();
+ }
+ for (int i = index; i < gmtOffsets.size(); i++) {
+ if (offset == gmtOffsets.get(i)) {
+ return i;
+ }
+ }
+ if (gmtOffsets.size() < index) {
+ gmtOffsets.add(0);
+ }
+ gmtOffsets.add(offset);
+ return gmtOffsets.size() - 1;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/Zone.java b/jdk/make/tools/src/build/tools/javazic/Zone.java
new file mode 100644
index 0000000..1b88123
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/Zone.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+/**
+ * Zone holds information corresponding to a "Zone" part of a time
+ * zone definition file.
+ *
+ * @since 1.4
+ */
+class Zone {
+ // zone name (e.g., "America/Los_Angeles")
+ private String name;
+
+ // zone records
+ private List<ZoneRec> list;
+
+ // target zone names for this compilation
+ private static Set<String> targetZones;
+
+ /**
+ * Constructs a Zone with the specified zone name.
+ * @param name the zone name
+ */
+ Zone(String name) {
+ this.name = name;
+ list = new ArrayList<ZoneRec>();
+ }
+
+ /**
+ * Reads time zone names to be generated, called "target zone
+ * name", from the specified text file and creats an internal hash
+ * table to keep those names. It's assumed that one text line
+ * contains a zone name or comments if it starts with
+ * '#'. Comments can't follow a zone name in a single line.
+ * @param fileName the text file name
+ */
+ static void readZoneNames(String fileName) {
+ if (fileName == null) {
+ return;
+ }
+ BufferedReader in = null;
+ try {
+ FileReader fr = new FileReader(fileName);
+ in = new BufferedReader(fr);
+ } catch (FileNotFoundException e) {
+ Main.panic("can't open file: " + fileName);
+ }
+ targetZones = new HashSet<String>();
+ String line;
+
+ try {
+ while ((line = in.readLine()) != null) {
+ line = line.trim();
+ if (line.length() == 0 || line.charAt(0) == '#') {
+ continue;
+ }
+ if (!targetZones.add(line)) {
+ Main.warning("duplicated target zone name: " + line);
+ }
+ }
+ in.close();
+ } catch (IOException e) {
+ Main.panic("IO error: "+e.getMessage());
+ }
+ }
+
+ /**
+ * Determines whether the specified zone is one of the target zones.
+ * If no target zones are specified, this method always returns
+ * true for any zone name.
+ * @param zoneName the zone name
+ * @return true if the specified name is a target zone.
+ */
+ static boolean isTargetZone(String zoneName) {
+ if (targetZones == null) {
+ return true;
+ }
+ return targetZones.contains(zoneName);
+ }
+
+ /**
+ * Forces to add "MET" to the target zone table. This is because
+ * there is a conflict between Java zone name "WET" and Olson zone
+ * name.
+ */
+ static void addMET() {
+ if (targetZones != null) {
+ targetZones.add("MET");
+ }
+ }
+
+ /**
+ * @return the zone name
+ */
+ String getName() {
+ return name;
+ }
+
+ /**
+ * Adds the specified zone record to the zone record list.
+ */
+ void add(ZoneRec rec) {
+ list.add(rec);
+ }
+
+ /**
+ * @param index the index at which the zone record in the list is returned.
+ * @return the zone record specified by the index.
+ */
+ ZoneRec get(int index) {
+ return list.get(index);
+ }
+
+ /**
+ * @return the size of the zone record list
+ */
+ int size() {
+ return list.size();
+ }
+
+ /**
+ * Resolves the reference to a rule in each zone record.
+ * @param zi the Zoneinfo object with which the rule reference is
+ * resolved.
+ */
+ void resolve(Zoneinfo zi) {
+ for (int i = 0; i < list.size(); i++) {
+ ZoneRec rec = list.get(i);
+ rec.resolve(zi);
+ }
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/ZoneRec.java b/jdk/make/tools/src/build/tools/javazic/ZoneRec.java
new file mode 100644
index 0000000..45cacc0
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/ZoneRec.java
@@ -0,0 +1,252 @@
+/*
+ * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+/**
+ * ZoneRec hold information of time zone corresponding to each text
+ * line of the "Zone" part.
+ *
+ * @since 1.4
+ */
+class ZoneRec {
+ private int gmtOffset;
+ private String ruleName;
+ private int directSave;
+ private Rule ruleRef;
+ private String format;
+ private boolean hasUntil;
+ private int untilYear;
+ private Month untilMonth;
+ private RuleDay untilDay;
+ private Time untilTime;
+ private long untilInMillis;
+ private String line;
+
+ /**
+ * @return the "UNTIL" value in milliseconds
+ */
+ Time getUntilTime() {
+ return untilTime;
+ }
+
+ /**
+ * @return the GMT offset value in milliseconds
+ */
+ int getGmtOffset() {
+ return gmtOffset;
+ }
+
+ /**
+ * @return the rule name to which this zone record refers
+ */
+ String getRuleName() {
+ return ruleName;
+ }
+
+ /**
+ * @return the amount of saving time directly defined in the
+ * "RULES/SAVE" field.
+ */
+ int getDirectSave() {
+ return directSave;
+ }
+
+ /**
+ * @return true if this zone record has a reference to a rule
+ */
+ boolean hasRuleReference() {
+ return ruleRef != null;
+ }
+
+ /**
+ * Returns the "FORMAT" field string of this zone record. This
+ * @return the "FORMAT" field
+ */
+ String getFormat() {
+ return format;
+ }
+
+ /**
+ * @return the year in the "UNTIL" field
+ */
+ int getUntilYear() {
+ return untilYear;
+ }
+
+ /**
+ * Returns the "UNTIL" field value in milliseconds from Janurary
+ * 1, 1970 0:00 GMT.
+ * @param currentSave the amount of daylight saving in
+ * milliseconds that is used to adjust wall-clock time.
+ * @return the milliseconds value of the "UNTIL" field
+ */
+ long getUntilTime(int currentSave) {
+ if (untilTime.isWall()) {
+ return untilInMillis - currentSave;
+ }
+ return untilInMillis;
+ }
+
+ /**
+ * Returns the "UNTIL" time in milliseconds without adjusting GMT
+ * offsets or daylight saving.
+ * @return local "UNTIL" time in milliseconds
+ */
+ long getLocalUntilTime() {
+ return Time.getLocalTime(untilYear,
+ untilMonth,
+ untilDay,
+ untilTime.getTime());
+ }
+
+ /**
+ * Returns the "UNTIL" time in milliseconds with adjusting GMT offsets and daylight saving.
+ * @return the "UNTIL" time after the adjustment
+ */
+ long getLocalUntilTime(int save, int gmtOffset) {
+ return Time.getLocalTime(untilYear,
+ untilMonth,
+ untilDay,
+ save,
+ gmtOffset,
+ untilTime);
+ }
+
+ /**
+ * @return the text line of this zone record
+ */
+ String getLine() {
+ return line;
+ }
+
+ /**
+ * Sets the specified text line to this zone record
+ */
+ void setLine(String line) {
+ this.line = line;
+ }
+
+ /**
+ * @return true if this zone record has the "UNTIL" field
+ */
+ boolean hasUntil() {
+ return this.hasUntil;
+ }
+
+ /**
+ * Adjusts the "UNTIL" time to GMT offset if this zone record has
+ * it. <code>untilTime</code> is not adjusted to daylight saving
+ * in this method.
+ */
+ void adjustTime() {
+ if (!hasUntil()) {
+ return;
+ }
+ if (untilTime.isSTD() || untilTime.isWall()) {
+ // adjust to gmt offset only here. adjust to real
+ // wall-clock time when tracking rules
+ untilInMillis -= gmtOffset;
+ }
+ }
+
+ /**
+ * @return the reference to the Rule object
+ */
+ Rule getRuleRef() {
+ return ruleRef;
+ }
+
+ /**
+ * Resolves the reference to a Rule and adjusts its "UNTIL" time
+ * to GMT offset.
+ */
+ void resolve(Zoneinfo zi) {
+ if (ruleName != null && (!"-".equals(ruleName))) {
+ ruleRef = zi.getRule(ruleName);
+ }
+ adjustTime();
+ }
+
+ /**
+ * Parses a Zone text line that is described by a StringTokenizer.
+ * @param tokens represents tokens of a Zone text line
+ * @return the zone record produced by parsing the text
+ */
+ static ZoneRec parse(StringTokenizer tokens) {
+ ZoneRec rec = new ZoneRec();
+ try {
+ rec.gmtOffset = (int) Time.parse(tokens.nextToken()).getTime();
+ String token = tokens.nextToken();
+ char c = token.charAt(0);
+ if (c >= '0' && c <= '9') {
+ rec.directSave = (int) Time.parse(token).getTime();
+ } else {
+ rec.ruleName = token;
+ }
+ rec.format = tokens.nextToken();
+ if (tokens.hasMoreTokens()) {
+ rec.hasUntil = true;
+ rec.untilYear = Integer.parseInt(tokens.nextToken());
+ if (tokens.hasMoreTokens()) {
+ rec.untilMonth = Month.parse(tokens.nextToken());
+ } else {
+ rec.untilMonth = Month.JANUARY;
+ }
+ if (tokens.hasMoreTokens()) {
+ rec.untilDay = RuleDay.parse(tokens.nextToken());
+ } else {
+ rec.untilDay = new RuleDay(1);
+ }
+ if (tokens.hasMoreTokens()) {
+ rec.untilTime = Time.parse(tokens.nextToken());
+ } else {
+ rec.untilTime = Time.parse("0:00");
+ }
+ rec.untilInMillis = rec.getLocalUntilTime();
+ }
+ } catch (Exception e) {
+ // TODO: error reporting
+ e.printStackTrace();
+ }
+ return rec;
+ }
+
+ private static void panic(String msg) {
+ Main.panic(msg);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/javazic/Zoneinfo.java b/jdk/make/tools/src/build/tools/javazic/Zoneinfo.java
new file mode 100644
index 0000000..cfddead
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/javazic/Zoneinfo.java
@@ -0,0 +1,565 @@
+/*
+ * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.javazic;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+/**
+ * Zoneinfo provides javazic compiler front-end functionality.
+ * @since 1.4
+ */
+class Zoneinfo {
+
+ private static final int minYear = 1900;
+ private static final int maxYear = 2037;
+ private static final long minTime = Time.getLocalTime(minYear, Month.JANUARY, 1, 0);
+ private static int startYear = minYear;
+ private static int endYear = maxYear;
+
+ /**
+ * True if javazic should generate a list of SimpleTimeZone
+ * instances for the SimpleTimeZone-based time zone support.
+ */
+ static boolean isYearForTimeZoneDataSpecified = false;
+
+ /**
+ * Zone name to Zone mappings
+ */
+ private Map<String,Zone> zones;
+
+ /**
+ * Rule name to Rule mappings
+ */
+ private Map<String,Rule> rules;
+
+ /**
+ * Alias name to real name mappings
+ */
+ private Map<String,String> aliases;
+
+ /**
+ * Constracts a Zoneinfo.
+ */
+ Zoneinfo() {
+ zones = new HashMap<String,Zone>();
+ rules = new HashMap<String,Rule>();
+ aliases = new HashMap<String,String>();
+ }
+
+ /**
+ * Adds the given zone to the list of Zones.
+ * @param zone Zone to be added to the list.
+ */
+ void add(Zone zone) {
+ String name = zone.getName();
+ zones.put(name, zone);
+ }
+
+ /**
+ * Adds the given rule to the list of Rules.
+ * @param rule Rule to be added to the list.
+ */
+ void add(Rule rule) {
+ String name = rule.getName();
+ rules.put(name, rule);
+ }
+
+ /**
+ * Puts the specifid name pair to the alias table.
+ * @param name1 an alias time zone name
+ * @param name2 the real time zone of the alias name
+ */
+ void putAlias(String name1, String name2) {
+ aliases.put(name1, name2);
+ }
+
+ /**
+ * Sets the given year for SimpleTimeZone list output.
+ * This method is called when the -S option is specified.
+ * @param year the year for which SimpleTimeZone list should be generated
+ */
+ static void setYear(int year) {
+ setStartYear(year);
+ setEndYear(year);
+ isYearForTimeZoneDataSpecified = true;
+ }
+
+ /**
+ * Sets the start year.
+ * @param year the start year value
+ * @throws IllegalArgumentException if the specified year value is
+ * smaller than the minimum year or greater than the end year.
+ */
+ static void setStartYear(int year) {
+ if (year < minYear || year > endYear) {
+ throw new IllegalArgumentException("invalid start year specified: " + year);
+ }
+ startYear = year;
+ }
+
+ /**
+ * @return the start year value
+ */
+ static int getStartYear() {
+ return startYear;
+ }
+
+ /**
+ * Sets the end year.
+ * @param year the end year value
+ * @throws IllegalArgumentException if the specified year value is
+ * smaller than the start year or greater than the maximum year.
+ */
+ static void setEndYear(int year) {
+ if (year < startYear || year > maxYear) {
+ throw new IllegalArgumentException();
+ }
+ endYear = year;
+ }
+
+ /**
+ * @return the end year value
+ */
+ static int getEndYear() {
+ return endYear;
+ }
+
+ /**
+ * @return the minimum year value
+ */
+ static int getMinYear() {
+ return minYear;
+ }
+
+ /**
+ * @return the maximum year value
+ */
+ static int getMaxYear() {
+ return maxYear;
+ }
+
+ /**
+ * @return the alias table
+ */
+ Map<String,String> getAliases() {
+ return aliases;
+ }
+
+ /**
+ * @return the Zone list
+ */
+ Map<String,Zone> getZones() {
+ return zones;
+ }
+
+ /**
+ * @return a Zone specified by name.
+ * @param name a zone name
+ */
+ Zone getZone(String name) {
+ return zones.get(name);
+ }
+
+ /**
+ * @return a Rule specified by name.
+ * @param name a rule name
+ */
+ Rule getRule(String name) {
+ return rules.get(name);
+ }
+
+ private static String line;
+
+ private static int lineNum;
+
+ /**
+ * Parses the specified time zone data file and creates a Zoneinfo
+ * that has all Rules, Zones and Links (aliases) information.
+ * @param fname the time zone data file name
+ * @return a Zoneinfo object
+ */
+ static Zoneinfo parse(String fname) {
+ BufferedReader in = null;
+ try {
+ FileReader fr = new FileReader(fname);
+ in = new BufferedReader(fr);
+ } catch (FileNotFoundException e) {
+ panic("can't open file: "+fname);
+ }
+ Zoneinfo zi = new Zoneinfo();
+ boolean continued = false;
+ Zone zone = null;
+ String l;
+
+ try {
+ while ((line = in.readLine()) != null) {
+ lineNum++;
+ // skip blank and comment lines
+ if (line.length() == 0 || line.charAt(0) == '#') {
+ continue;
+ }
+
+ // trim trailing comments
+ int rindex = line.lastIndexOf('#');
+ if (rindex != -1) {
+ // take the data part of the line
+ l = line.substring(0, rindex);
+ } else {
+ l = line;
+ }
+
+ StringTokenizer tokens = new StringTokenizer(l);
+ if (!tokens.hasMoreTokens()) {
+ continue;
+ }
+ String token = tokens.nextToken();
+
+ if (continued || "Zone".equals(token)) {
+ if (zone == null) {
+ if (!tokens.hasMoreTokens()) {
+ panic("syntax error: zone no more token");
+ }
+ token = tokens.nextToken();
+ // if the zone name is in "GMT+hh" or "GMT-hh"
+ // format, ignore it due to spec conflict.
+ if (token.startsWith("GMT+") || token.startsWith("GMT-")) {
+ continue;
+ }
+ zone = new Zone(token);
+ } else {
+ // no way to push the current token back...
+ tokens = new StringTokenizer(l);
+ }
+
+ ZoneRec zrec = ZoneRec.parse(tokens);
+ zrec.setLine(line);
+ zone.add(zrec);
+ if ((continued = zrec.hasUntil()) == false) {
+ if (Zone.isTargetZone(zone.getName())) {
+ // zone.resolve(zi);
+ zi.add(zone);
+ }
+ zone = null;
+ }
+ } else if ("Rule".equals(token)) {
+ if (!tokens.hasMoreTokens()) {
+ panic("syntax error: rule no more token");
+ }
+ token = tokens.nextToken();
+ Rule rule = zi.getRule(token);
+ if (rule == null) {
+ rule = new Rule(token);
+ zi.add(rule);
+ }
+ RuleRec rrec = RuleRec.parse(tokens);
+ rrec.setLine(line);
+ rule.add(rrec);
+ } else if ("Link".equals(token)) {
+ // Link <newname> <oldname>
+ try {
+ String name1 = tokens.nextToken();
+ String name2 = tokens.nextToken();
+
+ // if the zone name is in "GMT+hh" or "GMT-hh"
+ // format, ignore it due to spec conflict with
+ // custom time zones. Also, ignore "ROC" for
+ // PC-ness.
+ if (name2.startsWith("GMT+") || name2.startsWith("GMT-")
+ || "ROC".equals(name2)) {
+ continue;
+ }
+ zi.putAlias(name2, name1);
+ } catch (Exception e) {
+ panic("syntax error: no more token for Link");
+ }
+ }
+ }
+ in.close();
+ } catch (IOException ex) {
+ panic("IO error: " + ex.getMessage());
+ }
+
+ return zi;
+ }
+
+ /**
+ * Interprets a zone and constructs a Timezone object that
+ * contains enough information on GMT offsets and DST schedules to
+ * generate a zone info database.
+ *
+ * @param zoneName the zone name for which a Timezone object is
+ * constructed.
+ *
+ * @return a Timezone object that contains all GMT offsets and DST
+ * rules information.
+ */
+ Timezone phase2(String zoneName) {
+ Timezone tz = new Timezone(zoneName);
+ Zone zone = getZone(zoneName);
+ zone.resolve(this);
+
+ // TODO: merge phase2's for the regular and SimpleTimeZone ones.
+ if (isYearForTimeZoneDataSpecified) {
+ ZoneRec zrec = zone.get(zone.size()-1);
+ tz.setLastZoneRec(zrec);
+ tz.setRawOffset(zrec.getGmtOffset());
+ if (zrec.hasRuleReference()) {
+ /*
+ * This part assumes that the specified year is covered by
+ * the rules referred to by the last zone record.
+ */
+ List<RuleRec> rrecs = zrec.getRuleRef().getRules(startYear);
+
+ if (rrecs.size() == 2) {
+ // make sure that one is a start rule and the other is
+ // an end rule.
+ RuleRec r0 = rrecs.get(0);
+ RuleRec r1 = rrecs.get(1);
+ if (r0.getSave() == 0 && r1.getSave() > 0) {
+ rrecs.set(0, r1);
+ rrecs.set(1, r0);
+ } else if (!(r0.getSave() > 0 && r1.getSave() == 0)) {
+ rrecs = null;
+ Main.error(zoneName + ": rules for " + startYear + " not found.");
+ }
+ } else {
+ rrecs = null;
+ }
+ if (rrecs != null) {
+ tz.setLastRules(rrecs);
+ }
+ }
+ return tz;
+ }
+
+ int gmtOffset;
+ int year = minYear;
+ int fromYear = year;
+ long fromTime = Time.getLocalTime(startYear,
+ Month.JANUARY,
+ 1, 0);
+
+ // take the index 0 for the GMT offset of the last zone record
+ ZoneRec zrec = zone.get(zone.size()-1);
+ tz.getOffsetIndex(zrec.getGmtOffset());
+
+ int currentSave = 0;
+ boolean usedZone;
+ for (int zindex = 0; zindex < zone.size(); zindex++) {
+ zrec = zone.get(zindex);
+ usedZone = false;
+ gmtOffset = zrec.getGmtOffset();
+ int stdOffset = zrec.getDirectSave();
+
+ // If this is the last zone record, take the last rule info.
+ if (!zrec.hasUntil()) {
+ tz.setRawOffset(gmtOffset, fromTime);
+ if (zrec.hasRuleReference()) {
+ tz.setLastRules(zrec.getRuleRef().getLastRules());
+ } else if (stdOffset != 0) {
+ // in case the last rule is all year round DST-only
+ // (Asia/Amman once announced this rule.)
+ tz.setLastDSTSaving(stdOffset);
+ }
+ }
+ if (!zrec.hasRuleReference()) {
+ if (!zrec.hasUntil() || zrec.getUntilTime(stdOffset) >= fromTime) {
+ tz.addTransition(fromTime,
+ tz.getOffsetIndex(gmtOffset+stdOffset),
+ tz.getDstOffsetIndex(stdOffset));
+ usedZone = true;
+ }
+ currentSave = stdOffset;
+ // optimization in case the last rule is fixed.
+ if (!zrec.hasUntil()) {
+ if (tz.getNTransitions() > 0) {
+ if (stdOffset == 0) {
+ tz.setDSTType(tz.X_DST);
+ } else {
+ tz.setDSTType(tz.LAST_DST);
+ }
+ long time = Time.getLocalTime(maxYear,
+ Month.JANUARY, 1, 0);
+ time -= zrec.getGmtOffset();
+ tz.addTransition(time,
+ tz.getOffsetIndex(gmtOffset+stdOffset),
+ tz.getDstOffsetIndex(stdOffset));
+ tz.addUsedRec(zrec);
+ } else {
+ tz.setDSTType(tz.NO_DST);
+ }
+ break;
+ }
+ } else {
+ Rule rule = zrec.getRuleRef();
+ boolean fromTimeUsed = false;
+ currentSave = 0;
+ year_loop:
+ for (year = getMinYear(); year <= endYear; year++) {
+ if (zrec.hasUntil() && year > zrec.getUntilYear()) {
+ break;
+ }
+ List<RuleRec> rules = rule.getRules(year);
+ if (rules.size() > 0) {
+ for (int i = 0; i < rules.size(); i++) {
+ RuleRec rrec = rules.get(i);
+ long transition = rrec.getTransitionTime(year,
+ gmtOffset,
+ currentSave);
+ if (zrec.hasUntil()) {
+ if (transition >= zrec.getUntilTime(currentSave)) {
+ break year_loop;
+ }
+ }
+
+ if (fromTimeUsed == false) {
+ if (fromTime <= transition) {
+ fromTimeUsed = true;
+
+ if (fromTime != minTime) {
+ int prevsave;
+
+ ZoneRec prevzrec = zone.get(zindex - 1);
+
+ // See if until time in the previous
+ // ZoneRec is the same thing as the
+ // local time in the next rule.
+ // (examples are Asia/Ashkhabad in 1991,
+ // Europe/Riga in 1989)
+
+ if (i > 0) {
+ prevsave = rules.get(i-1).getSave();
+ } else {
+ List<RuleRec> prevrules = rule.getRules(year-1);
+
+ if (prevrules.size() > 0) {
+ prevsave = prevrules.get(prevrules.size()-1).getSave();
+ } else {
+ prevsave = 0;
+ }
+ }
+
+ if (rrec.isSameTransition(prevzrec, prevsave, gmtOffset)) {
+ currentSave = rrec.getSave();
+ tz.addTransition(fromTime,
+ tz.getOffsetIndex(gmtOffset+currentSave),
+ tz.getDstOffsetIndex(currentSave));
+ tz.addUsedRec(rrec);
+ usedZone = true;
+ continue;
+ }
+ if (!prevzrec.hasRuleReference()
+ || rule != prevzrec.getRuleRef()
+ || (rule == prevzrec.getRuleRef()
+ && gmtOffset != prevzrec.getGmtOffset())) {
+ int save = (fromTime == transition) ? rrec.getSave() : currentSave;
+ tz.addTransition(fromTime,
+ tz.getOffsetIndex(gmtOffset+save),
+ tz.getDstOffsetIndex(save));
+ tz.addUsedRec(rrec);
+ usedZone = true;
+ }
+ } else {
+ int save = rrec.getSave();
+ tz.addTransition(fromTime,
+ tz.getOffsetIndex(gmtOffset+save),
+ tz.getDstOffsetIndex(save));
+ tz.addUsedRec(rrec);
+ usedZone = true;
+ }
+ } else if (year == fromYear && i == rules.size()-1) {
+ int save = rrec.getSave();
+ tz.addTransition(fromTime,
+ tz.getOffsetIndex(gmtOffset+save),
+ tz.getDstOffsetIndex(save));
+ }
+ }
+
+ currentSave = rrec.getSave();
+ if (fromTime < transition) {
+ tz.addTransition(transition,
+ tz.getOffsetIndex(gmtOffset+currentSave),
+ tz.getDstOffsetIndex(currentSave));
+ tz.addUsedRec(rrec);
+ usedZone = true;
+ }
+ }
+ } else {
+ if (year == fromYear) {
+ tz.addTransition(fromTime,
+ tz.getOffsetIndex(gmtOffset+currentSave),
+ tz.getDstOffsetIndex(currentSave));
+ fromTimeUsed = true;
+ }
+ if (year == endYear && !zrec.hasUntil()) {
+ if (tz.getNTransitions() > 0) {
+ // Assume that this Zone stopped DST
+ tz.setDSTType(tz.X_DST);
+ long time = Time.getLocalTime(maxYear, Month.JANUARY,
+ 1, 0);
+ time -= zrec.getGmtOffset();
+ tz.addTransition(time,
+ tz.getOffsetIndex(gmtOffset),
+ tz.getDstOffsetIndex(0));
+ usedZone = true;
+ } else {
+ tz.setDSTType(tz.NO_DST);
+ }
+ }
+ }
+ }
+ }
+ if (usedZone) {
+ tz.addUsedRec(zrec);
+ }
+ if (zrec.hasUntil() && zrec.getUntilTime(currentSave) > fromTime) {
+ fromTime = zrec.getUntilTime(currentSave);
+ fromYear = zrec.getUntilYear();
+ year = zrec.getUntilYear();
+ }
+ }
+
+ if (tz.getDSTType() == tz.UNDEF_DST) {
+ tz.setDSTType(tz.DST);
+ }
+ tz.optimize();
+ tz.checksum();
+ return tz;
+ }
+
+ private static void panic(String msg) {
+ Main.panic(msg);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/AbstractCommandNode.java b/jdk/make/tools/src/build/tools/jdwpgen/AbstractCommandNode.java
new file mode 100644
index 0000000..2d6aaec
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/AbstractCommandNode.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class AbstractCommandNode extends AbstractNamedNode {
+
+ void document(PrintWriter writer) {
+ writer.println("<h5><a name=\"" + context.whereC + "\">" + name +
+ " Command</a> (" + nameNode.value() + ")</h5>");
+ writer.println(comment());
+ writer.println("<dl>");
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ ((Node)it.next()).document(writer);
+ }
+ writer.println("</dl>");
+ }
+
+ void documentIndex(PrintWriter writer) {
+ writer.print(" <li><a href=\"#" + context.whereC + "\">");
+ writer.println(name() + "</a> (" + nameNode.value() + ")");
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/AbstractGroupNode.java b/jdk/make/tools/src/build/tools/jdwpgen/AbstractGroupNode.java
new file mode 100644
index 0000000..b7ca1f5
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/AbstractGroupNode.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+abstract class AbstractGroupNode extends AbstractTypeListNode {
+
+ void document(PrintWriter writer) {
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ ((Node)it.next()).document(writer);
+ }
+ }
+
+ String javaType() {
+ return name();
+ }
+
+ void genJava(PrintWriter writer, int depth) {
+ genJavaClass(writer, depth);
+ }
+
+ void genJavaWriteMethod(PrintWriter writer, int depth) {
+ genJavaWriteMethod(writer, depth, "private ");
+ }
+
+ void genJavaWriteMethod(PrintWriter writer, int depth, String modifier) {
+ writer.println();
+ indent(writer, depth);
+ writer.print(modifier);
+ writer.println("void write(PacketStream ps) {");
+ genJavaWrites(writer, depth+1);
+ indent(writer, depth);
+ writer.println("}");
+ }
+
+ void genJavaClassSpecifics(PrintWriter writer, int depth) {
+ switch (context.state) {
+ case Context.readingReply:
+ genJavaReadingClassBody(writer, depth, name());
+ break;
+
+ case Context.writingCommand:
+ genJavaWritingClassBody(writer, depth, name());
+ genJavaWriteMethod(writer, depth);
+ break;
+
+ default:
+ error("Group in outer");
+ break;
+ }
+ }
+
+ public void genJavaDeclaration(PrintWriter writer, int depth) {
+ writer.println();
+ genJavaComment(writer, depth);
+ indent(writer, depth);
+ writer.print("final ");
+ writer.print(name());
+ writer.print(" a" + name());
+ writer.println(";");
+ }
+
+ public String javaParam() {
+ return name() + " a" + name();
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel, "\"\"");
+ indent(writer, depth);
+ writer.println(writeLabel + ".write(ps);");
+ }
+
+ String javaRead() {
+ error("Internal - Should not call AbstractGroupNode.javaRead()");
+ return "";
+ }
+
+ public void genJavaRead(PrintWriter writer, int depth,
+ String readLabel) {
+ genJavaDebugRead(writer, depth, readLabel, "\"\"");
+ indent(writer, depth);
+ writer.print(readLabel);
+ writer.print(" = new ");
+ writer.print(name());
+ writer.println("(vm, ps);");
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/AbstractNamedNode.java b/jdk/make/tools/src/build/tools/jdwpgen/AbstractNamedNode.java
new file mode 100644
index 0000000..4420196
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/AbstractNamedNode.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+abstract class AbstractNamedNode extends Node {
+
+ NameNode nameNode;
+ String name;
+
+ public String name() {
+ return name;
+ }
+
+ void prune() {
+ Iterator it = components.iterator();
+
+ if (it.hasNext()) {
+ Node nameNode = (Node)it.next();
+
+ if (nameNode instanceof NameNode) {
+ this.nameNode = (NameNode)nameNode;
+ this.name = this.nameNode.text();
+ it.remove();
+ } else {
+ error("Bad name: " + name);
+ }
+ } else {
+ error("empty");
+ }
+ super.prune();
+ }
+
+ void constrain(Context ctx) {
+ nameNode.constrain(ctx);
+ super.constrain(ctx.subcontext(name));
+ }
+
+ void document(PrintWriter writer) {
+ writer.println("<h4><a name=" + name + ">" + name +
+ " Command Set</a></h4>");
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ ((Node)it.next()).document(writer);
+ }
+ }
+
+ String javaClassName() {
+ return name();
+ }
+
+ void genJavaClassSpecifics(PrintWriter writer, int depth) {
+ }
+
+ String javaClassImplements() {
+ return ""; // does not implement anything, by default
+ }
+
+ void genJavaClass(PrintWriter writer, int depth) {
+ writer.println();
+ genJavaComment(writer, depth);
+ indent(writer, depth);
+ if (depth != 0) {
+ writer.print("static ");
+ }
+ writer.print("class " + javaClassName());
+ writer.println(javaClassImplements() + " {");
+ genJavaClassSpecifics(writer, depth+1);
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ ((Node)it.next()).genJava(writer, depth+1);
+ }
+ indent(writer, depth);
+ writer.println("}");
+ }
+
+ void genCInclude(PrintWriter writer) {
+ if (nameNode instanceof NameValueNode) {
+ writer.println("#define " + context.whereC +
+ " " + nameNode.value());
+ }
+ super.genCInclude(writer);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/AbstractSimpleNode.java b/jdk/make/tools/src/build/tools/jdwpgen/AbstractSimpleNode.java
new file mode 100644
index 0000000..9f48619
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/AbstractSimpleNode.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+abstract class AbstractSimpleNode extends Node {
+
+ AbstractSimpleNode() {
+ kind = "-simple-";
+ components = new ArrayList<Node>();
+ }
+
+ void document(PrintWriter writer) {
+ writer.print(toString());
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/AbstractSimpleTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/AbstractSimpleTypeNode.java
new file mode 100644
index 0000000..07b17b4
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/AbstractSimpleTypeNode.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+
+abstract class AbstractSimpleTypeNode extends AbstractTypeNode {
+
+ void constrain(Context ctx) {
+ context = ctx;
+ nameNode.constrain(ctx);
+ if (components.size() != 0) {
+ error("Extraneous content: " + components.get(0));
+ }
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/AbstractTypeListNode.java b/jdk/make/tools/src/build/tools/jdwpgen/AbstractTypeListNode.java
new file mode 100644
index 0000000..dc73d22
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/AbstractTypeListNode.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+abstract class AbstractTypeListNode extends AbstractNamedNode {
+
+ void constrainComponent(Context ctx, Node node) {
+ if (node instanceof TypeNode) {
+ node.constrain(ctx);
+ } else {
+ error("Expected type descriptor item, got: " + node);
+ }
+ }
+
+ void document(PrintWriter writer) {
+ writer.println("<dt>" + name() + " Data");
+ if (components.size() == 0) {
+ writer.println("<dd>(None)");
+ } else {
+ writer.println("<dd><table border=1 cellpadding=3 cellspacing=0 width=\"90%\" summary=\"\"><tr>");
+ for (int i = maxStructIndent; i > 0; --i) {
+ writer.print("<th width=\"4%\">");
+ }
+ writer.println("<th width=\"15%\"><th width=\"65%\">");
+ writer.println("");
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ ((Node)it.next()).document(writer);
+ }
+ writer.println("</table>");
+ }
+ }
+
+ void genJavaClassBodyComponents(PrintWriter writer, int depth) {
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ TypeNode tn = (TypeNode)it.next();
+
+ tn.genJavaDeclaration(writer, depth);
+ }
+ }
+
+ void genJavaReads(PrintWriter writer, int depth) {
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ TypeNode tn = (TypeNode)it.next();
+ tn.genJavaRead(writer, depth, tn.name());
+ }
+ }
+
+ void genJavaReadingClassBody(PrintWriter writer, int depth,
+ String className) {
+ genJavaClassBodyComponents(writer, depth);
+ writer.println();
+ indent(writer, depth);
+ if (!context.inEvent()) {
+ writer.print("private ");
+ }
+ writer.println(className +
+ "(VirtualMachineImpl vm, PacketStream ps) {");
+ genJavaReads(writer, depth+1);
+ indent(writer, depth);
+ writer.println("}");
+ }
+
+ String javaParams() {
+ StringBuffer sb = new StringBuffer();
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ TypeNode tn = (TypeNode)it.next();
+ sb.append(tn.javaParam());
+ if (it.hasNext()) {
+ sb.append(", ");
+ }
+ }
+ return sb.toString();
+ }
+
+ void genJavaWrites(PrintWriter writer, int depth) {
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ TypeNode tn = (TypeNode)it.next();
+ tn.genJavaWrite(writer, depth, tn.name());
+ }
+ }
+
+ void genJavaWritingClassBody(PrintWriter writer, int depth,
+ String className) {
+ genJavaClassBodyComponents(writer, depth);
+ writer.println();
+ indent(writer, depth);
+ writer.println(className + "(" + javaParams() + ") {");
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ TypeNode tn = (TypeNode)it.next();
+ indent(writer, depth+1);
+ writer.println("this." + tn.name() + " = " + tn.name() + ";");
+ }
+ indent(writer, depth);
+ writer.println("}");
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/AbstractTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/AbstractTypeNode.java
new file mode 100644
index 0000000..0d07af1
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/AbstractTypeNode.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+
+import java.util.*;
+import java.io.*;
+
+abstract class AbstractTypeNode extends AbstractNamedNode
+ implements TypeNode {
+
+ abstract String docType();
+
+ public abstract void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel);
+
+ abstract String javaRead();
+
+ void document(PrintWriter writer) {
+ docRowStart(writer);
+ writer.println("<td colspan=" +
+ (maxStructIndent - structIndent) + ">");
+ writer.println(docType() + "<td><i>" + name() +
+ "</i><td>" + comment() + " ");
+ }
+
+ String javaType() {
+ return docType(); // default
+ }
+
+ public void genJavaRead(PrintWriter writer, int depth,
+ String readLabel) {
+ indent(writer, depth);
+ writer.print(readLabel);
+ writer.print(" = ");
+ writer.print(javaRead());
+ writer.println(";");
+ genJavaDebugRead(writer, depth, readLabel, debugValue(readLabel));
+ }
+
+ public void genJavaDeclaration(PrintWriter writer, int depth) {
+ writer.println();
+ genJavaComment(writer, depth);
+ indent(writer, depth);
+ writer.print("final ");
+ writer.print(javaType());
+ writer.print(" " + name);
+ writer.println(";");
+ }
+
+ public String javaParam() {
+ return javaType() + " " + name;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/AltNode.java b/jdk/make/tools/src/build/tools/jdwpgen/AltNode.java
new file mode 100644
index 0000000..b4aeae9
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/AltNode.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class AltNode extends AbstractGroupNode implements TypeNode {
+
+ SelectNode select;
+
+ void constrain(Context ctx) {
+ super.constrain(ctx);
+
+ if (!(nameNode instanceof NameValueNode)) {
+ error("Alt name must have value: " + nameNode);
+ }
+ if (parent instanceof SelectNode) {
+ select = (SelectNode)parent;
+ } else {
+ error("Alt must be in Select");
+ }
+ }
+
+ void document(PrintWriter writer) {
+ docRowStart(writer);
+ writer.println("<td colspan=" +
+ (maxStructIndent - structIndent + 1) + ">");
+ writer.println("Case " + nameNode.name + " - if <i>" +
+ ((SelectNode)parent).typeNode.name +
+ "</i> is " + nameNode.value() + ":");
+ writer.println("<td>" + comment() + " ");
+ ++structIndent;
+ super.document(writer);
+ --structIndent;
+ }
+
+ String javaClassImplements() {
+ return " extends " + select.commonBaseClass();
+ }
+
+ void genJavaClassSpecifics(PrintWriter writer, int depth) {
+ indent(writer, depth);
+ writer.print("static final " + select.typeNode.javaType());
+ writer.println(" ALT_ID = " + nameNode.value() + ";");
+ if (context.isWritingCommand()) {
+ genJavaCreateMethod(writer, depth);
+ } else {
+ indent(writer, depth);
+ writer.println(select.typeNode.javaParam() + "() {");
+ indent(writer, depth+1);
+ writer.println("return ALT_ID;");
+ indent(writer, depth);
+ writer.println("}");
+ }
+ super.genJavaClassSpecifics(writer, depth);
+ }
+
+ void genJavaWriteMethod(PrintWriter writer, int depth) {
+ genJavaWriteMethod(writer, depth, "");
+ }
+
+ void genJavaReadsSelectCase(PrintWriter writer, int depth, String common) {
+ indent(writer, depth);
+ writer.println("case " + nameNode.value() + ":");
+ indent(writer, depth+1);
+ writer.println(common + " = new " + name + "(vm, ps);");
+ indent(writer, depth+1);
+ writer.println("break;");
+ }
+
+ void genJavaCreateMethod(PrintWriter writer, int depth) {
+ indent(writer, depth);
+ writer.print("static " + select.name() + " create(");
+ writer.print(javaParams());
+ writer.println(") {");
+ indent(writer, depth+1);
+ writer.print("return new " + select.name() + "(");
+ writer.print("ALT_ID, new " + javaClassName() + "(");
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ TypeNode tn = (TypeNode)it.next();
+ writer.print(tn.name());
+ if (it.hasNext()) {
+ writer.print(", ");
+ }
+ }
+ writer.println("));");
+ indent(writer, depth);
+ writer.println("}");
+ }
+
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ArrayObjectTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ArrayObjectTypeNode.java
new file mode 100644
index 0000000..721d689
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ArrayObjectTypeNode.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+
+class ArrayObjectTypeNode extends ObjectTypeNode {
+
+ String docType() {
+ return "arrayID";
+ }
+
+ String javaType() {
+ return "ArrayReferenceImpl";
+ }
+
+ String javaRead() {
+ return "ps.readArrayReference()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ArrayRegionTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ArrayRegionTypeNode.java
new file mode 100644
index 0000000..5bb61fa
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ArrayRegionTypeNode.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class ArrayRegionTypeNode extends AbstractSimpleTypeNode {
+
+ String docType() {
+ return "arrayregion";
+ }
+
+ String javaType() {
+ return "List";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ error("Not implemented");
+ }
+
+ String javaRead() {
+ return "ps.readArrayRegion()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ArrayTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ArrayTypeNode.java
new file mode 100644
index 0000000..fa3e8de
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ArrayTypeNode.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 1998-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+
+class ArrayTypeNode extends ReferenceTypeNode {
+
+ String docType() {
+ return "arrayTypeID";
+ }
+
+ String javaType() {
+ return "ArrayTypeImpl";
+ }
+
+ String javaRead() {
+ return "--- should not get generated ---";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/BooleanTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/BooleanTypeNode.java
new file mode 100644
index 0000000..8027534
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/BooleanTypeNode.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class BooleanTypeNode extends AbstractSimpleTypeNode {
+
+ String docType() {
+ return "boolean";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel);
+ indent(writer, depth);
+ writer.println("ps.writeBoolean(" + writeLabel + ");");
+ }
+
+ String javaRead() {
+ return "ps.readBoolean()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ByteTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ByteTypeNode.java
new file mode 100644
index 0000000..a011b41
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ByteTypeNode.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class ByteTypeNode extends AbstractSimpleTypeNode {
+
+ String docType() {
+ return "byte";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel);
+ indent(writer, depth);
+ writer.println("ps.writeByte(" + writeLabel + ");");
+ }
+
+ String javaRead() {
+ return "ps.readByte()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ClassLoaderObjectTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ClassLoaderObjectTypeNode.java
new file mode 100644
index 0000000..af4b1f3
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ClassLoaderObjectTypeNode.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+
+class ClassLoaderObjectTypeNode extends ObjectTypeNode {
+
+ String docType() {
+ return "classLoaderID";
+ }
+
+ String javaType() {
+ return "ClassLoaderReferenceImpl";
+ }
+
+ String javaRead() {
+ return "ps.readClassLoaderReference()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ClassObjectTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ClassObjectTypeNode.java
new file mode 100644
index 0000000..7a74e38
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ClassObjectTypeNode.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+
+class ClassObjectTypeNode extends ObjectTypeNode {
+
+ String docType() {
+ return "classObjectID";
+ }
+
+ String javaType() {
+ return "ClassObjectReferenceImpl";
+ }
+
+ String javaRead() {
+ return "ps.readClassObjectReference()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ClassTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ClassTypeNode.java
new file mode 100644
index 0000000..03446db
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ClassTypeNode.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+
+class ClassTypeNode extends ReferenceTypeNode {
+
+ String docType() {
+ return "classID";
+ }
+
+ String javaType() {
+ return "ClassTypeImpl";
+ }
+
+ String javaRead() {
+ return "vm.classType(ps.readClassRef())";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/CommandNode.java b/jdk/make/tools/src/build/tools/jdwpgen/CommandNode.java
new file mode 100644
index 0000000..4cdda42
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/CommandNode.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright 1998-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class CommandNode extends AbstractCommandNode {
+
+ void constrain(Context ctx) {
+ if (components.size() == 3) {
+ Node out = (Node)components.get(0);
+ Node reply = (Node)components.get(1);
+ Node error = (Node)components.get(2);
+ if (!(out instanceof OutNode)) {
+ error("Expected 'Out' item, got: " + out);
+ }
+ if (!(reply instanceof ReplyNode)) {
+ error("Expected 'Reply' item, got: " + reply);
+ }
+ if (!(error instanceof ErrorSetNode)) {
+ error("Expected 'ErrorSet' item, got: " + error);
+ }
+ } else if (components.size() == 1) {
+ Node evt = (Node)components.get(0);
+ if (!(evt instanceof EventNode)) {
+ error("Expected 'Event' item, got: " + evt);
+ }
+ } else {
+ error("Command must have Out and Reply items or ErrorSet item");
+ }
+ super.constrain(ctx);
+ }
+
+ void genJavaClassSpecifics(PrintWriter writer, int depth) {
+ indent(writer, depth);
+ writer.println("static final int COMMAND = " +
+ nameNode.value() + ";");
+ }
+
+ void genJava(PrintWriter writer, int depth) {
+ genJavaClass(writer, depth);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/CommandSetNode.java b/jdk/make/tools/src/build/tools/jdwpgen/CommandSetNode.java
new file mode 100644
index 0000000..a5dd0d0
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/CommandSetNode.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class CommandSetNode extends AbstractNamedNode {
+
+ void constrainComponent(Context ctx, Node node) {
+ if (node instanceof CommandNode) {
+ node.constrain(ctx);
+ } else {
+ error("Expected 'Command' item, got: " + node);
+ }
+ }
+
+ void document(PrintWriter writer) {
+ writer.println("<h4><a name=\"" + context.whereC + "\">" + name +
+ " Command Set</a> (" +
+ nameNode.value() + ")</h4>");
+ writer.println(comment());
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ ((Node)it.next()).document(writer);
+ }
+ }
+
+ void documentIndex(PrintWriter writer) {
+ writer.print("<li><a href=\"#" + context.whereC + "\">");
+ writer.println(name() + "</a> Command Set (" +
+ nameNode.value() + ")");
+ writer.println("<ul>");
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ ((Node)it.next()).documentIndex(writer);
+ }
+ writer.println("</ul>");
+ }
+
+ void genJavaClassSpecifics(PrintWriter writer, int depth) {
+ indent(writer, depth);
+ writer.println("static final int COMMAND_SET = " + nameNode.value() + ";");
+ indent(writer, depth);
+ writer.println("private " + name() + "() {} // hide constructor");
+ }
+
+ void genJava(PrintWriter writer, int depth) {
+ genJavaClass(writer, depth);
+ }
+
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/CommentNode.java b/jdk/make/tools/src/build/tools/jdwpgen/CommentNode.java
new file mode 100644
index 0000000..c76c215
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/CommentNode.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class CommentNode extends AbstractSimpleNode {
+
+ String text;
+
+ CommentNode(String text) {
+ this.text = text;
+ }
+
+ String text() {
+ return text;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ConstantNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ConstantNode.java
new file mode 100644
index 0000000..bbb1589
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ConstantNode.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 1998-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class ConstantNode extends AbstractCommandNode {
+
+ ConstantNode() {
+ this(new ArrayList<Node>());
+ }
+
+ ConstantNode(List<Node> components) {
+ this.kind = "Constant";
+ this.components = components;
+ this.lineno = 0;
+ }
+
+ void constrain(Context ctx) {
+ if (components.size() != 0) {
+ error("Constants have no internal structure");
+ }
+ super.constrain(ctx);
+ }
+
+ void genJava(PrintWriter writer, int depth) {
+ indent(writer, depth);
+ writer.println("static final int " + name + " = " +
+ nameNode.value() + ";");
+ }
+
+ void document(PrintWriter writer) {
+
+ //Add anchor to each constant with format <constant table name>_<constant name>
+ writer.println("<tr><td>" + name + "<td>" + nameNode.value() +
+ "<td>" + comment() + " ");
+ }
+
+ public String getName(){
+
+ if (name == null || name.length() == 0) {
+ prune();
+ }
+ return name;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ConstantSetNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ConstantSetNode.java
new file mode 100644
index 0000000..6d688dd
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ConstantSetNode.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class ConstantSetNode extends AbstractNamedNode {
+
+ /**
+ * The mapping between a constant and its value.
+ */
+ protected static Map<String, String> constantMap;
+
+ ConstantSetNode(){
+ if (constantMap == null) {
+ constantMap = new HashMap<String, String>();
+ }
+ }
+
+ void prune() {
+ List<Node> addons = new ArrayList<Node>();
+
+ for (Iterator it = components.iterator(); it.hasNext(); ) {
+ Node node = (Node)it.next();
+ }
+ if (!addons.isEmpty()) {
+ components.addAll(addons);
+ }
+ super.prune();
+ }
+
+ void constrainComponent(Context ctx, Node node) {
+ if (node instanceof ConstantNode) {
+ node.constrain(ctx);
+ constantMap.put(name + "_" + ((ConstantNode) node).getName(), node.comment());
+ } else {
+ error("Expected 'Constant', got: " + node);
+ }
+ }
+
+ void document(PrintWriter writer) {
+ writer.println("<h4><a name=\"" + context.whereC + "\">" + name +
+ " Constants</a></h4>");
+ writer.println(comment());
+ writer.println("<dd><table border=1 cellpadding=3 cellspacing=0 width=\"90%\" summary=\"\"><tr>");
+ writer.println("<th width=\"20%\"><th width=\"5%\"><th width=\"65%\">");
+ ConstantNode n;
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ n = ((ConstantNode)it.next());
+ writer.println("<a NAME=\"" + name + "_" + n.name + "\"></a>");
+ n.document(writer);
+ }
+ writer.println("</table>");
+ }
+
+ void documentIndex(PrintWriter writer) {
+ writer.print("<li><a href=\"#" + context.whereC + "\">");
+ writer.println(name() + "</a> Constants");
+// writer.println("<ul>");
+// for (Iterator it = components.iterator(); it.hasNext();) {
+// ((Node)it.next()).documentIndex(writer);
+// }
+// writer.println("</ul>");
+ }
+
+ void genJavaClassSpecifics(PrintWriter writer, int depth) {
+ }
+
+ void genJava(PrintWriter writer, int depth) {
+ genJavaClass(writer, depth);
+ }
+
+ public static String getConstant(String key){
+ if (constantMap == null) {
+ return "";
+ }
+ String com = (String) constantMap.get(key);
+ if(com == null){
+ return "";
+ } else {
+ return com;
+ }
+ }
+
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/Context.java b/jdk/make/tools/src/build/tools/jdwpgen/Context.java
new file mode 100644
index 0000000..4111efa
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/Context.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+
+class Context {
+
+ static final int outer = 0;
+ static final int readingReply = 1;
+ static final int writingCommand = 2;
+
+ final String whereJava;
+ final String whereC;
+
+ int state = outer;
+ private boolean inEvent = false;
+
+ Context() {
+ whereJava = "";
+ whereC = "";
+ }
+
+ private Context(String whereJava, String whereC) {
+ this.whereJava = whereJava;
+ this.whereC = whereC;
+ }
+
+ Context subcontext(String level) {
+ Context ctx;
+ if (whereC.length() == 0) {
+ ctx = new Context(level, level);
+ } else {
+ ctx = new Context(whereJava + "." + level, whereC + "_" + level);
+ }
+ ctx.state = state;
+ ctx.inEvent = inEvent;
+ return ctx;
+ }
+
+ private Context cloneContext() {
+ Context ctx = new Context(whereJava, whereC);
+ ctx.state = state;
+ ctx.inEvent = inEvent;
+ return ctx;
+ }
+
+ Context replyReadingSubcontext() {
+ Context ctx = cloneContext();
+ ctx.state = readingReply;
+ return ctx;
+ }
+
+ Context commandWritingSubcontext() {
+ Context ctx = cloneContext();
+ ctx.state = writingCommand;
+ return ctx;
+ }
+
+ Context inEventSubcontext() {
+ Context ctx = cloneContext();
+ ctx.inEvent = true;
+ return ctx;
+ }
+
+ boolean inEvent() {
+ return inEvent;
+ }
+
+ boolean isWritingCommand() {
+ return state == writingCommand;
+ }
+
+ boolean isReadingReply() {
+ return state == readingReply;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ErrorNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ErrorNode.java
new file mode 100644
index 0000000..445f3e8
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ErrorNode.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class ErrorNode extends AbstractCommandNode {
+
+ protected static final String NAME_OF_ERROR_TABLE = "Error";
+
+ ErrorNode() {
+ this(new ArrayList<Node>());
+ }
+
+ ErrorNode(List<Node> components) {
+ this.kind = "Error";
+ this.components = components;
+ this.lineno = 0;
+ }
+
+ void constrain(Context ctx) {
+ if (components.size() != 0) {
+ error("Errors have no internal structure");
+ }
+ super.constrain(ctx);
+ }
+
+ void document(PrintWriter writer) {
+
+ String com = comment();
+ if (com == null || com.length() == 0) {
+ com = ConstantSetNode.getConstant("Error_" + name);
+ }
+ writer.println("<tr><td>" + "<a href=\"#" + NAME_OF_ERROR_TABLE + "_" + name + "\">"
+ + name + "</a></td>" +
+ "<td>" + com + " </td></tr>");
+ }
+
+ void genJavaComment(PrintWriter writer, int depth) {}
+
+ void genJava(PrintWriter writer, int depth) {}
+
+ void genCInclude(PrintWriter writer) {}
+
+ void genJavaDebugWrite(PrintWriter writer, int depth,
+ String writeLabel) {}
+
+ void genJavaDebugWrite(PrintWriter writer, int depth,
+ String writeLabel, String displayValue) {}
+
+ public void genJavaRead(PrintWriter writer, int depth,
+ String readLabel) {}
+
+ void genJavaDebugRead(PrintWriter writer, int depth,
+ String readLabel, String displayValue) {}
+
+ void genJavaPreDef(PrintWriter writer, int depth) {}
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ErrorSetNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ErrorSetNode.java
new file mode 100644
index 0000000..68eb91f
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ErrorSetNode.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2001-2002 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class ErrorSetNode extends AbstractSimpleNode {
+
+ void constrainComponent(Context ctx, Node node) {
+ if (node instanceof ErrorNode) {
+ node.constrain(ctx);
+ } else {
+ error("Expected 'Error' item, got: " + node);
+ }
+ }
+
+ void document(PrintWriter writer) {
+
+ writer.println("<dt>" + "Error Data");
+ if (components.size() == 0) {
+ writer.println("<dd>(None)");
+ } else {
+ writer.println("<dd><table border=1 cellpadding=3 cellspacing=0 width=\"90%\" summary=\"\">");
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ ((Node)it.next()).document(writer);
+ }
+ writer.println("</table>");
+ }
+ }
+
+ void genJavaComment(PrintWriter writer, int depth) {}
+
+ void genJava(PrintWriter writer, int depth) {}
+
+ void genCInclude(PrintWriter writer) {}
+
+ void genJavaDebugWrite(PrintWriter writer, int depth,
+ String writeLabel) {}
+
+ void genJavaDebugWrite(PrintWriter writer, int depth,
+ String writeLabel, String displayValue) {}
+
+ public void genJavaRead(PrintWriter writer, int depth,
+ String readLabel) {}
+
+ void genJavaDebugRead(PrintWriter writer, int depth,
+ String readLabel, String displayValue) {}
+
+ void genJavaPreDef(PrintWriter writer, int depth) {}
+
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/EventNode.java b/jdk/make/tools/src/build/tools/jdwpgen/EventNode.java
new file mode 100644
index 0000000..1857842
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/EventNode.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class EventNode extends ReplyNode {
+
+ void constrain(Context ctx) {
+ super.constrain(ctx.inEventSubcontext());
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/FieldTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/FieldTypeNode.java
new file mode 100644
index 0000000..c2f719b
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/FieldTypeNode.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class FieldTypeNode extends AbstractSimpleTypeNode {
+
+ String docType() {
+ return "fieldID";
+ }
+
+ String javaType() {
+ return "long";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel);
+ indent(writer, depth);
+ writer.println("ps.writeFieldRef(" + writeLabel + ");");
+ }
+
+ String javaRead() {
+ return "ps.readFieldRef()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/FrameTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/FrameTypeNode.java
new file mode 100644
index 0000000..6d55711
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/FrameTypeNode.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class FrameTypeNode extends AbstractSimpleTypeNode {
+
+ String docType() {
+ return "frameID";
+ }
+
+ String javaType() {
+ return "long";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel);
+ indent(writer, depth);
+ writer.println("ps.writeFrameRef(" + writeLabel + ");");
+ }
+
+ String javaRead() {
+ return "ps.readFrameRef()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/GroupNode.java b/jdk/make/tools/src/build/tools/jdwpgen/GroupNode.java
new file mode 100644
index 0000000..6f41556
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/GroupNode.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class GroupNode extends AbstractGroupNode implements TypeNode {
+
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/IntTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/IntTypeNode.java
new file mode 100644
index 0000000..c85f2cf
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/IntTypeNode.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class IntTypeNode extends AbstractSimpleTypeNode {
+
+ String docType() {
+ return "int";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel);
+ indent(writer, depth);
+ writer.println("ps.writeInt(" + writeLabel + ");");
+ }
+
+ String javaRead() {
+ return "ps.readInt()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/InterfaceTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/InterfaceTypeNode.java
new file mode 100644
index 0000000..e4bc74d
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/InterfaceTypeNode.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+
+class InterfaceTypeNode extends ReferenceTypeNode {
+
+ String docType() {
+ return "interfaceID";
+ }
+
+ String javaType() {
+ return "InterfaceTypeImpl";
+ }
+
+ String javaRead() {
+ return "vm.interfaceType(ps.readClassRef())";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/LocationTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/LocationTypeNode.java
new file mode 100644
index 0000000..7f66571
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/LocationTypeNode.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class LocationTypeNode extends AbstractSimpleTypeNode {
+
+ String docType() {
+ return "location";
+ }
+
+ String javaType() {
+ return "Location";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel);
+ indent(writer, depth);
+ writer.println("ps.writeLocation(" + writeLabel + ");");
+ }
+
+ String javaRead() {
+ return "ps.readLocation()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/LongTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/LongTypeNode.java
new file mode 100644
index 0000000..13f4702
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/LongTypeNode.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class LongTypeNode extends AbstractSimpleTypeNode {
+
+ String docType() {
+ return "long";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel);
+ indent(writer, depth);
+ writer.println("ps.writeLong(" + writeLabel + ");");
+ }
+
+ String javaRead() {
+ return "ps.readLong()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/Main.java b/jdk/make/tools/src/build/tools/jdwpgen/Main.java
new file mode 100644
index 0000000..2562dd1
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/Main.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class Main {
+
+ static String specSource;
+ static Map nameMap = new HashMap();
+ static boolean genDebug = true;
+
+ static void usage() {
+ System.err.println();
+ System.err.println(
+ "java Main <spec_input> <options>...");
+ System.err.println();
+ System.err.println("Options:");
+ System.err.println("-doc <doc_output>");
+ System.err.println("-jdi <java_output>");
+ System.err.println("-include <include_file_output>");
+ System.exit(1);
+ }
+
+ public static void main(String args[]) throws IOException {
+ Reader reader = null;
+ PrintWriter doc = null;
+ PrintWriter jdi = null;
+ PrintWriter include = null;
+
+ // Parse arguments
+ for (int i = 0 ; i < args.length ; ++i) {
+ String arg = args[i];
+ if (arg.startsWith("-")) {
+ String fn = args[++i];
+ if (arg.equals("-doc")) {
+ doc = new PrintWriter(new FileWriter(fn));
+ } else if (arg.equals("-jdi")) {
+ jdi = new PrintWriter(new FileWriter(fn));
+ } else if (arg.equals("-include")) {
+ include = new PrintWriter(new FileWriter(fn));
+ } else {
+ System.err.println("Invalid option: " + arg);
+ usage();
+ }
+ } else {
+ specSource = arg;
+ reader = new FileReader(specSource);
+ }
+ }
+ if (reader == null) {
+ System.err.println("<spec_input> must be specified");
+ usage();
+ }
+
+ Parse parse = new Parse(reader);
+ RootNode root = parse.items();
+ root.parentAndExtractComments();
+ root.prune();
+ root.constrain(new Context());
+ if (doc != null) {
+ root.document(doc);
+ doc.close();
+ }
+ if (jdi != null) {
+ root.genJava(jdi, 0);
+ jdi.close();
+ }
+ if (include != null) {
+ root.genCInclude(include);
+ include.close();
+ }
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/MethodTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/MethodTypeNode.java
new file mode 100644
index 0000000..933c5f7
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/MethodTypeNode.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class MethodTypeNode extends AbstractSimpleTypeNode {
+
+ String docType() {
+ return "methodID";
+ }
+
+ String javaType() {
+ return "long";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel);
+ indent(writer, depth);
+ writer.println("ps.writeMethodRef(" + writeLabel + ");");
+ }
+
+ String javaRead() {
+ return "ps.readMethodRef()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/NameNode.java b/jdk/make/tools/src/build/tools/jdwpgen/NameNode.java
new file mode 100644
index 0000000..7f7a4d9
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/NameNode.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class NameNode extends AbstractSimpleNode {
+
+ String name;
+
+ NameNode(String name) {
+ this.name = name;
+ }
+
+ String text() {
+ return name;
+ }
+
+ String value() {
+ error("Valueless Name asked for value");
+ return null;
+ }
+
+ public String toString() {
+ return name;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/NameValueNode.java b/jdk/make/tools/src/build/tools/jdwpgen/NameValueNode.java
new file mode 100644
index 0000000..7911fb7
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/NameValueNode.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class NameValueNode extends NameNode {
+
+ String val;
+
+ NameValueNode(String name, String val) {
+ super(name);
+ this.val = val;
+ }
+
+ NameValueNode(String name, int ival) {
+ super(name);
+ this.val = Integer.toString(ival);
+ }
+
+ String value() {
+ return val;
+ }
+
+ public String toString() {
+ return name + "=" + val;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/Node.java b/jdk/make/tools/src/build/tools/jdwpgen/Node.java
new file mode 100644
index 0000000..2f79688
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/Node.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+
+import java.util.*;
+import java.io.*;
+
+abstract class Node {
+
+ String kind;
+ List<Node> components;
+ int lineno;
+ List<String> commentList = new ArrayList<String>();
+ Node parent = null;
+ Context context;
+
+ static final int maxStructIndent = 5;
+ static int structIndent = 0; // horrible hack
+
+ abstract void document(PrintWriter writer);
+
+ void set(String kind, List<Node> components, int lineno) {
+ this.kind = kind;
+ this.components = components;
+ this.lineno = lineno;
+ }
+
+ void parentAndExtractComments() {
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ Node node = (Node)it.next();
+ if (node instanceof CommentNode) {
+ it.remove();
+ commentList.add(((CommentNode)node).text());
+ } else {
+ node.parent = this;
+ node.parentAndExtractComments();
+ }
+ }
+ }
+
+ void prune() {
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ Node node = (Node)it.next();
+ node.prune();
+ }
+ }
+
+ void constrain(Context ctx) {
+ context = ctx;
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ Node node = (Node)it.next();
+ constrainComponent(ctx, node);
+ }
+ }
+
+ void constrainComponent(Context ctx, Node node) {
+ node.constrain(ctx);
+ }
+
+ void indent(PrintWriter writer, int depth) {
+ for (int i = depth; i > 0; --i) {
+ writer.print(" ");
+ }
+ }
+
+ void documentIndex(PrintWriter writer) {
+ }
+
+ void docRowStart(PrintWriter writer) {
+ writer.println("<tr>");
+ if (structIndent > 0) {
+ writer.println("<td colspan=" + structIndent + ">");
+ }
+ }
+
+ String comment() {
+ StringBuffer comment = new StringBuffer();
+ for (String st : commentList) {
+ comment.append(st);
+ }
+ return comment.toString();
+ }
+
+ void genJavaComment(PrintWriter writer, int depth) {
+ if (commentList.size() > 0) {
+ indent(writer, depth);
+ writer.println("/**");
+ for (Iterator it = commentList.iterator(); it.hasNext();) {
+ indent(writer, depth);
+ writer.println(" * " + (String)it.next());
+ }
+ indent(writer, depth);
+ writer.println(" */");
+ }
+ }
+
+ String javaType() {
+ return "-- WRONG ---";
+ }
+
+ void genJava(PrintWriter writer, int depth) {
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ Node node = (Node)it.next();
+ node.genJava(writer, depth);
+ }
+ }
+
+ void genCInclude(PrintWriter writer) {
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ Node node = (Node)it.next();
+ node.genCInclude(writer);
+ }
+ }
+
+ String debugValue(String label) {
+ return label;
+ }
+
+ void genJavaDebugWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel, debugValue(writeLabel));
+ }
+
+ void genJavaDebugWrite(PrintWriter writer, int depth,
+ String writeLabel, String displayValue) {
+ if (!Main.genDebug) {
+ return;
+ }
+ indent(writer, depth);
+ writer.println(
+ "if ((ps.vm.traceFlags & VirtualMachineImpl.TRACE_SENDS) != 0) {");
+ indent(writer, depth+1);
+ writer.print("ps.vm.printTrace(\"Sending: ");
+ indent(writer, depth); // this is inside the quotes
+ writer.print(writeLabel + "(" + javaType() + "): \" + ");
+ writer.println(displayValue + ");");
+ indent(writer, depth);
+ writer.println("}");
+ }
+
+ public void genJavaRead(PrintWriter writer, int depth,
+ String readLabel) {
+ error("Internal - Should not call Node.genJavaRead()");
+ }
+
+ void genJavaDebugRead(PrintWriter writer, int depth,
+ String readLabel, String displayValue) {
+ if (!Main.genDebug) {
+ return;
+ }
+ indent(writer, depth);
+ writer.println(
+ "if (vm.traceReceives) {");
+ indent(writer, depth+1);
+ writer.print("vm.printReceiveTrace(" + depth + ", \"");
+ writer.print(readLabel + "(" + javaType() + "): \" + ");
+ writer.println(displayValue + ");");
+ indent(writer, depth);
+ writer.println("}");
+ }
+
+ void genJavaPreDef(PrintWriter writer, int depth) {
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ Node node = (Node)it.next();
+ node.genJavaPreDef(writer, depth);
+ }
+ }
+
+ void error(String errmsg) {
+ System.err.println();
+ System.err.println(Main.specSource + ":" + lineno + ": " +
+ kind + " - " + errmsg);
+ System.err.println();
+ System.exit(1);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ObjectTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ObjectTypeNode.java
new file mode 100644
index 0000000..3333f42
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ObjectTypeNode.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class ObjectTypeNode extends AbstractSimpleTypeNode {
+
+ String docType() {
+ return "objectID";
+ }
+
+ String javaType() {
+ return "ObjectReferenceImpl";
+ }
+
+ String debugValue(String label) {
+ return "(" + label + "==null?\"NULL\":\"ref=\"+" + label + ".ref())";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel, debugValue(writeLabel));
+ indent(writer, depth);
+ writer.println("ps.writeObjectRef(" + writeLabel + ".ref());");
+ }
+
+ String javaRead() {
+ return "ps.readObjectReference()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/OutNode.java b/jdk/make/tools/src/build/tools/jdwpgen/OutNode.java
new file mode 100644
index 0000000..dc277b1
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/OutNode.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class OutNode extends AbstractTypeListNode {
+
+ String cmdName;
+
+ void set(String kind, List<Node> components, int lineno) {
+ super.set(kind, components, lineno);
+ components.add(0, new NameNode("Out"));
+ }
+
+ void constrain(Context ctx) {
+ super.constrain(ctx.commandWritingSubcontext());
+ CommandNode cmd = (CommandNode)parent;
+ cmdName = cmd.name;
+ }
+
+ void genProcessMethod(PrintWriter writer, int depth) {
+ writer.println();
+ indent(writer, depth);
+ writer.print(
+ "static " + cmdName + " process(VirtualMachineImpl vm");
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ TypeNode tn = (TypeNode)it.next();
+ writer.println(", ");
+ indent(writer, depth+5);
+ writer.print(tn.javaParam());
+ }
+ writer.println(")");
+ indent(writer, depth+6);
+ writer.println("throws JDWPException {");
+ indent(writer, depth+1);
+ writer.print("PacketStream ps = enqueueCommand(vm");
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ TypeNode tn = (TypeNode)it.next();
+ writer.print(", ");
+ writer.print(tn.name());
+ }
+ writer.println(");");
+ indent(writer, depth+1);
+ writer.println("return waitForReply(vm, ps);");
+ indent(writer, depth);
+ writer.println("}");
+ }
+
+ void genEnqueueMethod(PrintWriter writer, int depth) {
+ writer.println();
+ indent(writer, depth);
+ writer.print(
+ "static PacketStream enqueueCommand(VirtualMachineImpl vm");
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ TypeNode tn = (TypeNode)it.next();
+ writer.println(", ");
+ indent(writer, depth+5);
+ writer.print(tn.javaParam());
+ }
+ writer.println(") {");
+ indent(writer, depth+1);
+ writer.println(
+ "PacketStream ps = new PacketStream(vm, COMMAND_SET, COMMAND);");
+ if (Main.genDebug) {
+ indent(writer, depth+1);
+ writer.println(
+ "if ((vm.traceFlags & vm.TRACE_SENDS) != 0) {");
+ indent(writer, depth+2);
+ writer.print(
+ "vm.printTrace(\"Sending Command(id=\" + ps.pkt.id + \") ");
+ writer.print(parent.context.whereJava);
+ writer.println(
+ "\"+(ps.pkt.flags!=0?\", FLAGS=\" + ps.pkt.flags:\"\"));");
+ indent(writer, depth+1);
+ writer.println("}");
+ }
+ genJavaWrites(writer, depth+1);
+ indent(writer, depth+1);
+ writer.println("ps.send();");
+ indent(writer, depth+1);
+ writer.println("return ps;");
+ indent(writer, depth);
+ writer.println("}");
+ }
+
+ void genWaitMethod(PrintWriter writer, int depth) {
+ writer.println();
+ indent(writer, depth);
+ writer.println(
+ "static " + cmdName + " waitForReply(VirtualMachineImpl vm, " +
+ "PacketStream ps)");
+ indent(writer, depth+6);
+ writer.println("throws JDWPException {");
+ indent(writer, depth+1);
+ writer.println("ps.waitForReply();");
+ indent(writer, depth+1);
+ writer.println("return new " + cmdName + "(vm, ps);");
+ indent(writer, depth);
+ writer.println("}");
+ }
+
+ void genJava(PrintWriter writer, int depth) {
+ genJavaPreDef(writer, depth);
+ super.genJava(writer, depth);
+ genProcessMethod(writer, depth);
+ genEnqueueMethod(writer, depth);
+ genWaitMethod(writer, depth);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/Parse.java b/jdk/make/tools/src/build/tools/jdwpgen/Parse.java
new file mode 100644
index 0000000..f5e3ebb
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/Parse.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class Parse {
+
+ final StreamTokenizer izer;
+ final Map<String, Node> kindMap = new HashMap<String, Node>();
+
+ Parse(Reader reader) {
+ izer = new StreamTokenizer(new BufferedReader(reader));
+ izer.resetSyntax();
+ izer.slashStarComments(true);
+ izer.slashSlashComments(true);
+ izer.wordChars((int)'a', (int)'z');
+ izer.wordChars((int)'A', (int)'Z');
+ izer.wordChars((int)'0', (int)'9');
+ izer.wordChars((int)'_', (int)'_');
+ izer.wordChars((int)'-', (int)'-');
+ izer.wordChars((int)'.', (int)'.');
+ izer.whitespaceChars(0, 32);
+ izer.quoteChar('"');
+ izer.quoteChar('\'');
+
+ kindMap.put("CommandSet", new CommandSetNode());
+ kindMap.put("Command", new CommandNode());
+ kindMap.put("Out", new OutNode());
+ kindMap.put("Reply", new ReplyNode());
+ kindMap.put("ErrorSet", new ErrorSetNode());
+ kindMap.put("Error", new ErrorNode());
+ kindMap.put("Event", new EventNode());
+ kindMap.put("Repeat", new RepeatNode());
+ kindMap.put("Group", new GroupNode());
+ kindMap.put("Select", new SelectNode());
+ kindMap.put("Alt", new AltNode());
+ kindMap.put("ConstantSet", new ConstantSetNode());
+ kindMap.put("Constant", new ConstantNode());
+ kindMap.put("int", new IntTypeNode());
+ kindMap.put("long", new LongTypeNode());
+ kindMap.put("boolean", new BooleanTypeNode());
+ kindMap.put("object", new ObjectTypeNode());
+ kindMap.put("threadObject", new ThreadObjectTypeNode());
+ kindMap.put("threadGroupObject", new ThreadGroupObjectTypeNode());
+ kindMap.put("arrayObject", new ArrayObjectTypeNode());
+ kindMap.put("stringObject", new StringObjectTypeNode());
+ kindMap.put("classLoaderObject", new ClassLoaderObjectTypeNode());
+ kindMap.put("classObject", new ClassObjectTypeNode());
+ kindMap.put("referenceType", new ReferenceTypeNode());
+ kindMap.put("referenceTypeID", new ReferenceIDTypeNode());
+ kindMap.put("classType", new ClassTypeNode());
+ kindMap.put("interfaceType", new InterfaceTypeNode());
+ kindMap.put("arrayType", new ArrayTypeNode());
+ kindMap.put("method", new MethodTypeNode());
+ kindMap.put("field", new FieldTypeNode());
+ kindMap.put("frame", new FrameTypeNode());
+ kindMap.put("string", new StringTypeNode());
+ kindMap.put("value", new ValueTypeNode());
+ kindMap.put("byte", new ByteTypeNode());
+ kindMap.put("location", new LocationTypeNode());
+ kindMap.put("tagged-object", new TaggedObjectTypeNode());
+ kindMap.put("referenceTypeID", new ReferenceIDTypeNode());
+ kindMap.put("typed-sequence", new ArrayRegionTypeNode());
+ kindMap.put("untagged-value", new UntaggedValueTypeNode());
+ }
+
+ RootNode items() throws IOException {
+ List<Node> list = new ArrayList<Node>();
+
+ while (izer.nextToken() != StreamTokenizer.TT_EOF) {
+ izer.pushBack();
+ list.add(item());
+ }
+ RootNode node = new RootNode();
+ node.set("Root", list, 1);
+ return node;
+ }
+
+ Node item() throws IOException {
+ switch (izer.nextToken()) {
+ case StreamTokenizer.TT_EOF:
+ error("Unexpect end-of-file");
+ return null;
+
+ case StreamTokenizer.TT_WORD: {
+ String name = izer.sval;
+ if (izer.nextToken() == '=') {
+ int ntok = izer.nextToken();
+ if (ntok == StreamTokenizer.TT_WORD) {
+ return new NameValueNode(name, izer.sval);
+ } else if (ntok == '\'') {
+ return new NameValueNode(name, izer.sval.charAt(0));
+ } else {
+ error("Expected value after: " + name + " =");
+ return null;
+ }
+ } else {
+ izer.pushBack();
+ return new NameNode(name);
+ }
+ }
+
+ case '"':
+ return new CommentNode(izer.sval);
+
+ case '(': {
+ if (izer.nextToken() == StreamTokenizer.TT_WORD) {
+ String kind = izer.sval;
+ List<Node> list = new ArrayList<Node>();
+
+ while (izer.nextToken() != ')') {
+ izer.pushBack();
+ list.add(item());
+ }
+ Node proto = kindMap.get(kind);
+ if (proto == null) {
+ error("Invalid kind: " + kind);
+ return null;
+ } else {
+ try {
+ Node node = (Node)proto.getClass().newInstance();
+ node.set(kind, list, izer.lineno());
+ return node;
+ } catch (Exception exc) {
+ error(exc.toString());
+ }
+ }
+ } else {
+ error("Expected kind identifier, got " + izer.ttype +
+ " : " + izer.sval);
+ return null;
+ }
+ }
+
+ default:
+ error("Unexpected character: '" + (char)izer.ttype + "'");
+ return null;
+ }
+ }
+
+ void error(String errmsg) {
+ System.err.println(Main.specSource + ":" + izer.lineno() +
+ ": " + errmsg);
+ System.exit(1);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ReferenceIDTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ReferenceIDTypeNode.java
new file mode 100644
index 0000000..e7159dc
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ReferenceIDTypeNode.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class ReferenceIDTypeNode extends ReferenceTypeNode {
+
+ String javaType() {
+ return "long";
+ }
+
+ String debugValue(String label) {
+ return "\"ref=\"+" + label;
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel);
+ indent(writer, depth);
+ writer.println("ps.writeClassRef(" + writeLabel + ");");
+ }
+
+ String javaRead() {
+ return "ps.readClassRef()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ReferenceTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ReferenceTypeNode.java
new file mode 100644
index 0000000..02109ed
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ReferenceTypeNode.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class ReferenceTypeNode extends AbstractSimpleTypeNode {
+
+ String docType() {
+ return "referenceTypeID";
+ }
+
+ String javaType() {
+ return "ReferenceTypeImpl";
+ }
+
+ String debugValue(String label) {
+ return "(" + label + "==null?\"NULL\":\"ref=\"+" + label + ".ref())";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel,
+ debugValue(writeLabel));
+ indent(writer, depth);
+ writer.println("ps.writeClassRef(" + writeLabel + ".ref());");
+ }
+
+ String javaRead() {
+ error("--- should not gen ---");
+ return null;
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/RepeatNode.java b/jdk/make/tools/src/build/tools/jdwpgen/RepeatNode.java
new file mode 100644
index 0000000..40d4e08
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/RepeatNode.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class RepeatNode extends AbstractTypeNode {
+
+ Node member;
+
+ void constrain(Context ctx) {
+ super.constrain(ctx);
+ if (components.size() != 1) {
+ error("Repeat must have exactly one member, use Group for more");
+ }
+ member = (Node)(components.get(0));
+ if (!(member instanceof TypeNode)) {
+ error("Repeat member must be type specifier");
+ }
+ }
+
+ void document(PrintWriter writer) {
+ docRowStart(writer);
+ writer.println("<td colspan=" +
+ (maxStructIndent - structIndent) + ">");
+ writer.println("int<td><i>" + name + "</i><td>" +
+ comment() + " ");
+ docRowStart(writer);
+ writer.println("<td colspan=" +
+ (maxStructIndent - structIndent + 2) + ">");
+ writer.println("Repeated <i>" + name + "</i> times:");
+ ++structIndent;
+ member.document(writer);
+ --structIndent;
+ }
+
+ String docType() {
+ return "-BOGUS-"; // should never call this
+ }
+
+ String javaType() {
+ return member.javaType() + "[]";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel, "\"\"");
+ indent(writer, depth);
+ writer.println("ps.writeInt(" + writeLabel + ".length);");
+ indent(writer, depth);
+ writer.println("for (int i = 0; i < " + writeLabel + ".length; i++) {;");
+ ((TypeNode)member).genJavaWrite(writer, depth+1, writeLabel + "[i]");
+ indent(writer, depth);
+ writer.println("}");
+ }
+
+ String javaRead() {
+ error("Internal - Should not call RepeatNode.javaRead()");
+ return "";
+ }
+
+ public void genJavaRead(PrintWriter writer, int depth,
+ String readLabel) {
+ genJavaDebugRead(writer, depth, readLabel, "\"\"");
+ String cntLbl = readLabel + "Count";
+ indent(writer, depth);
+ writer.println("int " + cntLbl + " = ps.readInt();");
+ indent(writer, depth);
+ writer.println(readLabel + " = new " + member.javaType() +
+ "[" + cntLbl + "];");
+ indent(writer, depth);
+ writer.println("for (int i = 0; i < " + cntLbl + "; i++) {;");
+ member.genJavaRead(writer, depth+1, readLabel + "[i]");
+ indent(writer, depth);
+ writer.println("}");
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ReplyNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ReplyNode.java
new file mode 100644
index 0000000..5182e4f
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ReplyNode.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class ReplyNode extends AbstractTypeListNode {
+
+ String cmdName;
+
+ void set(String kind, List<Node> components, int lineno) {
+ super.set(kind, components, lineno);
+ components.add(0, new NameNode(kind));
+ }
+
+ void constrain(Context ctx) {
+ super.constrain(ctx.replyReadingSubcontext());
+ CommandNode cmd = (CommandNode)parent;
+ cmdName = cmd.name;
+ }
+
+ void genJava(PrintWriter writer, int depth) {
+ genJavaPreDef(writer, depth);
+ super.genJava(writer, depth);
+ writer.println();
+ genJavaReadingClassBody(writer, depth, cmdName);
+ }
+
+ void genJavaReads(PrintWriter writer, int depth) {
+ if (Main.genDebug) {
+ indent(writer, depth);
+ writer.println(
+ "if (vm.traceReceives) {");
+ indent(writer, depth+1);
+ writer.print(
+ "vm.printTrace(\"Receiving Command(id=\" + ps.pkt.id + \") ");
+ writer.print(parent.context.whereJava);
+ writer.print("\"");
+ writer.print(
+ "+(ps.pkt.flags!=0?\", FLAGS=\" + ps.pkt.flags:\"\")");
+ writer.print(
+ "+(ps.pkt.errorCode!=0?\", ERROR CODE=\" + ps.pkt.errorCode:\"\")");
+ writer.println(");");
+ indent(writer, depth);
+ writer.println("}");
+ }
+ super.genJavaReads(writer, depth);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/RootNode.java b/jdk/make/tools/src/build/tools/jdwpgen/RootNode.java
new file mode 100644
index 0000000..3b1e161
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/RootNode.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class RootNode extends AbstractNamedNode {
+
+ void constrainComponent(Context ctx, Node node) {
+ if (node instanceof CommandSetNode ||
+ node instanceof ConstantSetNode) {
+ node.constrain(ctx);
+ } else {
+ error("Expected 'CommandSet' item, got: " + node);
+ }
+ }
+
+ void document(PrintWriter writer) {
+ writer.println("<html><head><title>" + comment() + "</title></head>");
+ writer.println("<body bgcolor=\"white\">");
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ ((Node)it.next()).documentIndex(writer);
+ }
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ ((Node)it.next()).document(writer);
+ }
+ writer.println("</body></html>");
+ }
+
+ void genJava(PrintWriter writer, int depth) {
+ writer.println("package com.sun.tools.jdi;");
+ writer.println();
+ writer.println("import com.sun.jdi.*;");
+ writer.println("import java.util.*;");
+ writer.println();
+
+ genJavaClass(writer, depth);
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/SelectNode.java b/jdk/make/tools/src/build/tools/jdwpgen/SelectNode.java
new file mode 100644
index 0000000..cfe0c97
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/SelectNode.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class SelectNode extends AbstractGroupNode implements TypeNode {
+
+ AbstractSimpleTypeNode typeNode;
+
+ void prune() {
+ super.prune();
+ Iterator it = components.iterator();
+
+ if (it.hasNext()) {
+ Node typeNode = (Node)it.next();
+
+ if (typeNode instanceof ByteTypeNode ||
+ typeNode instanceof IntTypeNode) {
+ this.typeNode = (AbstractSimpleTypeNode)typeNode;
+ it.remove();
+ } else {
+ error("Select must be based on 'int' or 'byte'");
+ }
+ } else {
+ error("empty");
+ }
+ }
+
+ void constrain(Context ctx) {
+ super.constrain(ctx);
+ if (components.size() < 2) {
+ error("Select must have at least two options");
+ }
+ }
+
+ void constrainComponent(Context ctx, Node node) {
+ node.constrain(ctx);
+ if (!(node instanceof AltNode)) {
+ error("Select must consist of selector followed by Alt items");
+ }
+ }
+
+ void document(PrintWriter writer) {
+ typeNode.document(writer);
+ super.document(writer);
+ }
+
+ String docType() {
+ // should never call this
+ error("Internal - called SelectNode.docType()");
+ return null;
+ }
+
+ String commonBaseClass() {
+ return name() + "Common";
+ }
+
+ private String commonVar() {
+ return " a" + commonBaseClass();
+ }
+
+ void genJavaClassSpecifics(PrintWriter writer, int depth) {
+ indent(writer, depth);
+ writer.println("abstract static class " + commonBaseClass() + " {");
+ if (context.isWritingCommand()) {
+ indent(writer, depth+1);
+ writer.println("abstract void write(PacketStream ps);");
+ } else {
+ indent(writer, depth+1);
+ writer.println("abstract " + typeNode.javaParam() + "();");
+ }
+ indent(writer, depth);
+ writer.println("}");
+ typeNode.genJavaDeclaration(writer, depth);
+ indent(writer, depth);
+ writer.println(commonBaseClass() + commonVar() + ";");
+ super.genJavaClassSpecifics(writer, depth);
+ }
+
+ void genJavaClassBodyComponents(PrintWriter writer, int depth) {
+ // don't naively include alt components
+ }
+
+ void genJavaWritingClassBody(PrintWriter writer, int depth,
+ String className) {
+ writer.println();
+ indent(writer, depth);
+ writer.print(className + "(" + typeNode.javaParam() + ", ");
+ writer.print(commonBaseClass() + commonVar());
+ writer.println(") {");
+ indent(writer, depth+1);
+ writer.println("this." + typeNode.name() + " = " + typeNode.name() + ";");
+ indent(writer, depth+1);
+ writer.println("this." + commonVar() + " =" + commonVar() + ";");
+ indent(writer, depth);
+ writer.println("}");
+ }
+
+ void genJavaWrites(PrintWriter writer, int depth) {
+ typeNode.genJavaWrite(writer, depth, typeNode.name());
+ indent(writer, depth);
+ writer.println(commonVar() + ".write(ps);");
+ }
+
+ void genJavaReads(PrintWriter writer, int depth) {
+ typeNode.genJavaRead(writer, depth, typeNode.name());
+ indent(writer, depth);
+ writer.println("switch (" + typeNode.name() + ") {");
+ for (Iterator it = components.iterator(); it.hasNext();) {
+ AltNode alt = (AltNode)it.next();
+ alt.genJavaReadsSelectCase(writer, depth+1, commonVar());
+ }
+ indent(writer, depth);
+ writer.println("}");
+ }
+
+ public void genJavaDeclaration(PrintWriter writer, int depth) {
+ typeNode.genJavaDeclaration(writer, depth);
+ super.genJavaDeclaration(writer, depth);
+ }
+
+ public String javaParam() {
+ return typeNode.javaParam() + ", " + name() + " a" + name();
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/StringObjectTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/StringObjectTypeNode.java
new file mode 100644
index 0000000..4e8380c
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/StringObjectTypeNode.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+
+class StringObjectTypeNode extends ObjectTypeNode {
+
+ String docType() {
+ return "stringID";
+ }
+
+ String javaType() {
+ return "StringReferenceImpl";
+ }
+
+ String javaRead() {
+ return "ps.readStringReference()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/StringTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/StringTypeNode.java
new file mode 100644
index 0000000..c605645
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/StringTypeNode.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class StringTypeNode extends AbstractSimpleTypeNode {
+
+ String docType() {
+ return "string";
+ }
+
+ String javaType() {
+ return "String";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel);
+ indent(writer, depth);
+ writer.println("ps.writeString(" + writeLabel + ");");
+ }
+
+ String javaRead() {
+ return "ps.readString()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/TaggedObjectTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/TaggedObjectTypeNode.java
new file mode 100644
index 0000000..a6b77d8
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/TaggedObjectTypeNode.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class TaggedObjectTypeNode extends ObjectTypeNode {
+
+ String docType() {
+ return "tagged-objectID";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ error("Why write a tagged-object?");
+ }
+
+ String javaRead() {
+ return "ps.readTaggedObjectReference()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ThreadGroupObjectTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ThreadGroupObjectTypeNode.java
new file mode 100644
index 0000000..b8884dd
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ThreadGroupObjectTypeNode.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+
+class ThreadGroupObjectTypeNode extends ObjectTypeNode {
+
+ String docType() {
+ return "threadGroupID";
+ }
+
+ String javaType() {
+ return "ThreadGroupReferenceImpl";
+ }
+
+ String javaRead() {
+ return "ps.readThreadGroupReference()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ThreadObjectTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ThreadObjectTypeNode.java
new file mode 100644
index 0000000..5d67338
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ThreadObjectTypeNode.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+
+class ThreadObjectTypeNode extends ObjectTypeNode {
+
+ String docType() {
+ return "threadID";
+ }
+
+ String javaType() {
+ return "ThreadReferenceImpl";
+ }
+
+ String javaRead() {
+ return "ps.readThreadReference()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/TypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/TypeNode.java
new file mode 100644
index 0000000..8c25b73
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/TypeNode.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+
+import java.util.*;
+import java.io.*;
+
+interface TypeNode {
+
+ String name();
+
+ void genJavaWrite(PrintWriter writer, int depth, String writeLabel);
+
+ void genJavaRead(PrintWriter writer, int depth, String readLabel);
+
+ void genJavaDeclaration(PrintWriter writer, int depth);
+
+ String javaParam();
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/UntaggedValueTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/UntaggedValueTypeNode.java
new file mode 100644
index 0000000..55778af
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/UntaggedValueTypeNode.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class UntaggedValueTypeNode extends ValueTypeNode {
+
+ String docType() {
+ return "untagged-value";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel);
+ indent(writer, depth);
+ writer.println("ps.writeUntaggedValue(" + writeLabel + ");");
+ }
+
+ String javaRead() {
+ return "ps.readUntaggedValue()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/jdwpgen/ValueTypeNode.java b/jdk/make/tools/src/build/tools/jdwpgen/ValueTypeNode.java
new file mode 100644
index 0000000..2ecb92c
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ValueTypeNode.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.jdwpgen;
+
+import java.util.*;
+import java.io.*;
+
+class ValueTypeNode extends AbstractSimpleTypeNode {
+
+ String docType() {
+ return "value";
+ }
+
+ String javaType() {
+ return "ValueImpl";
+ }
+
+ public void genJavaWrite(PrintWriter writer, int depth,
+ String writeLabel) {
+ genJavaDebugWrite(writer, depth, writeLabel);
+ indent(writer, depth);
+ writer.println("ps.writeValue(" + writeLabel + ");");
+ }
+
+ String javaRead() {
+ return "ps.readValue()";
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/makeclasslist/MakeClasslist.java b/jdk/make/tools/src/build/tools/makeclasslist/MakeClasslist.java
new file mode 100644
index 0000000..daeb77c
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/makeclasslist/MakeClasslist.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.makeclasslist;
+
+import java.io.*;
+import java.util.*;
+import java.util.jar.*;
+
+/** Reads a set of files containing the output of java -verbose:class
+ runs. Finds all classes that were loaded from the bootstrap class
+ path by comparing the prefix of the load path to the current JRE's
+ java.home system property. Prints the names of these classes to
+ stdout.
+*/
+
+public class MakeClasslist {
+ public static void main(String[] args) throws IOException {
+ List/*<String>*/ classes = new ArrayList();
+ String origJavaHome = System.getProperty("java.home");
+ String javaHome = origJavaHome.toLowerCase();
+ if (javaHome.endsWith("jre")) {
+ origJavaHome = origJavaHome.substring(0, origJavaHome.length() - 4);
+ javaHome = javaHome.substring(0, javaHome.length() - 4);
+ }
+ for (int i = 0; i < args.length; i++) {
+ try {
+ File file = new File(args[i]);
+ BufferedReader reader = new BufferedReader(new FileReader(file));
+ String line = null;
+ while ((line = reader.readLine()) != null) {
+ StringTokenizer tok = new StringTokenizer(line, "[ \t\n\r\f");
+ if (tok.hasMoreTokens()) {
+ String t = tok.nextToken();
+ // Understand only "Loading" from -XX:+TraceClassLoadingPreorder.
+ // This ignores old "Loaded" from -verbose:class to force correct
+ // classlist generation on Mustang.
+ if (t.equals("Loading")) {
+ t = tok.nextToken();
+ t = t.replace('.', '/');
+
+ // Check to make sure it came from the boot class path
+ if (tok.hasMoreTokens()) {
+ String tmp = tok.nextToken();
+ if (tmp.equals("from")) {
+ if (tok.hasMoreTokens()) {
+ tmp = tok.nextToken().toLowerCase();
+ // System.err.println("Loaded " + t + " from " + tmp);
+ if (tmp.startsWith(javaHome)) {
+ // OK, remember this class for later
+ classes.add(t);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ } catch (IOException e) {
+ System.err.println("Error reading file " + args[i]);
+ throw(e);
+ }
+ }
+
+ Set/*<String>*/ seenClasses = new HashSet();
+
+ for (Iterator iter = classes.iterator(); iter.hasNext(); ) {
+ String str = (String) iter.next();
+ if (seenClasses.add(str)) {
+ System.out.println(str);
+ }
+ }
+
+ // Try to complete certain packages
+ // Note: not using this new code yet; need to consider whether the
+ // footprint increase is worth any startup gains
+ // Note also that the packages considered below for completion are
+ // (obviously) platform-specific
+ // JarFile rtJar = new JarFile(origJavaHome + File.separator +
+ // "jre" + File.separator +
+ // "lib" + File.separator +
+ // "rt.jar");
+ // completePackage(seenClasses, rtJar, "java/awt");
+ // completePackage(seenClasses, rtJar, "sun/awt");
+ // completePackage(seenClasses, rtJar, "sun/awt/X11");
+ // completePackage(seenClasses, rtJar, "java/awt/im/spi");
+ // completePackage(seenClasses, rtJar, "java/lang");
+ }
+
+ private static void completePackage(Set seenClasses,
+ JarFile jar,
+ String packageName) {
+ int len = packageName.length();
+ Enumeration entries = jar.entries();
+ while (entries.hasMoreElements()) {
+ JarEntry entry = (JarEntry) entries.nextElement();
+ String name = entry.getName();
+ if (name.startsWith(packageName) &&
+ name.endsWith(".class") &&
+ name.lastIndexOf('/') == len) {
+ // Trim ".class" from end
+ name = name.substring(0, name.length() - 6);
+ if (seenClasses.add(name)) {
+ System.out.println(name);
+ }
+ }
+ }
+ }
+}
diff --git a/jdk/make/tools/src/build/tools/stripproperties/StripProperties.java b/jdk/make/tools/src/build/tools/stripproperties/StripProperties.java
new file mode 100644
index 0000000..765f81b
--- /dev/null
+++ b/jdk/make/tools/src/build/tools/stripproperties/StripProperties.java
@@ -0,0 +1,280 @@
+/*
+ * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.stripproperties;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedWriter;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * Reads a properties file from standard input and writes an equivalent
+ * properties file without comments to standard output.
+ */
+public class StripProperties {
+
+ private static void error(String msg, Exception e) {
+ System.err.println("ERROR: stripproperties: " + msg);
+ if ( e != null ) {
+ System.err.println("EXCEPTION: " + e.toString());
+ e.printStackTrace();
+ }
+ }
+
+ private static List<String> parseOptions(String args[]) {
+ List<String> files = new ArrayList<String>();
+ for ( int i = 0; i < args.length ; i++ ) {
+ if ( "-optionsfile".equals(args[i]) && i+1 < args.length ) {
+ String filename = args[++i];
+ FileInputStream finput = null;
+ byte contents[] = null;
+ try {
+ finput = new FileInputStream(filename);
+ int byteCount = finput.available();
+ if ( byteCount <= 0 ) {
+ error("The -optionsfile file is empty", null);
+ files = null;
+ } else {
+ contents = new byte[byteCount];
+ int bytesRead = finput.read(contents);
+ if ( byteCount != bytesRead ) {
+ error("Cannot read all of -optionsfile file", null);
+ files = null;
+ }
+ }
+ } catch ( IOException e ) {
+ error("cannot open " + filename, e);
+ files = null;
+ }
+ if ( finput != null ) {
+ try {
+ finput.close();
+ } catch ( IOException e ) {
+ files = null;
+ error("cannot close " + filename, e);
+ }
+ }
+ if ( files != null && contents != null ) {
+ String tokens[] = (new String(contents)).split("\\s+");
+ if ( tokens.length > 0 ) {
+ List<String> ofiles = parseOptions(tokens);
+ if ( ofiles != null ) {
+ files.addAll(ofiles);
+ } else {
+ error("No files found in file", null);
+ files = null;
+ }
+ }
+ }
+ if ( files == null ) {
+ break;
+ }
+ } else {
+ files.add(args[i]);
+ }
+ }
+ return files;
+ }
+
+ private static boolean stripFiles(List<String> files) {
+ boolean ok = true;
+ for ( String file : files ) {
+
+ Properties prop = new Properties();
+ InputStream in = null;
+ try {
+ in = new BufferedInputStream(new FileInputStream(file));
+ prop.load(in);
+ } catch ( FileNotFoundException e ) {
+ error("Cannot access file " + file, e);
+ ok = false;
+ } catch ( IOException e ) {
+ error("IO exception processing file " + file, e);
+ ok = false;
+ }
+ if ( in != null ) {
+ try {
+ in.close();
+ } catch ( IOException e ) {
+ error("IO exception closing file " + file, e);
+ ok = false;
+ }
+ }
+ if ( !ok ) {
+ break;
+ }
+
+ OutputStream out = null;
+ try {
+ out = new FileOutputStream(file);
+ storeProperties(prop, out);
+ out.flush();
+ } catch ( IOException e ) {
+ error("IO exception processing file " + file, e);
+ ok = false;
+ }
+ if ( out != null ) {
+ try {
+ out.close();
+ } catch ( IOException e ) {
+ error("IO exception closing file " + file, e);
+ ok = false;
+ }
+ }
+ if ( !ok ) {
+ break;
+ }
+
+ }
+ return ok;
+ }
+
+ /**
+ * Strip the properties filenames supplied, replacing their contents.
+ * @param args Names of properties files to process and replace contents
+ */
+ public static void main(String args[]) {
+ List<String> files = parseOptions(args);
+ if ( files == null || !stripFiles(files) ) {
+ System.exit(1);
+ }
+ }
+
+ // --- code below here is adapted from java.util.Properties ---
+
+ private static final String specialSaveChars = "=: \t\r\n\f#!";
+
+ /*
+ * Converts unicodes to encoded \uxxxx
+ * and writes out any of the characters in specialSaveChars
+ * with a preceding slash
+ */
+ private static String saveConvert(String theString, boolean escapeSpace) {
+ int len = theString.length();
+ StringBuffer outBuffer = new StringBuffer(len*2);
+
+ for(int x=0; x<len; x++) {
+ char aChar = theString.charAt(x);
+ switch(aChar) {
+ case ' ':
+ if (x == 0 || escapeSpace) {
+ outBuffer.append('\\');
+ }
+ outBuffer.append(' ');
+ break;
+ case '\\':
+ outBuffer.append('\\');
+ outBuffer.append('\\');
+ break;
+ case '\t':
+ outBuffer.append('\\');
+ outBuffer.append('t');
+ break;
+ case '\n':
+ outBuffer.append('\\');
+ outBuffer.append('n');
+ break;
+ case '\r':
+ outBuffer.append('\\');
+ outBuffer.append('r');
+ break;
+ case '\f':
+ outBuffer.append('\\');
+ outBuffer.append('f');
+ break;
+ default:
+ if ((aChar < 0x0020) || (aChar == 0x007e) || (aChar > 0x00ff)) {
+ outBuffer.append('\\');
+ outBuffer.append('u');
+ outBuffer.append(toHex((aChar >> 12) & 0xF));
+ outBuffer.append(toHex((aChar >> 8) & 0xF));
+ outBuffer.append(toHex((aChar >> 4) & 0xF));
+ outBuffer.append(toHex( aChar & 0xF));
+ } else {
+ if (specialSaveChars.indexOf(aChar) != -1) {
+ outBuffer.append('\\');
+ }
+ outBuffer.append(aChar);
+ }
+ }
+ }
+ return outBuffer.toString();
+ }
+
+ /**
+ * Writes the content of <code>properties</code> to <code>out</code>.
+ * The format is that of Properties.store with the following modifications:
+ * <ul>
+ * <li>No header or date is written
+ * <li>Latin-1 characters are written as single bytes, not escape sequences
+ * <li>Line breaks are indicated by a single \n independent of platform
+ * <ul>
+ */
+ private static void storeProperties(Properties properties, OutputStream out)
+ throws IOException {
+ BufferedWriter awriter;
+ awriter = new BufferedWriter(new OutputStreamWriter(out, "8859_1"));
+ for (Enumeration e = properties.keys(); e.hasMoreElements();) {
+ String key = (String)e.nextElement();
+ String val = (String)properties.get(key);
+ key = saveConvert(key, true);
+
+ /* No need to escape embedded and trailing spaces for value, hence
+ * pass false to flag.
+ */
+ val = saveConvert(val, false);
+ writeln(awriter, key + "=" + val);
+ }
+ awriter.flush();
+ }
+
+ private static void writeln(BufferedWriter bw, String s) throws IOException {
+ bw.write(s);
+ bw.write("\n");
+ }
+
+ /**
+ * Convert a nibble to a hex character
+ * @param nibble the nibble to convert.
+ */
+ private static char toHex(int nibble) {
+ return hexDigit[(nibble & 0xF)];
+ }
+
+ /** A table of hex digits */
+ private static final char[] hexDigit = {
+ '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
+ };
+}
diff --git a/jdk/make/tools/strip_properties/Makefile b/jdk/make/tools/strip_properties/Makefile
new file mode 100644
index 0000000..f4fd96e
--- /dev/null
+++ b/jdk/make/tools/strip_properties/Makefile
@@ -0,0 +1,43 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the stripproperties tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.stripproperties
+PRODUCT = tools
+PROGRAM = stripproperties
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/StripProperties.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
diff --git a/jdk/make/tools/swing-beans/DocBeanInfo.java b/jdk/make/tools/swing-beans/DocBeanInfo.java
new file mode 100644
index 0000000..cbf94ae
--- /dev/null
+++ b/jdk/make/tools/swing-beans/DocBeanInfo.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright 1998-2000 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+import java.util.HashMap;
+
+/**
+ * Class that holds information for populating a FeatureDescriptor. For the class,
+ * This information represents the BeanDescriptor, for a property, it represents
+ * a PropertyDescriptor.
+ */
+public class DocBeanInfo {
+
+ // Values of the BeanFlags
+ public static final int BOUND = 1;
+ public static final int EXPERT = 2;
+ public static final int CONSTRAINED = 4;
+ public static final int HIDDEN = 8;
+ public static final int PREFERRED = 16 ;
+
+ public String name;
+ public int beanflags;
+ public String desc;
+ public String displayname;
+ public String propertyeditorclass;
+ public String customizerclass;
+
+ public HashMap attribs;
+ public HashMap enums;
+
+ public DocBeanInfo(){}
+
+ public DocBeanInfo(String p, int flags, String d,
+ String displayname, String pec, String cc,
+ HashMap attribs, HashMap enums) {
+ this.name = p;
+ this.beanflags = flags;
+ this.desc = d;
+ this.displayname = displayname;
+ this.propertyeditorclass = pec;
+ this.customizerclass = cc;
+
+ this.attribs = attribs;
+ this.enums = enums;
+ }
+
+ public String toString() {
+ StringBuffer buffer = new StringBuffer("*****");
+ buffer.append("\nProperty: " + name);
+ buffer.append("\tDescription: " + desc);
+ buffer.append("\nDisplayname: " + displayname);
+ buffer.append("\nPropertyEditorClass: " + propertyeditorclass);
+ buffer.append("\nCustomizerClass: " + customizerclass);
+
+ if ((beanflags & BOUND) != 0)
+ buffer.append("\nBound: true");
+
+ if ((beanflags & EXPERT) != 0)
+ buffer.append("\nExpert: true");
+
+ if ((beanflags & CONSTRAINED) != 0)
+ buffer.append("\nConstrained: true");
+
+ if ((beanflags & HIDDEN) !=0)
+ buffer.append("\nHidden: true");
+
+ if ((beanflags & PREFERRED) !=0)
+
+ if (attribs != null)
+ buffer.append(attribs.toString());
+
+ if (enums != null)
+ buffer.append(enums.toString());
+
+ return buffer.toString();
+ }
+
+}
diff --git a/jdk/make/tools/swing-beans/GenDocletBeanInfo.java b/jdk/make/tools/swing-beans/GenDocletBeanInfo.java
new file mode 100644
index 0000000..d2e7302
--- /dev/null
+++ b/jdk/make/tools/swing-beans/GenDocletBeanInfo.java
@@ -0,0 +1,445 @@
+/*
+ * Copyright 1998-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+import com.sun.javadoc.ClassDoc;
+import com.sun.javadoc.MethodDoc;
+import com.sun.javadoc.RootDoc;
+import com.sun.javadoc.Tag;
+
+import java.beans.Introspector;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.HashMap;
+import java.util.StringTokenizer;
+
+/**
+ * Properties supported and tag syntax:
+ *
+ * @beaninfo
+ * bound: flag
+ * constrained: flag
+ * expert: flag
+ * hidden: flag
+ * preferred: flag
+ * description: string
+ * displayname: string
+ * propertyeditorclass: string (with dots: foo.bar.MyPropertyEditor
+ * customizerclass: string (w/dots: foo.bar.MyCustomizer)
+ * attribute: key1 value1
+ * attribute: key2 value2
+ *
+ * TODO: getValue and genDocletInfo needs some cleaning.
+ *
+ * @author Hans Muller
+ * @author Rich Schiavi
+ * @author Mark Davidson
+ */
+public class GenDocletBeanInfo {
+
+ static String[] ATTRIBUTE_NAMES = { "bound",
+ "constrained",
+ "expert",
+ "hidden",
+ "preferred",
+ "displayname",
+ "propertyeditorclass",
+ "customizerclass",
+ "displayname",
+ "description",
+ "enum",
+ "attribute" };
+ private static boolean DEBUG = false;
+
+ private static String fileDir = "";
+ private static String templateDir = "";
+
+ public static final String TRUE = "true";
+ public static final String FALSE = "false";
+
+ /**
+ * Method called from the javadoc environment to determint the options length.
+ * Doclet options:
+ * -t template location
+ * -d outputdir
+ * -x true Enable debug output.
+ */
+ public static int optionLength(String option) {
+ // remind: this needs to be cleaned up
+ if (option.equals("-t"))
+ return 2;
+ if (option.equals("-d"))
+ return 2;
+ if (option.equals("-x"))
+ return 2;
+ return 0;
+ }
+
+ /** @beaninfo
+ * bound:true
+ * constrained:false
+ * expert:true
+ * hidden:true
+ * preferred:false
+ * description: the description of this method can
+ * do all sorts of funky things. if it \n
+ * is indented like this, we have to remove
+ * all char spaces greater than 2 and also any hard-coded \n
+ * newline characters and all newlines
+ * displayname: theString
+ * propertyeditorclass: foo.bar.MyPropertyEditorClass
+ * customizerclass: foo.bar.MyCustomizerClass
+ * attribute:key1 value1
+ * attribute: key2 value2
+ *
+ */
+ public static boolean start(RootDoc doc) {
+ readOptions(doc.options());
+
+ if (templateDir.length() == 0) {
+ System.err.println("-t option not specified");
+ return false;
+ }
+ if (fileDir.length() == 0) {
+ System.err.println("-d option not specified");
+ return false;
+ }
+
+ GenSwingBeanInfo generator = new GenSwingBeanInfo(fileDir, templateDir, DEBUG);
+ Hashtable dochash = new Hashtable();
+ DocBeanInfo dbi;
+
+ /* "javadoc Foo.java Bar.java" will return:
+ * "Foo Foo.I1 Foo.I2 Bar Bar.I1 Bar.I2"
+ * i.e., with all the innerclasses of classes specified in the command
+ * line. We don't want to generate BeanInfo for any of these inner
+ * classes, so we ignore these by remembering what the last outer
+ * class was. A hack, I admit, but makes the build faster.
+ */
+ String previousClass = null;
+
+ ClassDoc[] classes = doc.classes();
+
+ for (int cnt = 0; cnt < classes.length; cnt++) {
+ String className = classes[cnt].qualifiedName();
+ if (previousClass != null &&
+ className.startsWith(previousClass) &&
+ className.charAt(previousClass.length()) == '.') {
+ continue;
+ }
+ previousClass = className;
+
+ // XXX - debug
+ System.out.println("\n>>> Generating beaninfo for " + className + "...");
+
+ // Examine the javadoc tags and look for the the @beaninfo tag
+ // This first block looks at the javadoc for the class
+ Tag[] tags = classes[cnt].tags();
+ for (int i = 0; i < tags.length; i++) {
+ if (tags[i].kind().equalsIgnoreCase("@beaninfo")) {
+ if (DEBUG)
+ System.out.println("GenDocletBeanInfo: found @beaninfo tagged Class: " + tags[i].text());
+ dbi = genDocletInfo(tags[i].text(), classes[cnt].name());
+ dochash.put(dbi.name, dbi);
+ break;
+ }
+ }
+
+ // This block looks at the javadoc for the class methods.
+ int startPos = -1;
+ MethodDoc[] methods = classes[cnt].methods();
+ for (int j = 0; j < methods.length; j++) {
+ // actually don't "introspect" - look for all
+ // methods with a @beaninfo tag
+ tags = methods[j].tags();
+ for (int x = 0; x < tags.length; x++){
+ if (tags[x].kind().equalsIgnoreCase("@beaninfo")){
+ if ((methods[j].name().startsWith("get")) ||
+ (methods[j].name().startsWith("set")))
+ startPos = 3;
+ else if (methods[j].name().startsWith("is"))
+ startPos = 2;
+ else
+ startPos = 0;
+ String propDesc =
+ Introspector.decapitalize((methods[j].name()).substring(startPos));
+ if (DEBUG)
+ System.out.println("GenDocletBeanInfo: found @beaninfo tagged Method: " + tags[x].text());
+ dbi = genDocletInfo(tags[x].text(), propDesc);
+ dochash.put(dbi.name, dbi);
+ break;
+ }
+ }
+ }
+ if (DEBUG) {
+ // dump our classes doc beaninfo
+ System.out.println(">>>>DocletBeanInfo for class: " + classes[cnt].name());
+ Enumeration e = dochash.elements();
+ while (e.hasMoreElements()) {
+ DocBeanInfo db = (DocBeanInfo)e.nextElement();
+ System.out.println(db.toString());
+ }
+ }
+
+ // Use the generator to create the beaninfo code for the class.
+ generator.genBeanInfo(classes[cnt].containingPackage().name(),
+ classes[cnt].name(), dochash);
+ // reset the values!
+ dochash.clear();
+ } // end for loop
+ return true;
+ }
+
+ /**
+ * Reads the command line options.
+ * Side Effect, sets class variables templateDir, fileDir and DEBUG
+ */
+ private static void readOptions(String[][] options) {
+ // Parse the command line args
+ for (int i = 0; i < options.length; i++){
+ if (options[i][0].equals("-t")) {
+ templateDir = options[i][1];
+ } else if (options[i][0].equals("-d")) {
+ fileDir = options[i][1];
+ } else if (options[i][0].equals("-x")){
+ if (options[i][1].equals("true"))
+ DEBUG=true;
+ else
+ DEBUG=false;
+ }
+ }
+ }
+
+ /**
+ * Create a "BeanInfo" data structure from the tag. This is a data structure
+ * which contains all beaninfo data for a method or a class.
+ *
+ * @param text All the text after the @beaninfo tag.
+ * @param name Name of the property i.e., mnemonic for setMnemonic
+ */
+ private static DocBeanInfo genDocletInfo(String text, String name) {
+ int beanflags = 0;
+ String desc = "null";
+ String displayname = "null";
+ String propertyeditorclass = "null";
+ String customizerclass = "null";
+ String value = "null";
+ HashMap attribs = null;
+ HashMap enums = null;
+
+ int index;
+
+ for (int j = 0; j < ATTRIBUTE_NAMES.length; j++){
+ index = 0;
+ if ((index = text.indexOf(ATTRIBUTE_NAMES[j])) != -1){
+ value = getValue((text).substring(index),ATTRIBUTE_NAMES[j]);
+
+ if (ATTRIBUTE_NAMES[j].equalsIgnoreCase("attribute")) {
+ attribs = getAttributeMap(value, " ");
+ }
+ if (ATTRIBUTE_NAMES[j].equalsIgnoreCase("enum")) {
+ enums = getAttributeMap(value, " \n");
+ }
+ else if (ATTRIBUTE_NAMES[j].equals("displayname")){
+ displayname = value;
+ }
+ else if (ATTRIBUTE_NAMES[j].equalsIgnoreCase("propertyeditorclass")) {
+ propertyeditorclass = value;
+ }
+ else if (ATTRIBUTE_NAMES[j].equalsIgnoreCase("customizerclass")){
+ customizerclass = value;
+ }
+ else if ((ATTRIBUTE_NAMES[j].equalsIgnoreCase("bound"))
+ && (value.equalsIgnoreCase(TRUE)))
+ beanflags = beanflags | DocBeanInfo.BOUND;
+ else if ((ATTRIBUTE_NAMES[j].equalsIgnoreCase("expert"))
+ && (value.equalsIgnoreCase(TRUE)))
+ beanflags = beanflags | DocBeanInfo.EXPERT;
+ else if ((ATTRIBUTE_NAMES[j].equalsIgnoreCase("constrained"))
+ && (value.equalsIgnoreCase(TRUE)))
+ beanflags = beanflags | DocBeanInfo.CONSTRAINED;
+ else if ((ATTRIBUTE_NAMES[j].equalsIgnoreCase("hidden"))
+ && (value.equalsIgnoreCase(TRUE)))
+ beanflags = beanflags | DocBeanInfo.HIDDEN;
+ else if ((ATTRIBUTE_NAMES[j].equalsIgnoreCase("preferred"))
+ && (value.equalsIgnoreCase(TRUE)))
+ beanflags = beanflags | DocBeanInfo.PREFERRED;
+ else if (ATTRIBUTE_NAMES[j].equalsIgnoreCase("description")){
+ desc = value;
+ }
+ }
+ }
+ /** here we create our doclet-beaninfo data structure, which we read in
+ * later if it has anything worthwhile
+ */
+
+ // Construct a new Descriptor class
+ return new DocBeanInfo(name, beanflags, desc,displayname,
+ propertyeditorclass, customizerclass,
+ attribs, enums);
+ }
+
+ /**
+ * Parses the substring and returns the cleaned up value for the attribute.
+ * @param substring Full String of the attrib tag.
+ * i.e., "attribute: visualUpdate true" will return "visualUpdate true";
+ */
+ private static String getValue(String substring, String prop) {
+ StringTokenizer t;
+ String value = "null";
+
+ try {
+ /** if the ATTRIBUTE_NAMES is NOT the description, then we
+ * parse until newline
+ * if it is the description we read until the next token
+ * and then look for a match in the last MAXMATCH index
+ * and truncate the description
+ * if it is the attribute we wead until no more
+ */
+ if (prop.equalsIgnoreCase("attribute")){
+ StringBuffer tmp = new StringBuffer();
+ try {
+ t = new StringTokenizer(substring, " :\n");
+ t.nextToken().trim();//the prop
+ // we want to return : key1 value1 key2 value2
+ while (t.hasMoreTokens()){
+ tmp.append(t.nextToken().trim()).append(" ");
+ tmp.append(t.nextToken().trim()).append(" ");
+ String test = t.nextToken().trim();
+ if (!(test.equalsIgnoreCase("attribute")))
+ break;
+ }
+ } catch (Exception e){
+ }
+ value = tmp.toString();
+ }
+ else if (prop.equalsIgnoreCase("enum")){
+ t = new StringTokenizer(substring, ":");
+ t.nextToken().trim(); // the prop we already know
+ StringBuffer tmp = new StringBuffer(t.nextToken().trim());
+ for (int i = 0; i < ATTRIBUTE_NAMES.length; i++){
+ if (tmp.toString().endsWith(ATTRIBUTE_NAMES[i])){
+ int len = ATTRIBUTE_NAMES[i].length();
+ // trim off that
+ tmp.setLength(tmp.length() - len);
+ break;
+ }
+ }
+ value = tmp.toString();
+ }
+ else if (prop.equalsIgnoreCase("description")){
+ t = new StringTokenizer(substring, ":");
+ t.nextToken().trim(); // the prop we already know
+ StringBuffer tmp = new StringBuffer(t.nextToken().trim());
+ for (int i = 0; i < ATTRIBUTE_NAMES.length; i++){
+ if (tmp.toString().endsWith(ATTRIBUTE_NAMES[i])){
+ int len = ATTRIBUTE_NAMES[i].length();
+ // trim off that
+ tmp.setLength(tmp.length() - len);
+ break;
+ }
+ }
+ value = hansalizeIt(tmp.toString());
+ }
+ else {
+ // Single value properties like bound: true
+ t = new StringTokenizer(substring, ":\n");
+ t.nextToken().trim(); // the prop we already know
+ value = t.nextToken().trim();
+ }
+
+ // now we need to look for a match of any of the
+ // property
+
+ return value;
+ }
+ catch (Exception e){
+ return "invalidValue";
+ }
+ }
+
+ /**
+ * Creates a HashMap containing the key value pair for the parsed values
+ * of the "attributes" and "enum" tags.
+ * ie. For attribute value: visualUpdate true
+ * The HashMap will have key: visualUpdate, value: true
+ */
+ private static HashMap getAttributeMap(String str, String delim) {
+ StringTokenizer t = new StringTokenizer(str, delim);
+ HashMap map = null;
+ String key;
+ String value;
+
+ int num = t.countTokens()/2;
+ if (num > 0) {
+ map = new HashMap();
+ for (int i = 0; i < num; i++) {
+ key = t.nextToken().trim();
+ value = t.nextToken().trim();
+ map.put(key, value);
+ }
+ }
+ return map;
+ }
+
+ // looks for extra spaces, \n hard-coded and invisible,etc
+ private static String hansalizeIt(String from){
+ char [] chars = from.toCharArray();
+ int len = chars.length;
+ int toss = 0;
+
+ // remove double spaces
+ for (int i = 0; i < len; i++){
+ if ((chars[i] == ' ')) {
+ if (i+1 < len) {
+ if ((chars[i+1] == ' ' ) || (chars[i+1] == '\n'))
+ {
+ --len;
+ System.arraycopy(chars,i+1,chars,i,len-i);
+ --i;
+ }
+ }
+ }
+
+ if (chars[i] == '\n'){
+ chars[i] = ' ';
+ i -= 2;
+ }
+
+ if (chars[i] == '\\') {
+ if (i+1 < len) {
+ if (chars[i+1] == 'n'){
+ chars[i+1] = ' ';
+ --len;
+ System.arraycopy(chars,i+1, chars,i, len-i);
+ --i;
+ }
+ }
+ }
+ }
+ return new String(chars,0,len);
+ }
+
+}
diff --git a/jdk/make/tools/swing-beans/GenSwingBeanInfo.java b/jdk/make/tools/swing-beans/GenSwingBeanInfo.java
new file mode 100644
index 0000000..cd6852b
--- /dev/null
+++ b/jdk/make/tools/swing-beans/GenSwingBeanInfo.java
@@ -0,0 +1,530 @@
+/*
+ * Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+import java.beans.BeanInfo;
+import java.beans.BeanDescriptor;
+import java.beans.Introspector;
+import java.beans.IntrospectionException;
+import java.beans.PropertyDescriptor;
+
+import java.io.*;
+
+import java.util.Hashtable;
+import java.util.HashMap;
+import java.util.Iterator;
+
+/**
+ * A utlity for generating a BeanInfo source file from a template and a
+ * Hashtable with hints that were generated from a doclet.
+ * it's neccessary to write things like the per property descriptions
+ * by hand. To run the application:
+ * <pre>
+ * java GenSwingBeanInfo <class name>
+ * </pre>
+ * Code for a bean info class is written to out. If the class is
+ * swing package, you don't need to fully specify its name.
+ *
+ * @author Hans Muller
+ * @author Rich Schiavi
+ * @author Mark Davidson
+ */
+public class GenSwingBeanInfo {
+ private final static String BEANINFO_SUFFIX = "BeanInfo.java";
+
+ // Tokens in @(...)
+ private final static String TOK_BEANPACKAGE = "BeanPackageName";
+ private final static String TOK_BEANCLASS = "BeanClassName";
+ private final static String TOK_BEANOBJECT = "BeanClassObject";
+ private final static String TOK_CLASSDESC = "ClassDescriptors";
+ private final static String TOK_BEANDESC = "BeanDescription";
+ private final static String TOK_PROPDESC = "BeanPropertyDescriptors";
+ private final static String TOK_ENUMVARS = "EnumVariables";
+
+ private String enumcode; // Generated code for enumerated properties.
+
+ private boolean DEBUG = false;
+
+ private String fileDir;
+ private String templateFilename;
+
+ /**
+ * Public constructor
+ * @param fileDir Location to put the generated source files.
+ * @param templateFilename Location of the BeanInfo template
+ * @param debug Flag to turn on debugging
+ */
+ public GenSwingBeanInfo(String fileDir, String templateFilename, boolean debug) {
+ this.fileDir = fileDir;
+ this.templateFilename = templateFilename;
+ this.DEBUG = debug;
+ }
+
+ /**
+ * Opens a BeanInfo PrintStream for the class.
+ */
+ private PrintStream initOutputFile(String classname) {
+ try {
+ OutputStream out = new FileOutputStream(fileDir + File.separator + classname + BEANINFO_SUFFIX);
+ BufferedOutputStream bout = new BufferedOutputStream(out);
+ return new PrintStream(out);
+ } catch (IOException e){
+ // System.err.println("GenSwingBeanInfo: " + e.toString());
+ }
+ return null;
+ }
+
+ private static void messageAndExit(String msg) {
+ System.err.println("\n" + msg);
+ System.exit(1);
+ }
+
+
+ /**
+ * Load the contents of the BeanInfo template into a string and
+ * return the string.
+ */
+ private String loadTemplate() {
+ String template = "<no template>";
+
+ try {
+ File file = new File(templateFilename);
+ DataInputStream stream = new DataInputStream(new FileInputStream(file));
+ BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
+ StringBuffer buffer = new StringBuffer();
+
+ int c;
+ while((c = reader.read()) != -1) {
+ buffer.append((char)c);
+ }
+
+ template = buffer.toString();
+ reader.close();
+ } catch (IOException e) {
+ System.out.println(e.getMessage());
+ messageAndExit("GenSwingBeanInfo: Couldn't load template: " + templateFilename + e);
+ }
+ return template;
+ }
+
+
+ /**
+ * Generates a string for the BeanDescriptor
+ */
+ private String genBeanDescriptor(DocBeanInfo dbi) {
+ String code = "";
+ int beanflags = dbi.beanflags;
+
+ // we support export, hidden, preferred
+ if ((beanflags & DocBeanInfo.EXPERT) != 0)
+ code += " sun.swing.BeanInfoUtils.EXPERT, Boolean.TRUE,\n";
+ if ((beanflags & DocBeanInfo.HIDDEN) !=0)
+ code += " sun.swing.BeanInfoUtils.HIDDEN, Boolean.TRUE,\n";
+ /* 1.2 only - make sure build flag build using 1.2 */
+ if ((beanflags & DocBeanInfo.PREFERRED) !=0)
+ code += " sun.swing.BeanInfoUtils.PREFERRED, Boolean.TRUE,\n";
+ if (!(dbi.customizerclass.equals("null")))
+ code += " sun.swing.BeanInfoUtils.CUSTOMIZERCLASS, " + dbi.customizerclass + ".class,\n";
+
+ if (dbi.attribs != null) {
+ code += genAttributes(dbi.attribs);
+ }
+
+ return code;
+ }
+
+ /**
+ * Generates the code for the attributes table.
+ */
+ private String genAttributes(HashMap attribs) {
+ StringBuffer code = new StringBuffer();
+ String key;
+ String value;
+
+ Iterator iterator = attribs.keySet().iterator();
+ while(iterator.hasNext()) {
+ key = (String)iterator.next();
+ value = (String)attribs.get(key);
+
+ if (value.equals("true") || value.equals("false")) {
+ // Substitute the "true" and "false" for codegen Boolean values.
+ if(value.equals("true"))
+ value = "Boolean.TRUE";
+ else
+ value = "Boolean.FALSE";
+
+ code.append(" \"").append(key).append("\", ").append(value).append(",\n");
+ } else {
+ code.append(" \"").append(key).append("\", \"").append(value).append("\",\n");
+ }
+ }
+ return code.toString();
+ }
+
+ /**
+ * Generates the code for the enumeration.
+ * XXX - side effect: Modifies the enumcode field variable.
+ */
+ private String genEnumeration(String propName, HashMap enums) {
+ String objectName = propName + "Enumeration";
+ String key;
+ String value;
+
+ StringBuffer code = new StringBuffer("\n\t\tObject[] ");
+ code.append(objectName).append(" = new Object[] { \n");
+
+ Iterator iterator = enums.keySet().iterator();
+ while(iterator.hasNext()) {
+ key = (String)iterator.next();
+ value = (String)enums.get(key);
+
+ code.append("\t\t\t\"").append(key).append("\" , new Integer(");
+ code.append(value).append("), \"").append(value).append("\",\n");
+ }
+ // Close the statically initialized Object[]
+ code.replace(code.length() - 2, code.length(), "\n\t\t};\n");
+
+ // Add this string to the enumeration code.
+ enumcode += code.toString();
+
+ // Return the PropertyDescriptor init string;
+ return " \"enumerationValues\", " + objectName + ",\n";
+ }
+
+ /**
+ * Generate the createPropertyDescriptor() calls, one per property.
+ * A fully specified createPropertyDescriptor() call looks like this:
+ * <pre>
+ * createPropertyDescriptor("contentPane", new Object[] {
+ * BOUND, Boolean.TRUE,
+ * CONSTRAINED, Boolean.TRUE,
+ * PROPERTYEDITORCLASS, package.MyEditor.cl
+ * WRITEMETHOD, "setContentPane",
+ * DISPLAYNAME, "contentPane",
+ * EXPERT, Boolean.FALSE,
+ * HIDDEN, Boolean.FALSE,
+ * PREFERRED, Boolean.TRUE,
+ * SHORTDESCRIPTION, "A top level window with a window manager border",
+ * "random attribute","random value"
+ * }
+ * );
+ * </pre>
+ *
+ * @param info The actual BeanInfo class generated from from the Intospector.
+ * @param dochash Set of DocBeanInfo pairs for each property. This information
+ * is used to suplement the instrospected properties.
+ * @return A snippet of source code which would construct all the PropertyDescriptors.
+ */
+ private String genPropertyDescriptors(BeanInfo info, Hashtable dochash) {
+ String code = "";
+ enumcode = " "; // code for enumerated properties.
+ PropertyDescriptor[] pds = info.getPropertyDescriptors();
+ boolean hash_match = false;
+ DocBeanInfo dbi = null;
+
+ for(int i = 0; i < pds.length; i++) {
+ if (pds[i].getReadMethod() != null) {
+ code += "\ncreatePropertyDescriptor(\"" + pds[i].getName() + "\", new Object[] {\n";
+
+ if (DEBUG)
+ System.out.println("Introspected propertyDescriptor: " + pds[i].getName());
+
+ if (dochash.size() > 0 && dochash.containsKey(pds[i].getName())) {
+ dbi = (DocBeanInfo)dochash.remove(pds[i].getName());
+ // override/set properties on this *introspected*
+ // BeanInfo pds using our DocBeanInfo class values
+ setDocInfoProps(dbi, pds[i]);
+ hash_match = true;
+ if (DEBUG)
+ System.out.println("DocBeanInfo class exists for propertyDescriptor: " + pds[i].getName() + "\n");
+ } else {
+ hash_match = false;
+ }
+
+ // Do I need to do anything with this property descriptor
+ if (hash_match) {
+ if ((dbi.beanflags & DocBeanInfo.BOUND) != 0) {
+ code += " sun.swing.BeanInfoUtils.BOUND, Boolean.TRUE,\n";
+ } else {
+ code += " sun.swing.BeanInfoUtils.BOUND, Boolean.FALSE,\n";
+ }
+ }
+
+ if (pds[i].isConstrained()) {
+ code += " sun.swing.BeanInfoUtils.CONSTRAINED, Boolean.TRUE,\n";
+ }
+
+ if (pds[i].getPropertyEditorClass() != null) {
+ String className = pds[i].getPropertyEditorClass().getName();
+ code += " sun.swing.BeanInfoUtils.PROPERTYEDITORCLASS, " + className + ".class,\n";
+ } else if ((hash_match) && (!(dbi.propertyeditorclass.equals("null")))) {
+ code += " sun.swing.BeanInfoUtils.PROPERTYEDITORCLASS, " + dbi.propertyeditorclass + ".class,\n";
+ }
+
+ if ((hash_match) && (!(dbi.customizerclass.equals("null")))) {
+ code += " sun.swing.BeanInfoUtils.CUSTOMIZERCLASS, " + dbi.customizerclass + ".class,\n";
+ }
+
+ if ((hash_match) && (dbi.enums != null)) {
+ code += genEnumeration(pds[i].getName(), dbi.enums);
+ }
+
+ if (!pds[i].getDisplayName().equals(pds[i].getName())) {
+ code += " sun.swing.BeanInfoUtils.DISPLAYNAME, \"" + pds[i].getDisplayName() + "\",\n";
+ }
+
+ if (pds[i].isExpert()) {
+ code += " sun.swing.BeanInfoUtils.EXPERT, Boolean.TRUE,\n";
+ }
+
+ if (pds[i].isHidden()) {
+ code += " sun.swing.BeanInfoUtils.HIDDEN, Boolean.TRUE,\n";
+ }
+
+ if (pds[i].isPreferred()) {
+ code += " sun.swing.BeanInfoUtils.PREFERRED, Boolean.TRUE,\n";
+ }
+
+ // user attributes
+ if (hash_match) {
+ if (dbi.attribs != null) {
+ code += genAttributes(dbi.attribs);
+ }
+ }
+ code += " sun.swing.BeanInfoUtils.SHORTDESCRIPTION, \"" + pds[i].getShortDescription() + "\",\n";
+
+ // Print the closing brackets. If this is the last array initializer,
+ // don't print the trailing comma.
+ if (i == (pds.length - 1)) {
+ code += " }\n)\n";
+ } else {
+ code += " }\n),\n";
+ }
+
+ } // end if ( readMethod != null )
+ } // end for
+ return code;
+ }
+
+ /**
+ * Sets properties from the BeanInfo supplement on the
+ * introspected PropertyDescriptor
+ */
+ private void setDocInfoProps(DocBeanInfo dbi, PropertyDescriptor pds) {
+ int beanflags = dbi.beanflags;
+
+ if ((beanflags & DocBeanInfo.BOUND) != 0)
+ pds.setBound(true);
+ if ((beanflags & DocBeanInfo.EXPERT) != 0)
+ pds.setExpert(true);
+ if ((beanflags & DocBeanInfo.CONSTRAINED) != 0)
+ pds.setConstrained(true);
+ if ((beanflags & DocBeanInfo.HIDDEN) !=0)
+ pds.setHidden(true);
+ if ((beanflags & DocBeanInfo.PREFERRED) !=0)
+ pds.setPreferred(true);
+
+ if (!(dbi.desc.equals("null"))){
+ pds.setShortDescription(dbi.desc);
+ }
+ if (!(dbi.displayname.equals("null"))){
+ pds.setDisplayName(dbi.displayname);
+ }
+ }
+
+ /**
+ * Generates the BeanInfo source file using instrospection and a
+ * Hashtable full of hints. This the only public method in this class.
+ *
+ * @param classname Root name of the class. i.e., JButton
+ * @param dochash A hashtable containing the DocBeanInfo.
+ */
+ public void genBeanInfo(String packageName, String classname, Hashtable dochash) {
+ // The following initial values are just examples. All of these
+ // fields are initialized below.
+ String beanClassName = "JInternalFrame";
+ String beanClassObject = "javax.swing.JInternalFrame.class";
+ String beanDescription = "<A description of this component>.";
+ String beanPropertyDescriptors = "<createSwingPropertyDescriptor code>";
+ String classPropertyDescriptors = "<createSwingClassPropertyDescriptor code>";
+
+ Class cls = getClass(packageName, classname);
+ if (cls == null){
+ messageAndExit("Can't find class: " + classname);
+ }
+
+ // Get the output stream.
+ PrintStream out = initOutputFile(classname);
+
+ // Run the Introspector and initialize the variables
+
+ BeanInfo beanInfo = null;
+ BeanDescriptor beanDescriptor = null;
+
+ try {
+ if (cls == javax.swing.JComponent.class) {
+ // Go all the way up the heirarchy for JComponent
+ beanInfo = Introspector.getBeanInfo(cls);
+ } else {
+ beanInfo = Introspector.getBeanInfo(cls, cls.getSuperclass());
+ }
+ beanDescriptor = beanInfo.getBeanDescriptor();
+ beanDescription = beanDescriptor.getShortDescription();
+ } catch (IntrospectionException e) {
+ messageAndExit("Introspection failed for " + cls.getName() + " " + e);
+ }
+
+ beanClassName = beanDescriptor.getName();
+ beanClassObject = cls.getName() + ".class";
+
+ if (DEBUG){
+ System.out.println(">>>>GenSwingBeanInfo class: " + beanClassName);
+ }
+ // Generate the Class BeanDescriptor information first
+ if (dochash.size() > 0) {
+ if (dochash.containsKey(beanClassName)) {
+ DocBeanInfo dbi = (DocBeanInfo)dochash.remove(beanClassName);
+ classPropertyDescriptors = genBeanDescriptor(dbi);
+ if (DEBUG)
+ System.out.println("ClassPropertyDescriptors: " + classPropertyDescriptors);
+ if (!(dbi.desc.equals("null")))
+ beanDescription = dbi.desc;
+ } else
+ beanDescription = beanDescriptor.getShortDescription();
+ } else
+ beanDescription = beanDescriptor.getShortDescription();
+
+ // Generate the Property descriptors
+ beanPropertyDescriptors = genPropertyDescriptors(beanInfo,dochash);
+
+ // Dump the template to out, substituting values for
+ // @(token) tokens as they're encountered.
+
+ int currentIndex = 0;
+ // not loading this to get around build issue for now
+ String template = loadTemplate();
+
+ // This loop substitutes the "@(...)" tags in the template with the ones for the
+ // current class.
+ while (currentIndex < template.length()) {
+ // Find the Token
+ int tokenStart = template.indexOf("@(", currentIndex);
+ if (tokenStart != -1) {
+ out.print(template.substring(currentIndex, tokenStart));
+
+ int tokenEnd = template.indexOf(")", tokenStart);
+ if (tokenEnd == -1) {
+ messageAndExit("Bad @(<token>) beginning at " + tokenStart);
+ }
+ String token = template.substring(tokenStart+2, tokenEnd);
+
+ if (token.equals(TOK_BEANCLASS)) {
+ out.print(beanClassName);
+ } else if (token.equals(TOK_CLASSDESC)) {
+ if (!(classPropertyDescriptors.equals("<createSwingClassPropertyDescriptor code>"))) {
+ printDescriptors(out, classPropertyDescriptors, template, tokenStart);
+ }
+ } else if (token.equals(TOK_BEANPACKAGE)){
+ out.print(packageName);
+ } else if (token.equals(TOK_BEANOBJECT)) {
+ out.print(beanClassObject);
+ } else if (token.equals(TOK_BEANDESC)) {
+ out.print(beanDescription);
+ } else if (token.equals(TOK_ENUMVARS)){
+ out.print(enumcode);
+ } else if (token.equals(TOK_PROPDESC)) {
+ printDescriptors(out, beanPropertyDescriptors, template, tokenStart);
+ } else if (token.equals("#")) {
+ // Ignore the @(#) Version Control tag if it exists.
+ } else {
+ messageAndExit("Unrecognized token @(" + token + ")");
+ }
+ currentIndex = tokenEnd + 1;
+ } else {
+ // tokenStart == -1 - We are finsihed.
+ out.print(template.substring(currentIndex, template.length()));
+ break;
+ }
+ }
+ out.close();
+ }
+
+ /**
+ * Returns the class from the package name and the class root name.
+ *
+ * @param packageName The name of the package of the containing class.
+ * @param rootname The root name of the class. i.e, JButton
+ * @return The class instance or null.
+ */
+ private Class getClass(String packageName, String rootname) {
+ Class cls = null;
+ String classname = rootname;
+
+ if (packageName != null || !packageName.equals("")) {
+ classname = packageName + "." + rootname;
+ }
+
+ try {
+ cls = Class.forName(classname);
+ } catch (ClassNotFoundException e) {
+ // Fail silently.
+ }
+ return cls;
+ }
+
+ /**
+ * Prints the formated descriptors to the PrintStream
+ * @param out Open PrintStream
+ * @param s String descriptor
+ * @param template Template
+ * @param tokenStart Index into the template
+ */
+ private void printDescriptors(PrintStream out, String s,
+ String template, int tokenStart) {
+ String indent = "";
+
+ // Find the newline that preceeds @(BeanPropertyDescriptors) to
+ // calculate the indent.
+ for (int i = tokenStart; i >= 0; i--) {
+ if (template.charAt(i) == '\n') {
+ char[] chars = new char[tokenStart - i];
+ for (int j = 0; j < chars.length; j++) {
+ chars[j] = ' ';
+ }
+ indent = new String(chars);
+ break;
+ }
+ }
+
+ int i = 0;
+ while(i < s.length()) {
+ int nlIndex = s.indexOf('\n', i);
+ out.print(s.substring(i, nlIndex+1));
+ out.print(indent);
+ i = nlIndex + 1;
+ }
+ }
+
+
+}
diff --git a/jdk/make/tools/swing-beans/SwingBeanInfo.template b/jdk/make/tools/swing-beans/SwingBeanInfo.template
new file mode 100644
index 0000000..c2b21c9
--- /dev/null
+++ b/jdk/make/tools/swing-beans/SwingBeanInfo.template
@@ -0,0 +1,116 @@
+/*
+ * Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package @(BeanPackageName);
+
+import java.beans.BeanDescriptor;
+import java.beans.PropertyDescriptor;
+import java.awt.Image;
+
+import sun.swing.BeanInfoUtils;
+
+/**
+ * Descriptive information about the @(BeanClassName) class for Java
+ * Beans application builders. This BeanInfo class provides descriptions
+ * of each property, of the bean itself, it indicates which
+ * @(BeanClassName) properties are bound, and it provides other
+ * information and icons useful to builders.
+ *
+ * @author Auto-Generated Source Code
+ */
+
+public class @(BeanClassName)BeanInfo extends javax.swing.SwingBeanInfoBase {
+ private static final Class class@(BeanClassName) = @(BeanClassObject);
+
+ /**
+ * @return a @(BeanClassName) BeanDescriptor
+ */
+ public BeanDescriptor getBeanDescriptor() {
+ return BeanInfoUtils.createBeanDescriptor(class@(BeanClassName),
+ new Object[] {
+ BeanInfoUtils.PREFERRED, Boolean.TRUE,
+ @(ClassDescriptors)
+ BeanInfoUtils.SHORTDESCRIPTION, "@(BeanDescription)"
+ });
+ }
+
+
+ /**
+ * Create a @(BeanClassName) PropertyDescriptor. This is just an internal
+ * convenience method that allows one to leave the @(BeanClassName).class
+ * argument out of the createPropertyDescriptor() class in the
+ * getPropertyDescriptors() method below.
+ *
+ * @param name the name of the property
+ * @param args an array java.beans.PropertyDescriptor property names and values
+ * @return a @(BeanClassName) PropertyDescriptor.
+ * @see BeanInfoUtils#createPropertyDescriptor
+ */
+ private PropertyDescriptor createPropertyDescriptor(String name, Object[] args) {
+ return BeanInfoUtils.createPropertyDescriptor(class@(BeanClassName), name, args);
+ }
+
+
+ /**
+ * This method returns a list of bean PropertyDescriptors, one for each public
+ * property in @(BeanClassName). The first property is the "default" property.
+ *
+ * @return a complete list of bean PropertyDescriptors for @(BeanClassName)
+ * @see SwingBeanInfo
+ * @see java.beans.BeanInfo#getDefaultPropertyIndex
+ */
+ public PropertyDescriptor[] getPropertyDescriptors() {
+ @(EnumVariables)
+ return new PropertyDescriptor[] {
+ @(BeanPropertyDescriptors)
+ };
+ }
+
+
+ /**
+ * @return an icon of the specified kind for @(BeanClassName)
+ */
+ public Image getIcon(int kind) {
+ Image i;
+ switch (kind){
+ case ICON_COLOR_32x32:
+ i = loadImage("beaninfo/images/@(BeanClassName)Color32.gif");
+ return ((i == null) ? loadImage("beaninfo/images/JComponentColor32.gif") : i);
+ case ICON_COLOR_16x16:
+ i = loadImage("beaninfo/images/@(BeanClassName)Color16.gif");
+ return ((i == null) ? loadImage("beaninfo/images/JComponentColor16.gif") : i);
+ case ICON_MONO_32x32:
+ i = loadImage("beaninfo/images/@(BeanClassName)Mono32.gif");
+ return ((i == null) ? loadImage("beaninfo/images/JComponentMono32.gif") : i);
+ case ICON_MONO_16x16:
+ i = loadImage("beaninfo/images/@(BeanClassName)Mono16.gif");
+ return ((i == null) ? loadImage("beaninfo/images/JComponentMono16.gif") : i);
+ default:
+ return super.getIcon(kind);
+ }
+ }
+}
+
+
diff --git a/jdk/make/tools/swing-beans/beaninfo/BeanInfoUtils.java b/jdk/make/tools/swing-beans/beaninfo/BeanInfoUtils.java
new file mode 100644
index 0000000..a84db69
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/BeanInfoUtils.java
@@ -0,0 +1,293 @@
+/*
+ * Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.swing;
+
+import java.beans.*;
+import java.lang.reflect.Method;
+
+public class BeanInfoUtils
+{
+ /* The values of these createPropertyDescriptor() and
+ * createBeanDescriptor() keywords are the names of the
+ * properties they're used to set.
+ */
+ public static final String BOUND = "bound";
+ public static final String CONSTRAINED = "constrained";
+ public static final String PROPERTYEDITORCLASS = "propertyEditorClass";
+ public static final String READMETHOD = "readMethod";
+ public static final String WRITEMETHOD = "writeMethod";
+ public static final String DISPLAYNAME = "displayName";
+ public static final String EXPERT = "expert";
+ public static final String HIDDEN = "hidden";
+ public static final String PREFERRED = "preferred";
+ public static final String SHORTDESCRIPTION = "shortDescription";
+ public static final String CUSTOMIZERCLASS = "customizerClass";
+
+ static private void initFeatureDescriptor(FeatureDescriptor fd, String key, Object value)
+ {
+ if (DISPLAYNAME.equals(key)) {
+ fd.setDisplayName((String)value);
+ }
+
+ if (EXPERT.equals(key)) {
+ fd.setExpert(((Boolean)value).booleanValue());
+ }
+
+ if (HIDDEN.equals(key)) {
+ fd.setHidden(((Boolean)value).booleanValue());
+ }
+
+ if (PREFERRED.equals(key)) {
+ fd.setPreferred(((Boolean)value).booleanValue());
+ }
+
+ else if (SHORTDESCRIPTION.equals(key)) {
+ fd.setShortDescription((String)value);
+ }
+
+ /* Otherwise assume that we have an arbitrary FeatureDescriptor
+ * "attribute".
+ */
+ else {
+ fd.setValue(key, value);
+ }
+ }
+
+ /**
+ * Create a beans PropertyDescriptor given an of keyword/value
+ * arguments. The following sample call shows all of the supported
+ * keywords:
+ *<pre>
+ * createPropertyDescriptor("contentPane", new Object[] {
+ * BOUND, Boolean.TRUE,
+ * CONSTRAINED, Boolean.TRUE,
+ * PROPERTYEDITORCLASS, package.MyEditor.class,
+ * READMETHOD, "getContentPane",
+ * WRITEMETHOD, "setContentPane",
+ * DISPLAYNAME, "contentPane",
+ * EXPERT, Boolean.FALSE,
+ * HIDDEN, Boolean.FALSE,
+ * PREFERRED, Boolean.TRUE,
+ * SHORTDESCRIPTION, "A top level window with a window manager border",
+ * "random attribute","random object value"
+ * }
+ * );
+ * </pre>
+ * The keywords correspond to <code>java.beans.PropertyDescriptor</code> and
+ * <code>java.beans.FeatureDescriptor</code> properties, e.g. providing a value
+ * for displayName is comparable to <code>FeatureDescriptor.setDisplayName()</code>.
+ * Using createPropertyDescriptor instead of the PropertyDescriptor
+ * constructor and set methods is preferrable in that it regularizes
+ * the code in a <code>java.beans.BeanInfo.getPropertyDescriptors()</code>
+ * method implementation. One can use <code>createPropertyDescriptor</code>
+ * to set <code>FeatureDescriptor</code> attributes, as in "random attribute"
+ * "random object value".
+ * <p>
+ * All properties should provide a reasonable value for the
+ * <code>SHORTDESCRIPTION</code> keyword and should set <code>BOUND</code>
+ * to <code>Boolean.TRUE</code> if neccessary. The remaining keywords
+ * are optional. There's no need to provide values for keywords like
+ * READMETHOD if the correct value can be computed, i.e. if the properties
+ * get/is method follows the standard beans pattern.
+ * <p>
+ * The PREFERRED keyword is not supported by the JDK1.1 java.beans package.
+ * It's still worth setting it to true for properties that are most
+ * likely to be interested to the average developer, e.g. AbstractButton.title
+ * is a preferred property, AbstractButton.focusPainted is not.
+ *
+ * @see java.beans#BeanInfo
+ * @see java.beans#PropertyDescriptor
+ * @see java.beans#FeatureDescriptor
+ */
+ public static PropertyDescriptor createPropertyDescriptor(Class cls, String name, Object[] args)
+ {
+ PropertyDescriptor pd = null;
+ try {
+ pd = new PropertyDescriptor(name, cls);
+ } catch (IntrospectionException e) {
+ // Try creating a read-only property, in case setter isn't defined.
+ try {
+ pd = createReadOnlyPropertyDescriptor(name, cls);
+ } catch (IntrospectionException ie) {
+ throwError(ie, "Can't create PropertyDescriptor for " + name + " ");
+ }
+ }
+
+ for(int i = 0; i < args.length; i += 2) {
+ String key = (String)args[i];
+ Object value = args[i + 1];
+
+ if (BOUND.equals(key)) {
+ pd.setBound(((Boolean)value).booleanValue());
+ }
+
+ else if (CONSTRAINED.equals(key)) {
+ pd.setConstrained(((Boolean)value).booleanValue());
+ }
+
+ else if (PROPERTYEDITORCLASS.equals(key)) {
+ pd.setPropertyEditorClass((Class)value);
+ }
+
+ else if (READMETHOD.equals(key)) {
+ String methodName = (String)value;
+ Method method;
+ try {
+ method = cls.getMethod(methodName, new Class[0]);
+ pd.setReadMethod(method);
+ }
+ catch(Exception e) {
+ throwError(e, cls + " no such method as \"" + methodName + "\"");
+ }
+ }
+
+ else if (WRITEMETHOD.equals(key)) {
+ String methodName = (String)value;
+ Method method;
+ try {
+ Class type = pd.getPropertyType();
+ method = cls.getMethod(methodName, new Class[]{type});
+ pd.setWriteMethod(method);
+ }
+ catch(Exception e) {
+ throwError(e, cls + " no such method as \"" + methodName + "\"");
+ }
+ }
+
+ else {
+ initFeatureDescriptor(pd, key, value);
+ }
+ }
+
+ return pd;
+ }
+
+
+ /**
+ * Create a BeanDescriptor object given an of keyword/value
+ * arguments. The following sample call shows all of the supported
+ * keywords:
+ *<pre>
+ * createBeanDescriptor(JWindow..class, new Object[] {
+ * CUSTOMIZERCLASS, package.MyCustomizer.class,
+ * DISPLAYNAME, "JFrame",
+ * EXPERT, Boolean.FALSE,
+ * HIDDEN, Boolean.FALSE,
+ * PREFERRED, Boolean.TRUE,
+ * SHORTDESCRIPTION, "A top level window with a window manager border",
+ * "random attribute","random object value"
+ * }
+ * );
+ * </pre>
+ * The keywords correspond to <code>java.beans.BeanDescriptor</code> and
+ * <code>java.beans.FeatureDescriptor</code> properties, e.g. providing a value
+ * for displayName is comparable to <code>FeatureDescriptor.setDisplayName()</code>.
+ * Using createBeanDescriptor instead of the BeanDescriptor
+ * constructor and set methods is preferrable in that it regularizes
+ * the code in a <code>java.beans.BeanInfo.getBeanDescriptor()</code>
+ * method implementation. One can use <code>createBeanDescriptor</code>
+ * to set <code>FeatureDescriptor</code> attributes, as in "random attribute"
+ * "random object value".
+ *
+ * @see java.beans#BeanInfo
+ * @see java.beans#PropertyDescriptor
+ */
+ public static BeanDescriptor createBeanDescriptor(Class cls, Object[] args)
+ {
+ Class customizerClass = null;
+
+ /* For reasons I don't understand, customizerClass is a
+ * readOnly property. So we have to find it and pass it
+ * to the constructor here.
+ */
+ for(int i = 0; i < args.length; i += 2) {
+ if (CUSTOMIZERCLASS.equals((String)args[i])) {
+ customizerClass = (Class)args[i + 1];
+ break;
+ }
+ }
+
+ BeanDescriptor bd = new BeanDescriptor(cls, customizerClass);
+
+ for(int i = 0; i < args.length; i += 2) {
+ String key = (String)args[i];
+ Object value = args[i + 1];
+ initFeatureDescriptor(bd, key, value);
+ }
+
+ return bd;
+ }
+
+ static private PropertyDescriptor createReadOnlyPropertyDescriptor(
+ String name, Class cls) throws IntrospectionException {
+
+ Method readMethod = null;
+ String base = capitalize(name);
+ Class[] parameters = new Class[0];
+
+ // Is it a boolean?
+ try {
+ readMethod = cls.getMethod("is" + base, parameters);
+ } catch (Exception ex) {}
+ if (readMethod == null) {
+ try {
+ // Try normal accessor pattern.
+ readMethod = cls.getMethod("get" + base, parameters);
+ } catch (Exception ex2) {}
+ }
+ if (readMethod != null) {
+ return new PropertyDescriptor(name, readMethod, null);
+ }
+
+ try {
+ // Try indexed accessor pattern.
+ parameters = new Class[1];
+ parameters[0] = int.class;
+ readMethod = cls.getMethod("get" + base, parameters);
+ } catch (NoSuchMethodException nsme) {
+ throw new IntrospectionException(
+ "cannot find accessor method for " + name + " property.");
+ }
+ return new IndexedPropertyDescriptor(name, null, null, readMethod, null);
+ }
+
+ // Modified methods from java.beans.Introspector
+ private static String capitalize(String s) {
+ if (s.length() == 0) {
+ return s;
+ }
+ char chars[] = s.toCharArray();
+ chars[0] = Character.toUpperCase(chars[0]);
+ return new String(chars);
+ }
+
+ /**
+ * Fatal errors are handled by calling this method.
+ */
+ public static void throwError(Exception e, String s) {
+ throw new Error(e.toString() + " " + s);
+ }
+}
diff --git a/jdk/make/tools/swing-beans/beaninfo/SwingBeanInfoBase.java b/jdk/make/tools/swing-beans/beaninfo/SwingBeanInfoBase.java
new file mode 100644
index 0000000..571b0bc
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/SwingBeanInfoBase.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package javax.swing;
+
+import java.beans.*;
+import java.lang.reflect.*;
+import java.awt.Image;
+
+/**
+ * The superclass for all Swing BeanInfo classes. It provides
+ * default implementations of <code>getIcon</code> and
+ * <code>getDefaultPropertyIndex</code> as well as utility
+ * methods, like createPropertyDescriptor, for writing BeanInfo
+ * implementations. This classes is intended to be used along
+ * with <code>GenSwingBeanInfo</code> a BeanInfo class code generator.
+ *
+ * @see GenSwingBeanInfo
+ * @author Hans Muller
+ */
+public class SwingBeanInfoBase extends SimpleBeanInfo
+{
+ /**
+ * The default index is always 0. In other words the first property
+ * listed in the getPropertyDescriptors() method is the one
+ * to show a (JFC builder) user in a situation where just a single
+ * property will be shown.
+ */
+ public int getDefaultPropertyIndex() {
+ return 0;
+ }
+
+ /**
+ * Returns a generic Swing icon, all icon "kinds" are supported.
+ * Subclasses should defer to this method when they don't have
+ * a particular beans icon kind.
+ */
+ public Image getIcon(int kind) {
+ // PENDING(hmuller) need generic swing icon images.
+ return null;
+ }
+
+ /**
+ * Returns the BeanInfo for the superclass of our bean, so that
+ * its PropertyDescriptors will be included.
+ */
+ public BeanInfo[] getAdditionalBeanInfo() {
+ Class superClass = getBeanDescriptor().getBeanClass().getSuperclass();
+ BeanInfo superBeanInfo = null;
+ try {
+ superBeanInfo = Introspector.getBeanInfo(superClass);
+ } catch (IntrospectionException ie) {}
+ if (superBeanInfo != null) {
+ BeanInfo[] ret = new BeanInfo[1];
+ ret[0] = superBeanInfo;
+ return ret;
+ }
+ return null;
+ }
+}
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/AbstractButtonColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/AbstractButtonColor16.gif
new file mode 100644
index 0000000..4d46a7e
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/AbstractButtonColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/BorderColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/BorderColor16.gif
new file mode 100644
index 0000000..55ca4f7
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/BorderColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/BoxColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/BoxColor16.gif
new file mode 100644
index 0000000..be78181
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/BoxColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/BoxColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/BoxColor32.gif
new file mode 100644
index 0000000..e96878b
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/BoxColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/BoxMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/BoxMono16.gif
new file mode 100644
index 0000000..17a62f0
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/BoxMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/BoxMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/BoxMono32.gif
new file mode 100644
index 0000000..9404036
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/BoxMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JAppletColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JAppletColor16.gif
new file mode 100644
index 0000000..6de0a1f
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JAppletColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JAppletColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JAppletColor32.gif
new file mode 100644
index 0000000..464ee9d
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JAppletColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JAppletMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JAppletMono16.gif
new file mode 100644
index 0000000..1112f96
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JAppletMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JAppletMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JAppletMono32.gif
new file mode 100644
index 0000000..80b2a08
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JAppletMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JButtonColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JButtonColor16.gif
new file mode 100644
index 0000000..826ea9d
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JButtonColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JButtonColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JButtonColor32.gif
new file mode 100644
index 0000000..9f400fe
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JButtonColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JButtonMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JButtonMono16.gif
new file mode 100644
index 0000000..b4064f3
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JButtonMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JButtonMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JButtonMono32.gif
new file mode 100644
index 0000000..a6f803f
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JButtonMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxColor16.gif
new file mode 100644
index 0000000..cafd2a2
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxColor32.gif
new file mode 100644
index 0000000..6b814c5
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMenuItemColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMenuItemColor16.gif
new file mode 100644
index 0000000..ade5ee4
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMenuItemColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMenuItemColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMenuItemColor32.gif
new file mode 100644
index 0000000..d1bdd34
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMenuItemColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMenuItemMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMenuItemMono16.gif
new file mode 100644
index 0000000..f78fa48
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMenuItemMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMenuItemMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMenuItemMono32.gif
new file mode 100644
index 0000000..5dd2dfd
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMenuItemMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMono16.gif
new file mode 100644
index 0000000..8a7b36f
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMono32.gif
new file mode 100644
index 0000000..29a1cff
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JCheckBoxMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JColorChooserColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JColorChooserColor16.gif
new file mode 100644
index 0000000..061e010
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JColorChooserColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JColorChooserColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JColorChooserColor32.gif
new file mode 100644
index 0000000..64a0530
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JColorChooserColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JColorChooserMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JColorChooserMono16.gif
new file mode 100644
index 0000000..d54b222
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JColorChooserMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JColorChooserMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JColorChooserMono32.gif
new file mode 100644
index 0000000..08d8f8b
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JColorChooserMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JComboBoxColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JComboBoxColor16.gif
new file mode 100644
index 0000000..300cea5
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JComboBoxColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JComboBoxColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JComboBoxColor32.gif
new file mode 100644
index 0000000..f8e971f
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JComboBoxColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JComboBoxMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JComboBoxMono16.gif
new file mode 100644
index 0000000..594a992
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JComboBoxMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JComboBoxMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JComboBoxMono32.gif
new file mode 100644
index 0000000..9e50633
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JComboBoxMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JComponentColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JComponentColor16.gif
new file mode 100644
index 0000000..2238b57
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JComponentColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JDesktopPaneColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JDesktopPaneColor16.gif
new file mode 100644
index 0000000..f8667e5
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JDesktopPaneColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JDesktopPaneColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JDesktopPaneColor32.gif
new file mode 100644
index 0000000..882a052
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JDesktopPaneColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JDesktopPaneMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JDesktopPaneMono16.gif
new file mode 100644
index 0000000..9240156
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JDesktopPaneMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JDesktopPaneMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JDesktopPaneMono32.gif
new file mode 100644
index 0000000..7dba93d
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JDesktopPaneMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JDialogColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JDialogColor16.gif
new file mode 100644
index 0000000..929f5c0
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JDialogColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JDialogColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JDialogColor32.gif
new file mode 100644
index 0000000..0ab80b2
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JDialogColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JDialogMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JDialogMono16.gif
new file mode 100644
index 0000000..b4d8f90
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JDialogMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JDialogMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JDialogMono32.gif
new file mode 100644
index 0000000..8280322
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JDialogMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JEditorPaneColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JEditorPaneColor16.gif
new file mode 100644
index 0000000..e497970
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JEditorPaneColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JEditorPaneColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JEditorPaneColor32.gif
new file mode 100644
index 0000000..fd99906
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JEditorPaneColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JEditorPaneMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JEditorPaneMono16.gif
new file mode 100644
index 0000000..4e9bce8
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JEditorPaneMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JEditorPaneMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JEditorPaneMono32.gif
new file mode 100644
index 0000000..efd856c
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JEditorPaneMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JFileChooserColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JFileChooserColor16.gif
new file mode 100644
index 0000000..9a4b764
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JFileChooserColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JFileChooserColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JFileChooserColor32.gif
new file mode 100644
index 0000000..80ac6b4
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JFileChooserColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JFileChooserMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JFileChooserMono16.gif
new file mode 100644
index 0000000..80d31f9
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JFileChooserMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JFileChooserMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JFileChooserMono32.gif
new file mode 100644
index 0000000..27f9ca3
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JFileChooserMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JFormattedTextFieldColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JFormattedTextFieldColor16.gif
new file mode 100644
index 0000000..a2a4cb1
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JFormattedTextFieldColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JFormattedTextFieldColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JFormattedTextFieldColor32.gif
new file mode 100644
index 0000000..57ddafd
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JFormattedTextFieldColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JFormattedTextFieldMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JFormattedTextFieldMono16.gif
new file mode 100644
index 0000000..09a65ae
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JFormattedTextFieldMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JFormattedTextFieldMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JFormattedTextFieldMono32.gif
new file mode 100644
index 0000000..e5556d5
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JFormattedTextFieldMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JFrameColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JFrameColor16.gif
new file mode 100644
index 0000000..ce46309
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JFrameColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JFrameColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JFrameColor32.gif
new file mode 100644
index 0000000..e98d85d
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JFrameColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JFrameMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JFrameMono16.gif
new file mode 100644
index 0000000..22ccddf
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JFrameMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JFrameMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JFrameMono32.gif
new file mode 100644
index 0000000..bf1b3cd
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JFrameMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JInternalFrameColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JInternalFrameColor16.gif
new file mode 100644
index 0000000..298c934
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JInternalFrameColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JInternalFrameColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JInternalFrameColor32.gif
new file mode 100644
index 0000000..7db8282
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JInternalFrameColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JInternalFrameMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JInternalFrameMono16.gif
new file mode 100644
index 0000000..cc8e9c0
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JInternalFrameMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JInternalFrameMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JInternalFrameMono32.gif
new file mode 100644
index 0000000..a04e450
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JInternalFrameMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JLabelColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JLabelColor16.gif
new file mode 100644
index 0000000..d07b054
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JLabelColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JLabelColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JLabelColor32.gif
new file mode 100644
index 0000000..0c3b72f
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JLabelColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JLabelMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JLabelMono16.gif
new file mode 100644
index 0000000..96f5085
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JLabelMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JLabelMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JLabelMono32.gif
new file mode 100644
index 0000000..11f396d
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JLabelMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JLayeredPaneColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JLayeredPaneColor16.gif
new file mode 100644
index 0000000..f0e75c6
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JLayeredPaneColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JLayeredPaneColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JLayeredPaneColor32.gif
new file mode 100644
index 0000000..d26baaf
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JLayeredPaneColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JLayeredPaneMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JLayeredPaneMono16.gif
new file mode 100644
index 0000000..b8ae2d3
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JLayeredPaneMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JLayeredPaneMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JLayeredPaneMono32.gif
new file mode 100644
index 0000000..1c1b4d2
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JLayeredPaneMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JListColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JListColor16.gif
new file mode 100644
index 0000000..b658b4e
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JListColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JListColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JListColor32.gif
new file mode 100644
index 0000000..d50e74f
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JListColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JListMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JListMono16.gif
new file mode 100644
index 0000000..3538644
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JListMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JListMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JListMono32.gif
new file mode 100644
index 0000000..c32b3db
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JListMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JMenuBarColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JMenuBarColor16.gif
new file mode 100644
index 0000000..2d8a84e
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JMenuBarColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JMenuBarColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JMenuBarColor32.gif
new file mode 100644
index 0000000..6b31e69
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JMenuBarColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JMenuBarMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JMenuBarMono16.gif
new file mode 100644
index 0000000..b1d934f
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JMenuBarMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JMenuBarMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JMenuBarMono32.gif
new file mode 100644
index 0000000..0860caa
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JMenuBarMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JMenuColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JMenuColor16.gif
new file mode 100644
index 0000000..2dc992a
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JMenuColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JMenuColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JMenuColor32.gif
new file mode 100644
index 0000000..ed1a0d9
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JMenuColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JMenuItemColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JMenuItemColor16.gif
new file mode 100644
index 0000000..a354975
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JMenuItemColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JMenuItemColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JMenuItemColor32.gif
new file mode 100644
index 0000000..269c183
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JMenuItemColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JMenuItemMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JMenuItemMono16.gif
new file mode 100644
index 0000000..bc6a5cf
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JMenuItemMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JMenuItemMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JMenuItemMono32.gif
new file mode 100644
index 0000000..f7e525a
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JMenuItemMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JMenuMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JMenuMono16.gif
new file mode 100644
index 0000000..d2fbc51
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JMenuMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JMenuMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JMenuMono32.gif
new file mode 100644
index 0000000..d65f90b
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JMenuMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JOptionPaneColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JOptionPaneColor16.gif
new file mode 100644
index 0000000..e306701
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JOptionPaneColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JOptionPaneColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JOptionPaneColor32.gif
new file mode 100644
index 0000000..114e1ab
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JOptionPaneColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JOptionPaneMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JOptionPaneMono16.gif
new file mode 100644
index 0000000..f8cfb13
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JOptionPaneMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JOptionPaneMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JOptionPaneMono32.gif
new file mode 100644
index 0000000..3271f5f
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JOptionPaneMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JPanelColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JPanelColor16.gif
new file mode 100644
index 0000000..be78181
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JPanelColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JPanelColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JPanelColor32.gif
new file mode 100644
index 0000000..e96878b
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JPanelColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JPanelMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JPanelMono16.gif
new file mode 100644
index 0000000..17a62f0
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JPanelMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JPanelMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JPanelMono32.gif
new file mode 100644
index 0000000..9404036
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JPanelMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JPasswordFieldColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JPasswordFieldColor16.gif
new file mode 100644
index 0000000..8cfd117
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JPasswordFieldColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JPasswordFieldColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JPasswordFieldColor32.gif
new file mode 100644
index 0000000..520f026
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JPasswordFieldColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JPasswordFieldMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JPasswordFieldMono16.gif
new file mode 100644
index 0000000..f6faa33
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JPasswordFieldMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JPasswordFieldMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JPasswordFieldMono32.gif
new file mode 100644
index 0000000..3b8ba7a
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JPasswordFieldMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JPopupMenuColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JPopupMenuColor16.gif
new file mode 100644
index 0000000..3f93b2c
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JPopupMenuColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JPopupMenuColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JPopupMenuColor32.gif
new file mode 100644
index 0000000..9cf7e8c
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JPopupMenuColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JPopupMenuMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JPopupMenuMono16.gif
new file mode 100644
index 0000000..23cd197
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JPopupMenuMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JPopupMenuMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JPopupMenuMono32.gif
new file mode 100644
index 0000000..1176700
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JPopupMenuMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JProgressBarColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JProgressBarColor16.gif
new file mode 100644
index 0000000..780b9e2
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JProgressBarColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JProgressBarColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JProgressBarColor32.gif
new file mode 100644
index 0000000..1aa706d
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JProgressBarColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JProgressBarMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JProgressBarMono16.gif
new file mode 100644
index 0000000..59d06d0
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JProgressBarMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JProgressBarMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JProgressBarMono32.gif
new file mode 100644
index 0000000..e611f47
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JProgressBarMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonColor16.gif
new file mode 100644
index 0000000..18a0583
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonColor32.gif
new file mode 100644
index 0000000..7348f32
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMenuItemColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMenuItemColor16.gif
new file mode 100644
index 0000000..d56020c
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMenuItemColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMenuItemColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMenuItemColor32.gif
new file mode 100644
index 0000000..ff7cc7a
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMenuItemColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMenuItemMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMenuItemMono16.gif
new file mode 100644
index 0000000..924a27e
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMenuItemMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMenuItemMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMenuItemMono32.gif
new file mode 100644
index 0000000..7c6c09b
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMenuItemMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMono16.gif
new file mode 100644
index 0000000..4542f2a
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMono32.gif
new file mode 100644
index 0000000..9417b76c1
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JRadioButtonMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JRootPaneColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JRootPaneColor16.gif
new file mode 100644
index 0000000..192514e
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JRootPaneColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JRootPaneColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JRootPaneColor32.gif
new file mode 100644
index 0000000..818f245
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JRootPaneColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JRootPaneMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JRootPaneMono16.gif
new file mode 100644
index 0000000..15479f5
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JRootPaneMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JRootPaneMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JRootPaneMono32.gif
new file mode 100644
index 0000000..23a1c18
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JRootPaneMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JScrollBarColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JScrollBarColor16.gif
new file mode 100644
index 0000000..c37d24c
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JScrollBarColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JScrollBarColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JScrollBarColor32.gif
new file mode 100644
index 0000000..b7949b3
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JScrollBarColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JScrollBarMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JScrollBarMono16.gif
new file mode 100644
index 0000000..dc1d665
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JScrollBarMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JScrollBarMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JScrollBarMono32.gif
new file mode 100644
index 0000000..9b81d9a
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JScrollBarMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JScrollPaneColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JScrollPaneColor16.gif
new file mode 100644
index 0000000..4b420ef
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JScrollPaneColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JScrollPaneColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JScrollPaneColor32.gif
new file mode 100644
index 0000000..bbe6056
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JScrollPaneColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JScrollPaneMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JScrollPaneMono16.gif
new file mode 100644
index 0000000..bc335cc
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JScrollPaneMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JScrollPaneMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JScrollPaneMono32.gif
new file mode 100644
index 0000000..2111612
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JScrollPaneMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSeparatorColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSeparatorColor16.gif
new file mode 100644
index 0000000..64bd55c
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSeparatorColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSeparatorColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSeparatorColor32.gif
new file mode 100644
index 0000000..e66204e
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSeparatorColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSeparatorMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSeparatorMono16.gif
new file mode 100644
index 0000000..0435684
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSeparatorMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSeparatorMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSeparatorMono32.gif
new file mode 100644
index 0000000..2e8114d
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSeparatorMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSliderColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSliderColor16.gif
new file mode 100644
index 0000000..5024d4f
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSliderColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSliderColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSliderColor32.gif
new file mode 100644
index 0000000..61924f5
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSliderColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSliderMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSliderMono16.gif
new file mode 100644
index 0000000..e1f43e9
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSliderMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSliderMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSliderMono32.gif
new file mode 100644
index 0000000..9074309
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSliderMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSpinnerColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSpinnerColor16.gif
new file mode 100644
index 0000000..fd82edb
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSpinnerColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSpinnerColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSpinnerColor32.gif
new file mode 100644
index 0000000..30cfad7
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSpinnerColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSpinnerMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSpinnerMono16.gif
new file mode 100644
index 0000000..00fceb1
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSpinnerMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSpinnerMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSpinnerMono32.gif
new file mode 100644
index 0000000..9c0d0ab
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSpinnerMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSplitPaneColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSplitPaneColor16.gif
new file mode 100644
index 0000000..1a7297b
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSplitPaneColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSplitPaneColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSplitPaneColor32.gif
new file mode 100644
index 0000000..945aa5b
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSplitPaneColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSplitPaneMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSplitPaneMono16.gif
new file mode 100644
index 0000000..6515077
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSplitPaneMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JSplitPaneMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JSplitPaneMono32.gif
new file mode 100644
index 0000000..ea159bf
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JSplitPaneMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTabbedPaneColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTabbedPaneColor16.gif
new file mode 100644
index 0000000..b4cf8cd
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTabbedPaneColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTabbedPaneColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTabbedPaneColor32.gif
new file mode 100644
index 0000000..9be6463
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTabbedPaneColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTabbedPaneMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTabbedPaneMono16.gif
new file mode 100644
index 0000000..c1be162
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTabbedPaneMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTabbedPaneMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTabbedPaneMono32.gif
new file mode 100644
index 0000000..d4200f0
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTabbedPaneMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTableColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTableColor16.gif
new file mode 100644
index 0000000..fac7b5f
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTableColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTableColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTableColor32.gif
new file mode 100644
index 0000000..51ce69e
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTableColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTableMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTableMono16.gif
new file mode 100644
index 0000000..3389de7
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTableMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTableMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTableMono32.gif
new file mode 100644
index 0000000..01568e0
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTableMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTextAreaColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTextAreaColor16.gif
new file mode 100644
index 0000000..541e17a
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTextAreaColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTextAreaColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTextAreaColor32.gif
new file mode 100644
index 0000000..86a8658
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTextAreaColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTextAreaMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTextAreaMono16.gif
new file mode 100644
index 0000000..3074ceb
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTextAreaMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTextAreaMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTextAreaMono32.gif
new file mode 100644
index 0000000..cce9ee2
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTextAreaMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTextFieldColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTextFieldColor16.gif
new file mode 100644
index 0000000..b452d84
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTextFieldColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTextFieldColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTextFieldColor32.gif
new file mode 100644
index 0000000..e238cc1
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTextFieldColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTextFieldMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTextFieldMono16.gif
new file mode 100644
index 0000000..44aa3a8
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTextFieldMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTextFieldMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTextFieldMono32.gif
new file mode 100644
index 0000000..032853a
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTextFieldMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTextPaneColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTextPaneColor16.gif
new file mode 100644
index 0000000..5e9d595
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTextPaneColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTextPaneColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTextPaneColor32.gif
new file mode 100644
index 0000000..75f35db
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTextPaneColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTextPaneMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTextPaneMono16.gif
new file mode 100644
index 0000000..ec43ffa
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTextPaneMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTextPaneMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTextPaneMono32.gif
new file mode 100644
index 0000000..8948507
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTextPaneMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JToggleButtonColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JToggleButtonColor16.gif
new file mode 100644
index 0000000..4ff734f
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JToggleButtonColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JToggleButtonColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JToggleButtonColor32.gif
new file mode 100644
index 0000000..c27fe5b
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JToggleButtonColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JToggleButtonMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JToggleButtonMono16.gif
new file mode 100644
index 0000000..efbdf9b
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JToggleButtonMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JToggleButtonMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JToggleButtonMono32.gif
new file mode 100644
index 0000000..e17a446
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JToggleButtonMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JToolBarColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JToolBarColor16.gif
new file mode 100644
index 0000000..e9cb769
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JToolBarColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JToolBarColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JToolBarColor32.gif
new file mode 100644
index 0000000..6545005
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JToolBarColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JToolBarMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JToolBarMono16.gif
new file mode 100644
index 0000000..8ab1e9b
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JToolBarMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JToolBarMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JToolBarMono32.gif
new file mode 100644
index 0000000..426b84f
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JToolBarMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTreeColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTreeColor16.gif
new file mode 100644
index 0000000..ce11df2
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTreeColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTreeColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTreeColor32.gif
new file mode 100644
index 0000000..0f72dca
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTreeColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTreeMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTreeMono16.gif
new file mode 100644
index 0000000..45ac021
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTreeMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JTreeMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JTreeMono32.gif
new file mode 100644
index 0000000..6f7b3ad
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JTreeMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JViewportColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JViewportColor16.gif
new file mode 100644
index 0000000..2f4257f
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JViewportColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JViewportColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JViewportColor32.gif
new file mode 100644
index 0000000..8def20a
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JViewportColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JViewportMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JViewportMono16.gif
new file mode 100644
index 0000000..ac2eaa8
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JViewportMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JViewportMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JViewportMono32.gif
new file mode 100644
index 0000000..3b4e117
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JViewportMono32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JWindowColor16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JWindowColor16.gif
new file mode 100644
index 0000000..a179568
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JWindowColor16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JWindowColor32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JWindowColor32.gif
new file mode 100644
index 0000000..bd95443
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JWindowColor32.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JWindowMono16.gif b/jdk/make/tools/swing-beans/beaninfo/images/JWindowMono16.gif
new file mode 100644
index 0000000..2536139
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JWindowMono16.gif
Binary files differ
diff --git a/jdk/make/tools/swing-beans/beaninfo/images/JWindowMono32.gif b/jdk/make/tools/swing-beans/beaninfo/images/JWindowMono32.gif
new file mode 100644
index 0000000..c0c23e7
--- /dev/null
+++ b/jdk/make/tools/swing-beans/beaninfo/images/JWindowMono32.gif
Binary files differ
diff --git a/jdk/make/tools/winver/Makefile b/jdk/make/tools/winver/Makefile
new file mode 100644
index 0000000..9b8638a
--- /dev/null
+++ b/jdk/make/tools/winver/Makefile
@@ -0,0 +1,48 @@
+#
+# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the winver tool
+#
+
+BUILDDIR = ../..
+PRODUCT = tools
+PROGRAM = winver
+include $(BUILDDIR)/common/Defs.gmk
+
+build: permissions
+
+permissions:
+ifeq ($(PLATFORM),windows)
+ $(CHMOD) a+x bin/winver.exe
+endif
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Rules.gmk
+
+.PHONY: permissions
+
diff --git a/jdk/make/tools/winver/bin/winver.exe b/jdk/make/tools/winver/bin/winver.exe
new file mode 100644
index 0000000..cba45be
--- /dev/null
+++ b/jdk/make/tools/winver/bin/winver.exe
Binary files differ
diff --git a/jdk/make/tools/winver/src/StdAfx.cpp b/jdk/make/tools/winver/src/StdAfx.cpp
new file mode 100644
index 0000000..a7169bc
--- /dev/null
+++ b/jdk/make/tools/winver/src/StdAfx.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+// stdafx.cpp : source file that includes just the standard includes
+// getver.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
diff --git a/jdk/make/tools/winver/src/StdAfx.h b/jdk/make/tools/winver/src/StdAfx.h
new file mode 100644
index 0000000..3e94079
--- /dev/null
+++ b/jdk/make/tools/winver/src/StdAfx.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__C592D6C3_027D_11D5_8DFB_080020C19238__INCLUDED_)
+#define AFX_STDAFX_H__C592D6C3_027D_11D5_8DFB_080020C19238__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
+
+#include <stdio.h>
+
+// TODO: reference additional headers your program requires here
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__C592D6C3_027D_11D5_8DFB_080020C19238__INCLUDED_)
diff --git a/jdk/make/tools/winver/src/winver.cpp b/jdk/make/tools/winver/src/winver.cpp
new file mode 100644
index 0000000..6497b9e
--- /dev/null
+++ b/jdk/make/tools/winver/src/winver.cpp
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+// getver.cpp : Defines the entry point for the console application.
+//
+
+#include "stdafx.h"
+#include <windows.h>
+
+int main(int argc, char* argv[])
+{
+ OSVERSIONINFO verInfo;
+
+ memset(&verInfo,0,sizeof(verInfo));
+ verInfo.dwOSVersionInfoSize = sizeof(verInfo);
+
+ if (GetVersionEx(&verInfo))
+ {
+ printf("%d %d %s",verInfo.dwMajorVersion,verInfo.dwMinorVersion,verInfo.szCSDVersion);
+ }
+ else
+ {
+ printf("No version info available");
+ }
+
+ return 0;
+}